SQL语言的分类(DQL、DML、DDL、DCL的概念与区别)

SQL (Structure Query Language)数据库的核心语言

SQL语言的分类(DQL、DML、DDL、DCL的概念与区别)

DQL (Data Query Language)数据查询语言:

数据查询语言DQL基本结构是由SELECT(select)子句,FROM(from)子句,WHERE(where)
子句组成的查询块:
SELECT <字段名表>
FROM <表或视图名>
WHERE <查询条件>

SELECT 列名称 FROM 表名称

 

DML (Data Manipulation Language)数据操纵语言:

数据操纵语言DML主要有三种形式:
1) 插入:INSERT(insert)
2) 更新:UPDATE(update)
3) 删除:DELETE(delete)

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

DELETE FROM 表名称 WHERE 列名称 = 值

 

DCL (Data Control Language)数据控制语言:

数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
1.GRANT:授权。
2.ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
回滚---ROLLBACK
回滚命令使数据库状态回到上次最后提交的状态。其格式为:
SQL>ROLLBACK;
3.COMMIT [WORK]:提交。
        在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。


(1) 显式提交
用COMMIT命令直接完成的提交为显式提交。其格式为:
SQL>COMMIT;


(2) 隐式提交
用SQL命令间接完成的提交为隐式提交。这些命令是:
ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。


(3) 自动提交
若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,系统将自动进行提交,这就是自动提交。其格式为:
SQL>SET AUTOCOMMIT ON;

 

DDL (Data Definition Language)数据定义语言:

  1. CREATE - to create objects in the database   创建
  2. ALTER - alters the structure of the database   修改
  3. DROP - delete objects from the database   删除
  4. TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed
  5. COMMENT - add comments to the data dictionary 注释

TRUNCATE TABLE [Table Name]。
下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:
  TRUNCATE table 表名 速度快,而且效率高,因为:
  TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
  DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
  TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
  对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能**触发器。
  TRUNCATE TABLE 不能用于参与了索引视图的表。

DDL操作是隐性提交的!不能rollback!