上一篇文章主要介绍了DDL,主要是对数据库 、数据表、以及表中字段的修改等等。今天我要介绍的是DCL操作,主要是对数据表进行增、删、改、查等操作。对应的关键字为insert 、delete、update、select,所以不要和DDL混淆。
1、INSERT(插入操作)
insert是对已有的数据表中添加数据,基本的语法如下:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
VALUES ({expr | DEFAULT},...),(...),...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name
SET col_name={expr | DEFAULT}, ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
或:
INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE]
[INTO] tbl_name [(col_name,...)]
SELECT ...
[ ON DUPLICATE KEY UPDATE col_name=expr, ... ]
其中insert…values和insert…set这两种方式是插入已经存在的数据,而insert…select是从其他表中选取的行作为数据。实际中常用插入语句为insert…values。
下面则举例向上一篇创建的数据库student中添加数据。
insert into (id,name,birthday,age,resume) values
(1,bob,2010-1-1,12.0,null);
也可以做批量插入数据:
insert into student values
(2,'ss','2015-09-01',10.0,NULL),
(3,'pp','2015-09-01',11.0,NULL),
(4,'lee','2015-09-01',12.0,NULL);
在插入数据是要注意一下几点:
1. 数据表中的列名和列值顺序、数据类型、个数要一一对应。
2. 列值不要超过定义的数据范围
3. 如果添加空值,请填写null
4. 插入日期和字符串都要用‘’
2.UPDATE(修改操作)
基本语法为:
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2 ...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
update语句可以用新值更新原有表行中的各列。set子句指示要修改那些列和要给予那些值。where子句指定应更新那些行。如果没有where子句,则更新所有的行。如果指定了order by子句,则按照被指定的顺序对行进行更新。limit子句用于给定一个限定值,限制被更新的行的数目。
将student表中所有记录的age字段改成18.0:
update student set age = 18.0;
没修改之前结果如下:
修改之后的结果如下:
修改某条记录中的字段值,例如修改id=1的这条记录的age值
update student set age = 12.0 where id = 1;
修改之后的结果如下所示:
3.delete (删除操作)
删除操作的基本语法如下:
单表语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
多表语法:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
tbl_name[.*] [, tbl_name[.*] ...]
FROM table_references
[WHERE where_definition]
或:
DELETE [LOW_PRIORITY] [QUICK] [IGNORE]
FROM tbl_name[.*] [, tbl_name[.*] ...]
USING table_references
[WHERE where_definition]
tbl_name中有些行满足由where_definition给定的条件。DELETE用于删除这些行,并返回被删除的记录的数目。delete主要是删除表中记录的。如果在编写的语句中没有添加where子句,那么相当于删除表中所有的记录。下面举例说明:
删除 student表中id = 2 的这条记录
delete from student where id = 2;
删除表中所有的记录
delete from student ;
删除表中所有记录还可以使用truncate关键字,它的基本语法如下
TRUNCATE [TABLE] tbl_name
delete 和 truncate的区别为:
DELETE 删除表中的数据,表结构还在;删除后的数据可以找回
TRUNCATE 删除是把表直接DROP掉,然后再创建一个同样的新表。
删除的数据不能找回。执行速度比DELETE快。