数据操作语句(Data Manipulation Language,DML)是使用户能够查询数据库及操作已有数据库中数据的语句,其中包括数据库插入语句、数据更改语句、数据删除语句和数据查询语句等。本节将介绍这些内容。
向已创建好的数据表中插入记录,可以一次插入一条记录,也可以一次插入多条记录。插入表中的记录中的值必须符合各个字段值数据类型及相应的约束。INSERT语句基本语法格式如下:
INSERT INTO table_name ( column_list ) VALUES (value_list);
主要参数介绍如下:
提示
使用该语句时字段列和数据值的数量必须相同,value_list中的这些值可以是DEFAULT、NULL或者是表达式。DEFAULT表示插入该列在定义时的默认值;NULL表示插入空值;表达式将插入表达式计算之后的结果。
在演示插入操作之前,将数据库的名称company重新修改为test_db,语句如下:
ALTER DATABASE company MODIFY NAME= test_db
准备一张数据表,这里定义名称为teacher的表,可以在test_db数据库中创建该数据表,创建表的语句如下:
CREATE TABLE teacher ( id INT NOT NULL PRIMARY KEY, name VARCHAR(20) NOT NULL , birthday DATE , sex VARCHAR(4) , cellphone VARCHAR(18) );
执行操作后刷新表节点,即可看到新添加的teacher表,如图4-2所示。
【例4.8】向teacher表中插入一条新记录,输入语句如下。
INSERT INTO teacher VALUES(1, '张三', '1978-02-14', '男', '0018611') --插入一条记录 SELECT * FROM teacher
执行语句后,结果如图4-3所示。
插入操作成功,可以从teacher表中查询出一条记录。
图4-2 添加teacher表
图4-3 向teacher表中插入一条记录
【例4.9】向teacher表中插入多条新记录,T-SQL代码如下。
SELECT * FROM teacher INSERT INTO teacher VALUES (2, '李四', '1978-11-21','女', '0018624') , (3, '王五','1976-12-05','男', '0018678') , (4, '赵纤','1980-6-5','女', '0018699') ; SELECT * FROM teacher
执行结果如图4-4所示。
图4-4 向teacher表中插入多条记录
对比插入前后的查询结果,可以看到现在表中已经多了3条记录,插入操作成功。
表中有数据之后,接下来可以对数据进行更新操作。SQL Server使用UPDATE语句更新表中的记录,可以更新特定的行或者同时更新所有的行。UPDATE语句的基本语法结构如下:
UPDATE table_name SET column_name1 = value1,column_name2=value2,……,column_nameN=valueN WHERE search_condition
column_name1,column_name2,……,column_nameN为指定更新的字段的名称;value1,value2,……,valueN为相对应的指定字段的更新值;condition指定更新的记录需要满足的条件。更新多个列时,每个“列=值”对之间用逗号隔开,最后一列之后不需要逗号。
【例4.10】在teacher表中,更新id值为2的记录,将birthday字段值改为‘1980-8-8’,将cellphone字段值改为‘0018600’,输入语句如下。
SELECT * FROM teacher WHERE id =1; UPDATE teacher SET birthday = '1980-8-8',cellphone='0018600' WHERE id = 1; SELECT * FROM teacher WHERE id =1;
执行前后的结果如图4-5所示。对比前后的查询结果,可以看到更新指定记录成功。
【例4.11】在teacher表中,将所有老师的电话都修改为‘01008611’,输入语句如下。
SELECT * FROM teacher; UPDATE teacher SET cellphone='01008611'; SELECT * FROM teacher;
代码执行后的结果如图4-6所示。
图4-5 指定条件修改记录
图4-6 同时修改teacher表中所有记录的cellphone字段
由结果可以看到,现在表中所有记录的cellphone字段都有相同的值,修改操作成功。
数据的删除将删除表的部分或全部记录,删除时可以指定删除条件,从而删除一条或多条记录;如果不指定删除条件,DELETE语句将删除表中所有的记录,清空数据表。DELETE语句的基本语法格式如下:
DELETE FROM table_name [WHERE condition]
主要参数介绍如下:
【例4.12】删除teacher表中id等于1的记录,输入语句如下。
DELETE FROM teacher WHERE id=1; SELECT * FROM teacher WHERE id=1;
执行结果如图4-7所示。
图4-7 按指定条件删除一条记录
由结果可以看到,代码执行之后,SELECT语句的查询结果为空,删除记录成功。
使用不带WHERE子句的DELETE语句,可以删除表中的所有记录。
【例4.13】删除teacher表中所有记录,输入语句如下。
SELECT * FROM teacher; DELETE FROM teacher; SELECT * FROM teacher;
执行结果如图4-8所示。
图4-8 删除表中所有记录
对比删除前后的查询结果,可以看到,执行DELETE语句之后,表中的记录被全部删除,所以第二条SELECT语句的查询结果为空。
对于数据库管理系统来说,数据查询是执行频率最高的操作,是数据库中非常重要的部分。T-SQL中使用SELECT语句进行数据查询,SELECT语句的基本语法结构如下:
SELECT [ALL | DISTINCT] {* | <字段列表>} FROM table_name | view_name [WHERE <condition>] [GROUP BY <字段名>] [HAVING <expression> ] [ORDER BY <字段名>] [ASC | DESC]
主要参数介绍如下:
为了演示本节介绍的内容,可以在指定的数据库中建立下面的数据表,并插入记录数据。
执行语句后,查看stu_info表的数据,结果如图4-9所示。
图4-9 创建stu_info表
【例4.14】查询stu_info表中的所有学生信息,输入语句如下。
SELECT * FROM stu_info;
执行结果如图4-10所示。可以看到,使用星号(*)通配符时,将返回所有列,列按照定义表时的顺序显示。
有时候,并不需要数据表中的所有字段值,此时可以指定需要查询的字段名称,这样不但显示的结果更清晰,而且能提高查询的效率。
【例4.15】查询stu_info数据表中学生的姓名和成绩,输入语句如下。
SELECT s_name, s_score FROM stu_info;
代码执行结果如图4-11所示。
图4-10 查询stu_info表中所有学生信息
图4-11 查询stu_info数据表中学生的姓名和成绩字段