SQL语句分为四类:
- DQL(查询语言):select
- DML(操纵语言):insert/update/delete
- DDL(定义语言):create/alter/drop table/view/index
用于创建数据库中各种对象,表、视图、索引、同义词、聚簇等
所需权限
- 需要排它权限:
create/alter/drop/purge
rename
truncate - 不需要排它权限
grant/revoke:授予及收回权限、角色
analyse:分析索引、表、簇信息
comment:为表、视图、字段等创建注释
- 需要排它权限:
- DCL(控制语言):rollback/commit
用于授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的事件和效果
insert 语句
- insert into tableA(column1, column2) values(‘value1’, ‘value2’)
- insert into tableA(column1, column2) select column3, column4 from tableB
- select * into tableA from tableB where tableb.id = 1
update 语句
- update … from …
update audio_archive set employee=b.employee from audio_terminal b where audio_archive.term_id=b.id and employee != b.employee - truncate tableA
delete 语句(postgre使用)
- delete from tableA using tableB where tableA.id = tableB.id
limit语句
- select * from tableA limit 5 offset 10 显示结果从第11行开始,显示5行
create table 语句
- CREATE TABLE “tasks_bulletin” (
“digest” varchar(40) NOT NULL,
“filename” varchar(40) NOT NULL,
“filepath” varchar(30),
“createtime” DATETIME,
“deleted” integer,
“download” integer
); - alter table core_audiofile add column operator varchar(40);
- alter table core_audiofile drop column operator;
- drop table core_audiofile
- alter table student rename to teacher
视图
- create view v_test as select * from tableA
- drop view v_test
存储过程
存储过程简单来说,就是为以后的使用而保存的一条或多条sql语句的集合。可将其视为批文件,虽然他们的作用并不限于批处理。
- 好处 简单、安全、高效
事务处理
定义
事务处理用来维护数据库的完整性,它保证成批的sql语句要么完全执行,要么全不执行。
1. 事务transaction:指一组sql语句
2. 回退rollback:撤销指定sql语句的过程
3. 提交commit:将未存储的sql语句结果写入数据库
4. 保留点savepoint:事务处理中设置的临时占位符,可以对它发布回退(与回退整个事务处理不同)
- 事务处理可用来管理insert, update, delete语句,不能用于create和drop语句
控制事务处理
处理事务处理的关键是将sql语句组分解为逻辑块,并明确规定数据应该回退,合适不应该回退。
- 声明(postgre)
BEGIN
...
- 使用rollback
delete from orders;
rollback;
在此例子中,执行delete操作,然后使用rollback撤销。由此可说明,在事务处理块中,delete,update,insert操作并不是最终的结果。
- 使用commit(SQL Server)
BEGIN TRANSACTION
DELETE OrderItems WHERE order_num=12345
DELETE Orders WHERE order_num = 12345
COMMIT TRANSACTION
一般的sql语句都是隐式提交,但在事务处理中提交不会隐式进行。
在这个例子中,只有两个delete语句都执行,才会提交。
- 使用保留点
复杂的事务处理需要设置多个保留点,这样回退的时候可方便回退。