当前位置:文档之家› 数据库原理数据库概论(数据库技术与应用)第9讲

数据库原理数据库概论(数据库技术与应用)第9讲


9.2 数据读出——简单查询
条件查询
(2)模糊条件的查询:如果提供的查询条件并不是十分准确,例如,查询仅仅是包含 或类似某种样式的字符,这种查询称为模糊查询。
在WHERE子句中,可以使用LIKE关键字实现这种灵活的查询。一般与通配符搭配使用。
通配符 % _ [] [^]
含义 包含零个或多个字符的任意字符串。 代表任意单个字符 指定范围或集合中的任意单个字符 不属于指定范围或集合中的任意单个字符
所占的空间,并且这种数据变化不被记录在日志中。
第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 ] ]
参数说明: TOP (n ) [ PERCENT ]:指定将要更新的行数或行百分比; table_or view_name:要更新数据的表或视图的名称; SET:指定要更新的列或变量名称的列表 WHERE:指定条件来限定所更新的行。 <search_condition>:为要更新的行指定需满足的条件。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
条件查询 条件查询包含确定条件的查询,模糊条件的查询和指定范围的查询三种。下面通过例子来 说明。
(1)确定条件的查询:使用比较运算符、列表、合并以及取反等运算方式进行的条件查询。 一般包括:=(等于),>(大于),<(小于),>=(大于等于),<=(小于等于),!=或 <>(不等于)。 【例】查询所有计算机学院的学生学号和姓名。 SELECT studentID, studentName FROM Student WHERE speciality = '计算机'
【例】查询Student表中所有年龄大于19岁的学生信息。 SELECT * FROM Student WHERE year(getdate())-year(birthday)> 19
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
在WHERE子句中,还可以使用逻辑运算符(AND、OR和NOT)把若干个查询条件合并起来, 组成较复杂的查询条件。
【例】将所有学生的选课成绩加5分。 UPDATE Grade SET grade =grade+5
【例】删除Grade 表中的所有数据。 DELETE FROM Grade 或者 DELETE Grade
【例】删除student表中姓名为“李林”的数据记录。 DELETE FROM student WHERE studentName = '李林'
【例】查询Student表中所有男生或者年龄大于19岁的学生姓名和年龄。 SELECT studentName ,YEAR(getdate())-YEAR(birthday) as age FROM Student WHERE sex = '男' OR YEAR(getdate())-YEAR(birthday) > 19
序必须相同、列的数据类型必须兼容等。
INSERT INTO stu_Info SELECT studentID,studentName,sex FROM student
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生表Student中“李林”所属的学院由“计算机”改为“数学”。 UPDATE Student SET speciality = '数学' WHERE studentName = '李林'
【例】查询Grade表中成绩为空的学生学号。 查询值是否为空,要使用关键字IS NULL,否定形式为IS NOT NULL。一定不能使用“= NULL” 或者“=' ' ”(等于空字符串) SELECT studentID FROM Grade WHERE grade IS NULL
第9讲 操纵数据表中的数据
号引起来,不然就会提示系统错误。 当VALUES子句中数据值个数和顺序与表中定义的列的个数和顺序完全一致,
( column_list )可以省略。否则不能省略。 【例】在Student表中插入一条新的学生信息:学号为9,姓名李林,性别为男,院系为计 算机,周学时为18。 值列表的值个数与表中列的个数不一致 ,应该写成: INSERT INTO Student (studentID, studentName , sex, speciality, credithour) VALUES ('9','李林', '男', '计算机',18)
数据库技术与应用
Part th 操纵数据表中的数据
9.1 数据写入
表创建以后只是一个没有数据的空表。因此,创建表之后首先要执行的操作就 是向表中输入数据,也可以更新和删除表中的数据。 打开SQL Server Management Studio,选中需要更新数据的表,如student,单击 右键,选择“编辑前200行”,就可以打开student表,查看并修改表数据,该 窗口显示了表中已经存储的数据,数据列表的最后有一个空行。插入数据时, 将光标定位在空白行某个字段的编辑框中,就可以输入新数据。编辑完成后, 单击其他某一行,即可提交新数据。
【例】查询选修了课程的学生学号。 select studentID from Grade 从查询结果中可以看到,结果集中包含了许多重复的行。这时因为默认地使用了ALL关键字。 如果想去掉重复行,可以指定DISTINCT关键字。 select distinct studentID from Grade
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
【例】查询所有学生的姓名及其年龄。 select studentName, year(getdate())-year(birthday) as age from student 该语句中使用了getdate()函数和year()函数,前者用于获取系统当前日期,后者用于 获取指定日期的年份。还使用AS关键字为计算列取了别名,否则结果集中列名会显示为 “无列名”。定义别名还可以使用等号(=)。 使用等号时,其语法形式为:新标题=列名; 使用AS关键字时,其形式为:列名 [AS] 新标题,AS关键字可以省略。
第9讲 操纵数据表中的数据
9.1 数据写入
【例】在Student表中插入一条新的学生信息。 INSERT INTO Student VALUES ('8','曾玉林', '男', '1991-2-25', '计算机',20,NULL,'123456',NULL) 注意: 向表中插入数据时,数字数据可以直接插入,但是字符数据和日期数据要用英文单引
【例】查询姓名中第二个字为“敏”字的教师信息。 SELECT * FROM Teacher WHERE teacherName LIKE '_敏%'
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
如果用户要查询的字符串本身就含有通配符,这时就要使用ESCAPE关键字,对通配符 进行转义。
【例】查询DB_Design课程的课程号和学分。 SELECT courseID, credithour FROM Course WHERE courseName LIKE 'DB\_Design' ESCAPE '\'
接下来,我们将一一讲解具体用法。
第9讲 操纵数据表中的数据
9.2 数据读出——简单查询
无条件查询 无条件查询是指只包含“SELECT…FROM”的查询,这种查询最简单。
操作方法:在菜单栏下方的快捷工具中,单击“新建查询”,会在对象资源管理器右侧弹 出查询窗口,在查询窗口中输入查询语句(SQL命令),单击“!执行”按钮,在查询语 句的下方,是其对应的查询结果。
第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.2 数据读出——简单查询
【例】查询所有姓王的学生的姓名、学号和性别。 SELECT studentID,studentName ,sex FROM Student WHERE studentName LIKE '王%'
【例】查询所有不姓刘的学生姓名和学号。 SELECT studentID,studentName ,sex FROM Student WHERE studentName NOT LIKE '刘%'
第9讲 操纵数据表中的数据
9.1 数据写入
【例】将学生基本信息(学号、姓名、性别)插入到学生名册表stu_Info中。
相关主题