一、 select 语句的应用
- 1. 多表查询
允许from后面跟多张表
select A.name from A,B where A.id = B.id;
- 2. 外连接(left / right join on)
在多表查询的实际应用中,我们可能需要一个表的全部记录,这是需要用外连接,如:列出全部学生信息,即使没有匹配到专业(即专业为null)
select stu.info from stu a left join pro b on a.pro_id = b.pro_id;
- 3. 子查询
将子查询或 in 或 exists 当成where条件的一部分,这样的查询成为子查询
select teacher.id from teacher where pro_id in ( select pro_id from pro );
select fee_id from 收费项目名称表 where fee_id in ( select fee_id from 收费项目目录表 );
- 4. 嵌套查询
select 语句嵌入 select 语句,称为嵌套查询,注意:子查询是在where条件语句里,而嵌套查询是在from之后,示例:
select rownum as 序号,药品名称,实际数量 from
(select A.名称 as 药品名称, SUM( nvl( b.实际数量, 0 ) ) as 实际数量 from 收费项目目录 A, 药品库存 B where A.ID = B.药品ID group by A.名称)
order by 实际数量;
- 5. 分组查询
SQL无法把正常的列和汇总函数结合在一起,这时就需要 group by 子句,它可以对 select 语句的结果进行分组后再应用汇总函数。having 子句允许将汇总函数作为条件,使用在查询语句中
select fee_id, sum(fee) from 费用记录表 where rownum < 7 group by name having sum(fee) > 5;
二、 DML(数据操控语句)
- 1. 插入:Insert
insert into 表名 (column1, column2, ...) values (value1, value2, ...)- 2. 修改:update
update 表名 set column1=value1, column2=value2, ... where 条件;- 3. 删除:delete
delect from 表名 where 条件;- 4. 删除:truncate
区别于delete,truncate会直接释放表空间
注:
DML语句均是事务操控语句
执行后须 commit 才能正式生效
若想撤回操作,命令rollback即可复原
三、 DDL(数据定义语句)
- 1. 创建表:Create
create 表名 (
id int(10) primary key auto_increment,
name varchar(16) not null,
pwd varchar(16) not null
)- 2. 修改表:alter
rename 表名1 to 表名2;
alter table 表名 add 字段名字段描述;
alter table 表名 modify 字段名字段描述;
例:alter table people add address varchar(50);- 3. 删除:drop
drop table 表名;
四、 DCL(数据控制语句)
- 1. 数据对象权限
all on
alter on
select on
update on
insert on
delete on- 2. 系统权限
CONNECT:连接权限
RESOURCE:系统资源权限
DBA(Database Administrator):数据库管理员