sql语句的编程手册(1)

it2025-11-19  10

一、SQL PLUS  1 引言  SQL命令  以下17个是作为语句开头的关键字:  alter  drop  revoke  audit  grant  rollback*  commit*  insert  select  comment  lock  update  create  noaudit  validate  delete  rename  这些命令必须以“;”结尾  带*命令句尾不必加分号,并且不存入SQL缓存区。  SQL中没有的SQL*PLUS命令  这些命令不存入SQL缓存区  @  define  pause  #  del  quit  $  describe  remark  /  disconnect  run  accept  document  save  append  edit  set  break  exit  show  btitle  get  spool  change  help  sqlplus  clear  host  start  column  input  timing  compute  list  ttitle  connect  newpage  undefine  copy  ---------  2 数据库查询  数据字典  TAB 用户创建的所有基表、视图和同义词清单  DTAB 构成数据字典的所有表  COL 用户创建的基表的所有列定义的清单  CATALOG 用户可存取的所有基表清单  select * from tab;  describe命令 描述基表的结构信息  describe dept  select *  from emp;  select empno,ename,job  from emp;  select * from dept  order by deptno desc;  逻辑运算符  = !=或<> > >= < <=  in  between value1 and value2  like  %  _  in null  not  no in,is not null  谓词in和not in  有哪些职员和分析员  select ename,job  from emp  where job in ('clerk','analyst');  select ename,job  from emp  where job not in ('clerk','analyst');  谓词between和not between  哪些雇员的工资在2000和3000之间  select ename,job,sal from emp  where sal between 2000 and 3000;  select ename,job,sal from emp  where sal not between 2000 and 3000;  谓词like,not like  select ename,deptno from emp  where ename like 'S%';  (以字母S开头)  select ename,deptno from emp  where ename like '%K';  (以K结尾)  select ename,deptno from emp  where ename like 'W___';  (以W开头,后面仅有三个字母)  select ename,job from emp  where job not like 'sales%';  (哪些雇员的工种名不以sales开头)  谓词is null,is not null  没有奖金的雇员(即commision为null)  select ename,job from emp  where comm is null;  select ename,job from emp  where comm is not null;  多条件查询  select ename,job  from emp  where deptno=20  and job!='clerk';  表达式  + - * /  算术表达式  选择奖金高于其工资的5%的雇员  select ename,sal,comm,comm/sal from emp  where comm>.05*sal    order by comm/sal desc;  日期型数据的运算  add two days to 6-Mar-87  6-Mar-87 + 2 = 8-Mar-87  add two hours to 6-Mar-87  6-Mar-87 + 2/24 = 6-Mar-87 and 2hrs  add 15 seconds to 6-Mar-87  6-Mar-87 + 15/(24*60*60) = 6-Mar-87 and 15 secs  列名的别名  select ename employee from emp    where deptno=10;  (别名:employee)  select ename,sal,comm,comm/sal "C/S RATIO" from emp    where comm>.05*sal    order by comm/sal desc;  SQL命令的编辑  list or l 显示缓冲区的内容  list 4 显示当前SQL命令的第4行,并把第4行作为当前行,在该行号后面有个*。  change or c 用新的内容替换原来在一行中第一次出现内容  SQL>c/(...)/('analyst')/  input or i 增加一行或多行  append or a 在一行后追加内容  del  删除当前行 删除SQL缓冲区中的当前行  run  显示并运行SQL缓冲区中的命令  /  运行SQL缓冲区中的命令  edit  把SQL缓冲区中的命令写到操作系统下的文本文件,  并调用操作系统提供的编辑器执行修改。  -------------  22 数据操纵  数据的插入  insert into dept    values (10,'accounting','new york');  insert into dept (dname,deptno)    values ('accounting',10);  从其它表中选择插入数据  insert into emp (empno,ename,deptno)  select id,name,department  from old_emp  where department in(10,20,30,40);  使用参数  insert into dept    values(&deptno,&dname,&loc);  执行时,SQL/PLUS对每个参数将有提示用户输入  参数对应日期型或字符型数据时,可在参数上加引号,输入时就可不用引号  insert into dept    values(&deptno,'&dname','&loc');  插入空值(NULL)  insert into dept    values(50,'education',null);  插入日期型数据  日期型数据缺省格式:DD-MON-YY  insert into emp  (empno,ename,hiredate)  values(7963,'stone','07-APR-87');  系统时间:SYSDATE  insert into emp  (empno,ename,hiredate)  values(7600,'kohn',SYSDATE);  数据更新  update emp  set job='manager'  where ename='martin';  update emp  set job='market rep'  where ename='salesman';  update emp  set deptno=40,job='market rep'  where job='salesman';  数据删除  delete emp  where empno=765;  更新的提交  commit  自动提交方式  set autocommit on  如果状态设为开,则使用inesrt,update,delete会立即提交。  更新取消  rollback  两次连续成功的commit之间的操作,称为一个事务  ---------------  4  创建基表、视图  创建基表  create table dept  (deptno number(2),  dname char(14),  loc char(13));  数据字典会自动更新。  一个基表最多254列。  表名列名命名规则:  限制  第一个字符必须是字母,后面可任意(包括 $ # _ 但不能是逗号)。  名字不得超过30个字符。  唯一  某一用户的基表名必须唯一,不能是ORACLE的保留字,同一基表的列名互不相同。  使用双引号  如果表名用双引号括起来,则可不满足上述规则;  只有使用双引号,才能区别大、小写;  命名时使用了双引号,在以后的操作也必须使用双引号。  数据类型:  char(n)    (不得超过240字符)  number(n,d)  date  long    (最多65536字符)  raw    (二进制原始数据)  空值处理  有时要求列值不能为空  create table dept  (deptno number(2) not null,  dname char(14),  loc char(13));  在基表中增加一列  alter table dept  add (headcnt number(3));  修改已有列属性  alter table dept  modify dname char(20);  注:只有当某列所有值都为空时,才能减小其列值宽度。  只有当某列所有值都为空时,才能改变其列值类型。  只有当某列所有值都为不空时,才能定义该列为not null。  例:  alter table dept modify (loc char(12));  alter table dept modify loc char(12);  alter table dept modify (dname char(13),loc char(12));  创建视图  create view managers as  select ename,job,sal  from emp  where job='manager';  为视图列名取别名  create view mydept  (person,title,salary)  as select ename,job,sal  from emp  where deptno=10;  with check option选项  使用with check option,保证当对视图插入或更新数据时,  该数据必须满足视图定义中select命令所指定的条件。  create view dept20 as  select ename,job,sal,deptno  from emp  where deptno=20  with check option;  在做下述操作时,会发生错误  update dept20  set deptno=30  where ename='ward';  基表、视图的拷贝  create table emp2  as select * from emp;  基表、视图的删除  drop table 表名  drop view 视图名 

转载于:https://www.cnblogs.com/zwl12549/archive/2007/01/24/629241.html

相关资源:数据结构—成绩单生成器
最新回复(0)