Sql语句学习笔记
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
先登陆服务器:telnet 192.168.0.23 公帐号:openlab-open123 tarena-tarena 再进入SQL:sqlplus sd0807/sd0807 帐号:sd0807-密码同样公帐号:openlab-open123
设置环境变量:
ORACLE_SID=oral10g\ --变局部变量
export ORACLE_SID --变全局变量
unset ORACLE_SID --卸载环境变量
ORACLE_HOME=... --安装路径;直接用一句语句也可以,如下
export ORACLE_HOME=/oracledata/.../bin:
一、注意事项:
大小写不敏感,即不区分大小写。提倡关键字大写,便于阅读和调式。
“!”在SQL环境下执行Unix命令。
SQL语句是由简单的英语单词构成;这些英语单词称为关键字/保留字,不做它用。SQL 由多个关键字构成。
SQL语句由子句构成,有些子句是必须的,有些是可选的。
在处理SQL语句时,其中所有的空格都被忽略(空格只用来分开单词,连续多个空格当一个用)。
SQL语句可以在一行上写出,建议多行写出,便于阅读和调试。
多条SQL语句必须以分号分隔。多数DBMS不需要在单条SQL语句后加分号,但特定的DBMS可能必须在单条SQL语句后加分号。
SQL语句的最后一句要以“;”号结束
二、写子句顺序
Select column,group_function
From table
[Where condition]
[Group by group_by_expression]
[Having group_condition]
……
[Order by column]; --最后
三、常用简单语句:
clear screen:清屏
edit:编辑刚才的一句。
desc/describe:(列出所有列名称)
用法:DESCRIBE [schema.]object[@db_link]
dual:亚表,临时用。如:desc dual;/from dual;
rollback:回溯,回溯到上次操作前的状态,把这次事务操作作废,只有一次(DDL和DCL 语句会自动提交,不能回溯)。
可以用commit语句提交,这样就回溯不回了。
set pause on\off :设置分屏(设置不分屏)
set pause "please put an enter key" 且set pause on:设置带有提示的分屏
oerr ora 904 :查看错误
set head off :去掉表头
set feed off :去掉表尾
保存在oracle数据库中的所有操作细节:
spool oracleday01.txt :开始记录
spool off :开始保存细节
四、SELECT语句:选择操作、投影操作。
select:从一个或多个表中检索一个或多个数据列。包含信息:想选择什么表,从什么地方选择。必须要有From子句。(最常用)
当从多张表里查询的时候,会产生笛卡尔积;可用条件过滤它。
当两个表有相同字段时必须加前缀,列名前需加表名和“.”,如“s_emp.id”。
1、用法:SELECT columns,prod2,prod3<列> FROM Table1,table2<表名> 分号结束
如:select id from s_emp;
select last_name,name from s_emp,s_dept where s_emp.dept_id=s_dept.id;--列表每人所在部门
SELECT * FROM Products; --检索所有列。
数据太多时,最好别使用上句,会使DBMS降低检索和应用程序的性能。(*通配符)
2、对数据类型的列可进行运算(如加减乘除)。
3、对列起别名:有直接起别名,加AS起别名,用双引号起别名等三种方法
(单引号,引起字符串;双引号,引起别名。起别名有符号,或者区分大小写时,必须用双引号)
多表查询时,可给表起别名。(给列起别名,列<空格>列别名;给表起别名,表<空格>表别名;)。
如:Select first_name EMPLOYEES, 12*(salary+100) AS MONEY, manager_id "ID1" From s_emp E;
4、字段的拼接,可用双竖线(双竖线只能用于select语句里)。不同的DBMS可能使用不同的操作符;拼接的字段同样可以起别名。
如:Select first_name ||' '|| last_name || ', '|| title "Employees" From s_emp;
排他锁:Select id,salary From s_emp where id=1 For Update;
可以阻止他人并发的修改,直到你解锁。
如果已有锁则自动退出:Select id,salary From s_emp where id=1 For Update NoWait;
FOR UPDATE :可以再加OF 精确到某格。如:... For Update OF salary ...
注意要解锁。
五、ORDER BY 子句,排序
Order by:按某排序列表(默认升序asc,由低到高;可加desc,改成降序由高到低) 检索返回数据的顺序没有特殊意义,为了明确地排序用SELECT 语句检索出的数据,可使用ORDER BY 子句。
ORDER BY 子句取一个或多个列的名字。
对空值,按无穷大处理(升序中,空值排最后;降序中排最前)。
1、用法:Select prod_id,prod_price,prod_name From Products Order By