一、数据定义语言DDL(Data Ddefinition Language)
SQL数据定义语言主要用于定义逻辑结构,包括定义表,视图和索引
1、定义
#定义表
create table <表名>
#定义视图
create view <视图名>
#定义索引
create[unque][cluster] index <索引名> on
#unique选项表示此索引的每一个索引值不能重复,对应唯一的数据记录。
#cluster 选项表示要建立的索引是聚簇索引。
备注:
视图:从一个或者几个基表或者视图导出的表(结果集),是一个逻辑上的虚表。数据库中只存放视图的定义,不存放视图的数据。所以基表的数据变化,视图的数据也会跟着变化。
聚簇索引:指索引项的顺序与表中记录的物理顺序相一致的索引组织。聚簇索引是将索引和表记录一起存放,一个基表只能建立一个聚簇索引。建立聚簇索引后,更新列数据时会导致表记录的物理顺序的变更,代价较高,经常更新的列不宜建立索引
2、修改
alter table 语句
alter table 语句
alter table<表名>
[add <新列名><数据类型>[完整性约束]]
[drop <完整性约束名>]
[modify <列名><数据类型>];
#<表名>表示所要修改的基表,add子句用于增加新列和完整性约束条件,drop子句用于三处指定的完整性约束条件,modify子句用于修改原有的列定义,修改列名和数据类型
3、删除
#删除表
drop table <表名>;
#删除表后,表中的数据,表上的索引都将被删除。在oracle中,删除表后,建立在表上的视图依然在数据字典中,但是用户引用会报错。
#删除视图
drop view <视图名>;
#视图是定义在了数据字典中的。
#删除索引:
drop index<索引名>
索引由系统进行维护,如果数据频繁的删改,系统维护索引的时间就会增加,此时可以删除不必要的索引。索引删除后,系统会从数据字典中清除该索引的描述。
二、数据查询语言DQL(Data Query Language)
SQL语句的数据查询语句主要用于对数据库的各种数据对象进行查询
具体语法如下:
select [distinct]
from
join(left/right/inner join)
on
where
group by
having
order by
但是执行顺序则是:
from
on
join
where
group by
having
select
distinct
order by
SQL 查询语句的解析顺序:
1、from子句组装来自不同数据源的数据;
2、where子句基于指定的条件对记录行进行筛选;
3、group by子句将数据划分为多个分组;
4、使用having子句筛选分组;
5、select 的字段;
6、使用order by对结果集进行排序。
三、数据操控语言DML(Data Manipulation Language)
SQL的数据操控语言,用于改变数据库中的数据,包括插入,删除,修改
1、 插入
insert语句想数据表中插入数据,可以一次插入一条数据,也可以根据SELECT查询子句的结果集批量插入指定数据表。
一般的insert语句:
insert into[user] table [@db_link] [(column)]
VALUES(express,[express1])
#table:表名
#db_link:数据库链接名
#column:列名【字段】
#values:插入的值
批量插入:用select语句替换values语句,由select语句提供添加的数据
INSERT INTO [user]table [@db_link] [(column)] subquery
Subquery是子查询语句,可以是任何合法的select语句,其中所选列的个数和类型应该与前边的column相对应。SELECT返回的语句必须满足表中列的约束。
2、 删除
从数据库中删除记录用delete语句。
delete from table_name
[where condition]
此处不通过where加限定条件,则会删除表中的全部记录
3、 truncate语句
使用truncate删除表中的所有数据,比delete快。但是truncate语句不能被撤销
4、 修改
使用update语句,可以修改表中一列或者多列的值,使用where子句可以限定被修改的行。
update table_name
set{column1=express1[,column2=express2]
(column1[,column2])=(selectquery)}
[WHEREcondition]
update子句用于指定要修改的表名称。需要后跟一个或多个要修改的表名称,这部分是必不可少的。
set子句用于设置要更新的列以及各列的新值。需要后跟一个或多个要修改的表列。
where后跟更新限定条件。
四、 数据控制功能DCL(Data Control Language)
数据控制指数据库的安全性和完整性控制
SQL的数据控制语言,对表和视图的授权,完整性规则的描述以及事务开始和结束等控制语句。
SQL通过对数据库用户的授权和取消授权命令来实现相关数据的存取控制,保证数据库的安全性,还提供了数据完整性约束的定义和检查机制,保证数据库的完整性。
通过grant和revoke语句将授权的决定告知系统,并将授权的结果存入数据字典
1、授权
SQL用grant语句向用户授予操作权限
grant <权限>[,权限]………
[on <对象类型><对象名>]
to <用户>[,<用户>]……
[with grantoption]
[with adminoption]
对属性列和视图权限:
select(查询),insert(插入),update(修改),delete(删除),四种权限的总包(all privileges)。
对表的权限:
查询,插入,修改,删除,修改表(alter),建立索引(index)以及这六种权限的总和。(all privileges)
对数据库:
createTab(建表)
接收权限的可以是一个或多个具体用户,也可以是全体用户(public)
2、回收
收回权限使用revoke语句
REVOKE <权限>[,<权限>]………
[ON <对象类型><对象类>]
FROM <用户>[,<用户>]……;