SQL语言学习笔记(4)DML(Data Manipulation Language):数据操作语言

前言

数据库通过插入、更新和删除等方式来改变表中的记录。

  • 插入数据是向表中插入新的记录,通过insert语句来实现。
  • 更新数据是改变表中已经存在的数据,使用update语句来实现。
  • 删除数据是删除表中不再使用的数据,通过delete语句来实现。

1 插入数据

1.1 为表的所有字段插入数据

1.1.1 INSERT语句中不指定具体的字段名

在MySQL中,可以通过不指定字段名的方式为表插入记录。其基本语法形式如下:

INSERT INTO 表名 VALUES (值1,值2,...,值n);

其中,”表名“参数指定记录插入到哪个表中;“值n”参数表示要插入的数据。“值1”到“值n”分别对应着表中的每个字段。表中定义了几个字段,INSERT语句中就应该对应有几个值。插入的顺序与表中字段的顺序相同。而且,取值的数据类型要与表中对应字段的数据类型一致。

下面是给stu表格插入数据,stu表包含4个字段。那么INSERT 语句中的值也应该是4个。INSERT 语句如下:

INSERT INTO stu VALUES('s_1002', 'liSi', 32, 'female');

1.1.2 INSERT语句中列出所有字段

INSERT语句中可以列出表的所有字段,为这些字段来插入数据。其基本语法形式如下:

INSERT INTO 表名(属性1,属性2,...,属性n)
VALUES(值1,值2,...,值n);

其中,“属性n”参数表示表中的字段名称,此处必须列出表的所有字段的名称;“值n”参数表示每个字段的值,每个值与相应的字段对应。

下面向stu表中插入一条新记录。INSERT语句如下:

INSERT INTO stu(sid, sname,age,gender) VALUES('s_1001', 'zhangSan', 23, 'male');

1.2 为表的指定字段插入数据

基本语法形式如下:

INSERT INTO 表名(属性1,属性2,...,属性m)
VALUES(值1,值2,...,值m);

其中,“属性m”参数表示表中的字段名称,此处指定表的部分字段的名称;“值m”参数表示指定字段的值,每个值与相应的字段对应。

下面向stu表的sid和sname这2个字段插入数据。INSERT语句的代码如下:

INSERT INTO stu(sid, sname) VALUES('s_1001', 'zhangSan');

1.3 同时插入多条记录

同时插入多条记录,是指一个insert语句插入多条记录。当用户需要插入好几条记录,用户可以使用上面两个小节中的方法逐条插入记录。但是,每次都要写一个新的insert语句。这样比较麻烦。MySQL中,一个insert语句可以同时插入多条记录。其基本语法形式如下:

INSERT INTO 表名[(属性列表)]
VALUES(取值列表1),(取值列表2)
...
(取值列表n);

其中,“表名”参数指明向哪个表中插入数据:“属性列表”参数是可选参数,指定哪些字段插入数据,没有指定字段时向所有字段插入数据;“取值列表n”参数表示要插入的记录,每条记录之间用逗号隔开。

下面向Info表中插入3条新记录。INSERT语句的代码如下:

INSERT INTO Info (id,Cost,city)  
VALUES (1,200, 'Pune'), (2, 150,'USA'), (3,345, 'France');

1.4 将查询结果插入到表中

INSERT语句可以将一个表中查询出来的数据插入到另一个表中。这样,可以方便不同表之间进行数据交换。其基本语法形式如下:

INSERT INTO 表名1 (属性列表1)
SELECT 属性列表2 FROM 表名2 WHERE 条件表达式;

下面将product表中所有数据查询出来,然后插入到medicine表中。语句如下:

INSERT INTO medicine
SELECT * FROM product;

2 更新数据

更新数据是更新表中已经存在的记录。通过这种方式可以改变表中已经存在的数据。其基本语法形式如下:

UPDATE 表名 SET 列名1=值1,…,列名n=值n [WHERE 条件];

举例:

UPDATE stu SET sname=’zhangSanSan’, age=’32’, gender=’female’ WHERE sid=’s_1001’;
UPDATE stu SET sname=’liSi’, age=’20’WHERE age>50 AND gender=’male’;
UPDATE stu SET sname=’wangWu’, age=’30’WHERE age>60 OR gender=’female’;
UPDATE stu SET gender=’female’WHERE gender IS NULL
UPDATE stu SET age=age+1 WHERE sname=’zhaoLiu’;

3 删除数据

删除数据是删除表中已经存在的记录。通过这种方式可以删除表中不再使用的记录。例如,学生表中某个学生退学了,这就需要从学生表中删除该同学的信息。

MySQL中,通过DELETE语句来删除数据。MySQL中,DELETE语句的基本语法形式如下:

DELETE FROM 表名 [WHERE 条件表达式];

语法2:

TRUNCATE TABLE 表名;

两者之间的区别: 虽然 TRUNCATE 和 DELETE 都可以删除表的所有记录,但有原理不同。DELETE的效率没有 TRUNCATE 高! TRUNCATE 其实属性 DDL 语句,因为它是先 DROP TABLE,再 CREATE TABLE。 而且TRUNCATE删除的记录是无法回滚的,但DELETE删除的记录是可以回滚的(回滚是事务的知识!)。

下面删除product表中id值为1001的记录。语句如下:

DELETE FROM product WHERE id=1001;
消息盒子

# 暂无消息 #

只显示最新10条未读和已读信息