Oracle之SQL重要以及易忘点
在这里只记录了个人认为重要以及容易忘的知识点。
1.sql脚本创建及运行
可利用下面命令,新建一个sql脚本文件,该脚本文件中的书写方式和在doc下一样,
SQL> edit f:\Oracle\examples\1
运行该脚本。@等同于START命令,它把脚本内容输入SQL缓冲区并执行。
SQL> @f:\Oracle\examples\1
2.SAVE
可利用SAVE命令将SQL缓冲区的SQL语句存入脚本中:
SQL> SAVE f:\Oracle\examples\2
3.INSERT
values子句中的数据一定要和相应的列一一对应,否则会出错。
SQL> insert into salary values ('张无极',1,6000,50);
4.LIKE
LIKE使用两个特殊符号进行匹配检索,%和_。前者称为通配符,后者称为位置标记符。“%”相当于DOS命令的“*”通配符,它可以代表相应位置的任意个数的任意字符。“_”相当于DOS命令的“?”通配符,它只能代表相应位置的一个字符。
SQL> select * from emp where bm like '%所';
5.符号
^= 和 <> 都相当于 != 。
6.DESC
不给出DESC(降序),则查询结果将按级别的升序排列。
7.HAVING
HAVING作用类似于WHERE,只不过WHERE针对单行,而HAVING针对统计结果。
SQL> select jb,sum(fbu) from salary group by jb having sum(fbu) >= 300;
8.ALTER TABLE
利用alter table语句增加表中的列
SQL> alter table salary add (jj number);
9.SELECT&运算操作
显示表中的一列与另一列的运算操作(-+*/):
SQL> select xm,gz-fbu from salary;
10.类型转换
TO_CHAR:将任意类型的数据转换成字符类型。
TO_NUMBER:将一个合法的数字字符串转换成数值。
TO_DATE:将适当格式的字符串转换成日期型数据。‘12-6月-04’为合法日期格式,‘12-6-04’在转换时可能出错。
SQL> SELECT TO_NUMBER('327.3') FROM DUAL;
11.从多个表中查询数据
若一个查询涉及两个或多个表,称其为连接查询。分为内连接和外连接。
内连接:合并具有同一列的两个以上的表的行,结果集中不包含一个表与另一个表不相匹配的行。例:
SQL> select e.xm,zc,zw,jb,gz from emp e,salary s where e.xm = s.xm;
其中e和s分别为emp表与salary表的别名。
外连接:合并具有同一列的两个以上的表的行,但结果集中包含一个表不与另一个表相匹配的行,无匹配行时,结果表中相应的列为空。
SQL> select emp.xm,zc,zw,jb,gz from emp,salary 2 where emp.xm = salary.xm (+);
12.视图
视图时一种“虚表”,它建立在已有表的基础之上,视图赖以建立的这些表称为基表。
1). SQL> select e.xm,zc,zw,jb,gz from emp e,salary s where e.xm = s.xm;
2). SQL> create or replace view esview as select e.xm,zc,zw,jb,gz from emp e,salary s where e.xm = s.xm with read only;SQL> select * from esview;
with read only只能对它执行select语句,即使不加with read only,执行insert、update、delete语句也不一定成功。显示与1)相同。
13.SQL*Plus环境设置
查看各参数的当前设置。
SQL> show all
SPOOL将中间的SQL语句及其结果存储到1.lis中。
SQL> spool f:\Oracle\examples\1.lis............SQL> spool off
控制是否显示执行SQL语句的输出结果,默认为on,即显示SQL语句的输出结果。
SQL> set termout on/off
控制执行SQL脚本时时候回送执行的SQL语句,默认为off,即不回送
SQL> set echo off/on
设置一页显示多少行及每行的长度
SQL> set pagesize 50SQL> set linesize 100