数据库原理数据库概论(数据库技术与应用)第9讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
所占的空间,并且这种数据变化不被记录在日志中。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
在SQL Server中,可以使用SELECT语句执行数据查询的操作。该语句使用灵活, 功能丰富,它既可以在单表上完成简单的数据查询,也可以在多表上完成复杂 的连接查询和嵌套查询。基本结构如下:
SELECT select_list [ INTO new_table ] [ FROM table_source ] [ WHERE search_condition ] [ GROUP BY group_by_expression] [ HAVING search_condition] [ ORDER BY order_expression [ ASC | DESC ] ]
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中删除数据 Leabharlann Baidu法格式:
DELETE [FROM] table_name [ WHERE search_condition ] 参数说明: table_name:要删除数据的表名称; WHERE:指定条件来限定所删除的记录。 search_condition:为要删除的记录指定需满足的条件。
【例】查询Student表中所有年龄大于19岁的学生信息。 SELECT * FROM Student WHERE year(getdate())-year(birthday)> 19
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
在WHERE子句中,还可以使用逻辑运算符(AND、OR和NOT)把若干个查询条件合并起来, 组成较复杂的查询条件。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
条件查询 条件查询包含确定条件的查询,模糊条件的查询和指定范围的查询三种。下面通过例子来 说明。
(1)确定条件的查询:使用比较运算符、列表、合并以及取反等运算方式进行的条件查询。 一般包括:=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于),!=或 <>(不等于)。 【例】查询所有计算机学院的学生学号和姓名。 SELECT studentID, studentName FROM Student WHERE speciality = '计算机'
数据库技术与应用
Part three
数据库操作
第三章
第9讲 操纵数据表中的数据
9.1 数据写入
表创建以后只是一个没有数据的空表。因此,创建表之后首先要执行的操作就 是向表中输入数据,也可以更新和删除表中的数据。 打开SQL Server Management Studio,选中需要更新数据的表,如student,单击 右键,选择“编辑前200行”,就可以打开student表,查看并修改表数据,该 窗口显示了表中已经存储的数据,数据列表的最后有一个空行。插入数据时, 将光标定位在空白行某个字段的编辑框中,就可以输入新数据。编辑完成后, 单击其他某一行,即可提交新数据。
参数说明: TOP (n ) [ PERCENT ]:指定将要更新的行数或行百分比; table_or view_name:要更新数据的表或视图的名称; SET:指定要更新的列或变量名称的列表 WHERE:指定条件来限定所更新的行。 <search_condition>:为要更新的行指定需满足的条件。
【例】查询选修了课程的学生学号。 select studentID from Grade 从查询结果中可以看到,结果集中包含了许多重复的行。这时因为默认地使用了ALL关键字。 如果想去掉重复行,可以指定DISTINCT关键字。 select distinct studentID from Grade
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中添加数据
语法格式: INSERT [ INTO ] table_or_view_name [ ( column_list ) ] { { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] ) } }
【例】查询Grade表中成绩为空的学生学号。 查询值是否为空,要使用关键字IS NULL,否定形式为IS NOT NULL。一定不能使用“= NULL” 或者“=' ' ”(等于空字符串) SELECT studentID FROM Grade WHERE grade IS NULL
第9讲 操纵数据表中的数据
序必须相同、列的数据类型必须兼容等。
INSERT INTO stu_Info SELECT studentID,studentName,sex FROM student
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生表Student中“李林”所属的学院由“计算机”改为“数学”。 UPDATE Student SET speciality = '数学' WHERE studentName = '李林'
【例】查询姓名中第二个字为“敏”字的教师信息。 SELECT * FROM Teacher WHERE teacherName LIKE '_敏%'
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
如果用户要查询的字符串本身就含有通配符,这时就要使用ESCAPE关键字,对通配符 进行转义。
【例】查询DB_Design课程的课程号和学分。 SELECT courseID, credithour FROM Course WHERE courseName LIKE 'DB\_Design' ESCAPE '\'
【例】将所有学生的选课成绩加5分。 UPDATE Grade SET grade =grade+5
【例】删除Grade 表中的所有数据。 DELETE FROM Grade 或者 DELETE Grade
【例】删除student表中姓名为“李林”的数据记录。 DELETE FROM student WHERE studentName = '李林'
【例】查询全体学生的学号、姓名及性别。 select studentID,studentName,sex from student 【例】查询学生的全部信息。 select * from student 其中“*”表示Student表的全部列名,而不必逐一列出。 还可以在SELECT子句中使用计算列(表达式)。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
【例】查询所有学生的姓名及其年龄。 select studentName, year(getdate())-year(birthday) as age from student 该语句中使用了getdate()函数和year()函数,前者用于获取系统当前日期,后者用于 获取指定日期的年份。还使用AS关键字为计算列取了别名,否则结果集中列名会显示为 “无列名”。定义别名还可以使用等号(=)。 使用等号时,其语法形式为:新标题=列名; 使用AS关键字时,其形式为:列名 [AS] 新标题,AS关键字可以省略。
参数说明: table_or view_name:要接收数据的表或视图的名称; ( column_list ) :要在其中插入数据的一列或多列的列表。必须用括号将 column_list 括起来, 并且用逗号进行分隔。 VALUES:引入要插入的数据值的列表。对于 column_list(如果已指定)或表中的每个列, 都必须有一个数据值。并且必须用圆括号将值列表括起来。 DEFAULT:强制数据库引擎加载为列定义的默认值。如果某列并不存在默认值,并且该列 允许NULL值,则插入 NULL。
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生基本信息(学号、姓名、性别)插入到学生名册表stu_Info中。
要将表中多行数据复制到另一个表中也可以使用insert into语句,但是需要注意下面两点: 要插入的数据表必须已经存在; 要插入数据的表结构必须和SELECT语句的结果集兼容,也就是说,二者的列的数量和顺
【例】查询Student表中所有男生或者年龄大于19岁的学生姓名和年龄。 SELECT studentName ,YEAR(getdate())-YEAR(birthday) as age FROM Student WHERE sex = '男' OR YEAR(getdate())-YEAR(birthday) > 19
接下来,我们将一一讲解具体用法。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
无条件查询 无条件查询是指只包含“SELECT…FROM”的查询,这种查询最简单。
操作方法:在菜单栏下方的快捷工具中,单击“新建查询”,会在对象资源管理器右侧弹 出查询窗口,在查询窗口中输入查询语句(SQL命令),单击“!执行”按钮,在查询语 句的下方,是其对应的查询结果。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
【例】查询所有姓王的学生的姓名、学号和性别。 SELECT studentID,studentName ,sex FROM Student WHERE studentName LIKE '王%'
【例】查询所有不姓刘的学生姓名和学号。 SELECT studentID,studentName ,sex FROM Student WHERE studentName NOT LIKE '刘%'
第9讲 操纵数据表中的数据
9.1 数据写入
在删除表中的全部数据时,还可以使用TRUNCATE TABLE语句,其格式为: TRUNCATE TABLE table_name
TRUNCATE TABLE语句和DELETE语句都可以将表中的数据全部删除,但是,两条 语句又有不同的特点。 一般情况下,当使用DELETE语句删除数据时,被删除的数据记录在日志中。 而当使用TRUNCATE TABLE语句删除数据时,系统将立即释放表中数据和索引
9.2 数据读出——简单查询
条件查询
(2)模糊条件的查询:如果提供的查询条件并不是十分准确,例如,查询仅仅是包含 或类似某种样式的字符,这种查询称为模糊查询。
在WHERE子句中,可以使用LIKE关键字实现这种灵活的查询。一般与通配符搭配使用。
通配符 % _ [] [^]
含义 包含零个或多个字符的任意字符串。 代表任意单个字符 指定范围或集合中的任意单个字符 不属于指定范围或集合中的任意单个字符
号引起来,不然就会提示系统错误。 当VALUES子句中数据值个数和顺序与表中定义的列的个数和顺序完全一致,
( column_list )可以省略。否则不能省略。 【例】在Student表中插入一条新的学生信息:学号为9,姓名李林,性别为男,院系为计 算机,周学时为18。 值列表的值个数与表中列的个数不一致 ,应该写成: INSERT INTO Student (studentID, studentName , sex, speciality, credithour) VALUES ('9','李林', '男', '计算机',18)
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中更新数据
语法格式: UPDATE [ TOP ( n) [ PERCENT ] ] table_or_view_name SET { column_name = { expression | DEFAULT | NULL } | @variable = column { += | -= | *= | /= | %= | &= | ^= | |= } expression } [ WHERE <search_condition> ]
第9讲 操纵数据表中的数据
9.1 数据写入
【例】在Student表中插入一条新的学生信息。 INSERT INTO Student VALUES ('8','曾玉林', '男', '1991-2-25', '计算机',20,NULL,'123456',NULL) 注意: 向表中插入数据时,数字数据可以直接插入,但是字符数据和日期数据要用英文单引
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
在SQL Server中,可以使用SELECT语句执行数据查询的操作。该语句使用灵活, 功能丰富,它既可以在单表上完成简单的数据查询,也可以在多表上完成复杂 的连接查询和嵌套查询。基本结构如下:
SELECT select_list [ INTO new_table ] [ FROM table_source ] [ WHERE search_condition ] [ GROUP BY group_by_expression] [ HAVING search_condition] [ ORDER BY order_expression [ ASC | DESC ] ]
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中删除数据 Leabharlann Baidu法格式:
DELETE [FROM] table_name [ WHERE search_condition ] 参数说明: table_name:要删除数据的表名称; WHERE:指定条件来限定所删除的记录。 search_condition:为要删除的记录指定需满足的条件。
【例】查询Student表中所有年龄大于19岁的学生信息。 SELECT * FROM Student WHERE year(getdate())-year(birthday)> 19
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
在WHERE子句中,还可以使用逻辑运算符(AND、OR和NOT)把若干个查询条件合并起来, 组成较复杂的查询条件。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
条件查询 条件查询包含确定条件的查询,模糊条件的查询和指定范围的查询三种。下面通过例子来 说明。
(1)确定条件的查询:使用比较运算符、列表、合并以及取反等运算方式进行的条件查询。 一般包括:=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于),!=或 <>(不等于)。 【例】查询所有计算机学院的学生学号和姓名。 SELECT studentID, studentName FROM Student WHERE speciality = '计算机'
数据库技术与应用
Part three
数据库操作
第三章
第9讲 操纵数据表中的数据
9.1 数据写入
表创建以后只是一个没有数据的空表。因此,创建表之后首先要执行的操作就 是向表中输入数据,也可以更新和删除表中的数据。 打开SQL Server Management Studio,选中需要更新数据的表,如student,单击 右键,选择“编辑前200行”,就可以打开student表,查看并修改表数据,该 窗口显示了表中已经存储的数据,数据列表的最后有一个空行。插入数据时, 将光标定位在空白行某个字段的编辑框中,就可以输入新数据。编辑完成后, 单击其他某一行,即可提交新数据。
参数说明: TOP (n ) [ PERCENT ]:指定将要更新的行数或行百分比; table_or view_name:要更新数据的表或视图的名称; SET:指定要更新的列或变量名称的列表 WHERE:指定条件来限定所更新的行。 <search_condition>:为要更新的行指定需满足的条件。
【例】查询选修了课程的学生学号。 select studentID from Grade 从查询结果中可以看到,结果集中包含了许多重复的行。这时因为默认地使用了ALL关键字。 如果想去掉重复行,可以指定DISTINCT关键字。 select distinct studentID from Grade
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中添加数据
语法格式: INSERT [ INTO ] table_or_view_name [ ( column_list ) ] { { VALUES ( ( { DEFAULT | NULL | expression } [ ,...n ] ) [ ,...n ] ) } }
【例】查询Grade表中成绩为空的学生学号。 查询值是否为空,要使用关键字IS NULL,否定形式为IS NOT NULL。一定不能使用“= NULL” 或者“=' ' ”(等于空字符串) SELECT studentID FROM Grade WHERE grade IS NULL
第9讲 操纵数据表中的数据
序必须相同、列的数据类型必须兼容等。
INSERT INTO stu_Info SELECT studentID,studentName,sex FROM student
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生表Student中“李林”所属的学院由“计算机”改为“数学”。 UPDATE Student SET speciality = '数学' WHERE studentName = '李林'
【例】查询姓名中第二个字为“敏”字的教师信息。 SELECT * FROM Teacher WHERE teacherName LIKE '_敏%'
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
如果用户要查询的字符串本身就含有通配符,这时就要使用ESCAPE关键字,对通配符 进行转义。
【例】查询DB_Design课程的课程号和学分。 SELECT courseID, credithour FROM Course WHERE courseName LIKE 'DB\_Design' ESCAPE '\'
【例】将所有学生的选课成绩加5分。 UPDATE Grade SET grade =grade+5
【例】删除Grade 表中的所有数据。 DELETE FROM Grade 或者 DELETE Grade
【例】删除student表中姓名为“李林”的数据记录。 DELETE FROM student WHERE studentName = '李林'
【例】查询全体学生的学号、姓名及性别。 select studentID,studentName,sex from student 【例】查询学生的全部信息。 select * from student 其中“*”表示Student表的全部列名,而不必逐一列出。 还可以在SELECT子句中使用计算列(表达式)。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
【例】查询所有学生的姓名及其年龄。 select studentName, year(getdate())-year(birthday) as age from student 该语句中使用了getdate()函数和year()函数,前者用于获取系统当前日期,后者用于 获取指定日期的年份。还使用AS关键字为计算列取了别名,否则结果集中列名会显示为 “无列名”。定义别名还可以使用等号(=)。 使用等号时,其语法形式为:新标题=列名; 使用AS关键字时,其形式为:列名 [AS] 新标题,AS关键字可以省略。
参数说明: table_or view_name:要接收数据的表或视图的名称; ( column_list ) :要在其中插入数据的一列或多列的列表。必须用括号将 column_list 括起来, 并且用逗号进行分隔。 VALUES:引入要插入的数据值的列表。对于 column_list(如果已指定)或表中的每个列, 都必须有一个数据值。并且必须用圆括号将值列表括起来。 DEFAULT:强制数据库引擎加载为列定义的默认值。如果某列并不存在默认值,并且该列 允许NULL值,则插入 NULL。
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生基本信息(学号、姓名、性别)插入到学生名册表stu_Info中。
要将表中多行数据复制到另一个表中也可以使用insert into语句,但是需要注意下面两点: 要插入的数据表必须已经存在; 要插入数据的表结构必须和SELECT语句的结果集兼容,也就是说,二者的列的数量和顺
【例】查询Student表中所有男生或者年龄大于19岁的学生姓名和年龄。 SELECT studentName ,YEAR(getdate())-YEAR(birthday) as age FROM Student WHERE sex = '男' OR YEAR(getdate())-YEAR(birthday) > 19
接下来,我们将一一讲解具体用法。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
无条件查询 无条件查询是指只包含“SELECT…FROM”的查询,这种查询最简单。
操作方法:在菜单栏下方的快捷工具中,单击“新建查询”,会在对象资源管理器右侧弹 出查询窗口,在查询窗口中输入查询语句(SQL命令),单击“!执行”按钮,在查询语 句的下方,是其对应的查询结果。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
【例】查询所有姓王的学生的姓名、学号和性别。 SELECT studentID,studentName ,sex FROM Student WHERE studentName LIKE '王%'
【例】查询所有不姓刘的学生姓名和学号。 SELECT studentID,studentName ,sex FROM Student WHERE studentName NOT LIKE '刘%'
第9讲 操纵数据表中的数据
9.1 数据写入
在删除表中的全部数据时,还可以使用TRUNCATE TABLE语句,其格式为: TRUNCATE TABLE table_name
TRUNCATE TABLE语句和DELETE语句都可以将表中的数据全部删除,但是,两条 语句又有不同的特点。 一般情况下,当使用DELETE语句删除数据时,被删除的数据记录在日志中。 而当使用TRUNCATE TABLE语句删除数据时,系统将立即释放表中数据和索引
9.2 数据读出——简单查询
条件查询
(2)模糊条件的查询:如果提供的查询条件并不是十分准确,例如,查询仅仅是包含 或类似某种样式的字符,这种查询称为模糊查询。
在WHERE子句中,可以使用LIKE关键字实现这种灵活的查询。一般与通配符搭配使用。
通配符 % _ [] [^]
含义 包含零个或多个字符的任意字符串。 代表任意单个字符 指定范围或集合中的任意单个字符 不属于指定范围或集合中的任意单个字符
号引起来,不然就会提示系统错误。 当VALUES子句中数据值个数和顺序与表中定义的列的个数和顺序完全一致,
( column_list )可以省略。否则不能省略。 【例】在Student表中插入一条新的学生信息:学号为9,姓名李林,性别为男,院系为计 算机,周学时为18。 值列表的值个数与表中列的个数不一致 ,应该写成: INSERT INTO Student (studentID, studentName , sex, speciality, credithour) VALUES ('9','李林', '男', '计算机',18)
第9讲 操纵数据表中的数据
9.1 数据写入
用SQL语句向表中更新数据
语法格式: UPDATE [ TOP ( n) [ PERCENT ] ] table_or_view_name SET { column_name = { expression | DEFAULT | NULL } | @variable = column { += | -= | *= | /= | %= | &= | ^= | |= } expression } [ WHERE <search_condition> ]
第9讲 操纵数据表中的数据
9.1 数据写入
【例】在Student表中插入一条新的学生信息。 INSERT INTO Student VALUES ('8','曾玉林', '男', '1991-2-25', '计算机',20,NULL,'123456',NULL) 注意: 向表中插入数据时,数字数据可以直接插入,但是字符数据和日期数据要用英文单引