SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。下文是对这四种语言以及事务处理语言的小总结
SQL(Structed Query Language )
1.数据定义语言——DDL
- 对于数据库或者数据库的组件的结构的操作(DATA DEFINITION LANGUAGE ):
- 特点:不允许事务的回滚。
1.1 CREATE ——表的创建
语法
CREATE TABLE 表名(
字段名 数据类型 约束,
字段名 数据类型 约束
)
1.2 DROP——表的删除
DROP TABLE 表名
1.3 ALTER——更改表
1.4 TRUNCATE——截断表
-
表的截断,清空表中所有的记录。
-
语法结构:
TRUNCATE TABLE 表名 -
TRUNCATE和DELETE区别
- TRUNCATE是DDL,只能删除表中所有记录,释放存储空间, 使用ROLLBACK不可以回滚。
- DELETE是DML,可以删除指定记录,不释放存储空间,使用 ROLLBACK可以回滚。
2.数据操作语言——DML
- 数据操作语言 (Data Manipulation Language ,简称DML),主要用来实现对数据库表中的数据进行操作——增删改
- 数据操作语言主要包括如下几种:
• 增加行数据:使用INSERT语句实现
• 修改行数据:使用UPDATE语句实现
• 删除行数据:使用DELETE语句实现 - 特点:可以进行事务的回滚
2.1 INSERT 往表中插入记录
- 语法:
INSERT INTO 表名(字段列表) VALUES(值列表) - 其中:
1、字段列表,值列表两两之间用逗号隔开
2、值列表中的值,字符串和日期的常量,需要单引号括起来。
3、值的类型要与字段的数据类型相符
4、INTO可以省略
5、字段列表如果是插入整个表中的字段,可以省略,但值列表的个数与顺序要与定义的表的字段的顺序一样。
6、字段也可以写其中的几个,与后面的值的个数对应即可。
7、VALUES 关键字也可以使用VALUE,但一般用values
或见下图:
例如:
批量插入多条记录
- 使用insert语句可以一次性地向表批量插入多条记录,语法格式如下。
INSERT INTO 表名(字段名) VALUES(值列表1),(值列表2),…,(值列表n);
- 例如:
2.2 UPDATE子句修改数据库中数据
-
修改数据主要用来按照指定条件修改表中某些行的列数据。
-
修改数据使用UPDATE子句完成,语法结构如下:
UPDATE 表名 SET 字段名1=值1, 字段名2=值2 WHERE子句 -
注意:
- where子句用于限定修改的记录。如果不加where子句,默认修改该表中所有的记录。
- SET子句用来限定修改哪些列。
- 可一次修改多条记录
- 进行修改操作时要注意完整性约束错误
2.3 DELETE 语句删除表中满足条件的行记
- 删除数据主要用来按照指定条件从表中删除某些行。
- 语法
DELETE FROM 表 WHERE子句 - 例如:
a.删除选中记录
b.删除全部记录
删除记录时的同样要注意完整性约束错误
3.数据查询语言——DQL(DQL DATA QUERY LANGUAGE)
详细的DQL说明请看这篇文章:MySQL语句——数据查询语言DQL详解
- 基本SELECT语句语法 :
SELECT [DISTINCT]{*|column|expression [alias],…} FROM table where子句; - 注意:
- SELECT子句表示所需检索的数据列。
- FROM子句 表示检索的数据来自哪个表。
- 举例:
4.数据控制语言——DCL (DATA CONTROL LANGUAGE )
- GRANT
- REVOKE
5.事务处理语言——TPL (TRANSACTION PROCESS LANGUAGE )
关于TPL的详解请看这篇文章:mySql事务处TPL的小总结
-
事务处理语言:Transaction Process Language ,简称TPL, 主要用来对组成事务的DML语句的操作结果进行确认或取消。 确认也就是使DML操作生效,使用提交(COMMIT)命令实现; 取消也就是使DML操作失效,使用回滚(ROLLBACK)命令实现。
-
事务的自动提交模式
- mysql中的事务是自动提交的,即每一个sql语句后默认加COMMIT语句
- 查看mysql的事务自动提交模式:SHOW VARIABLES LIKE 'autocommit’
- 修改mysql的自动提交模式
SET AUTOCOMMIT=1 表示开启
SET AUTOCOMMIT=0 表示关闭
-
MySQL的事务处理主要有两种方法
-
用begin,rollback,commit来实现:
begin开始一个事务
rollback事务回滚
commit 事务提交 -
直接用set来改变MySQL的自动提交模式
MySQL默认是自动提交的,也就是你提交一个sql,就直接执行!可以通过set autocommit = 0 禁止自动提交set autocommit = 1 开启自动提交来实现事务的处理。
但要注意当用set autocommit = 0 的时候,以后所有的sql都将作为事务处理,直到用commit确认或 rollback结束,注意当结束这个事务的同时也开启了新的事务!按第一种方法只将当前的做为一个事务!
-
看官,如果觉得这篇文章还不错,点个赞加个关注再走呗 ^ - ^
MySql系列文章: