SQL语句知识总结(二)

2014-11-24 11:12:58 · 作者: · 浏览: 3
的删除
v DROP INDEX <索引名>;
删除索引时, 系统会从数据字典中删去有关该索引的
描述。
七、数据查询
数据查询的语句格式:
SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>] …
FROM <表名或视图名>[, <表名或视图名> ] …
[ WHERE <条件表达式> ]
[ GROUP BY <列名1> [ HAVING <条件表达式> ] ]
[ ORDER BY <列名2> [ ASC|DESC ] ];
1、 单表查询
1.1查询表中若干列
A、查询指定列
例如:查询全体学生的学号与姓名。
SELECT Sno,Sname
FROM Student;
B、查询全部列
n 在SELECT关键字后面列出所有列名
n 将<目标列表达式>指定为 *
例如:查询全体学生的详细记录。
SELECT Sno,Sname,Ssex,Sage,Sdept
FROM Student;
SELECT *
FROM Student;
C、查询经过计算的列
v SELECT子句的<目标列表达式>可以为:
§ 算术表达式
§ 字符串常量
§ 函数
§ 列别名
例如:
查全体学生的姓名及其出生年份。
SELECT Sname,2004-Sage /*假定当年的年份为2004年*/
FROM Student;
v 使用列别名改变查询结果的列标题(列名+空格+别名)
SELECT Sname NAME,'Year of Birth: ’ BIRTH,
2000-Sage BIRTHDAY,LOWER(Sdept) DEPARTMENT
FROM Student;
1.2选择表中的若干元组
A、消除取值重复的行
如果没有指定DISTINCT关键词,则缺省为ALL
B、查询满足条件的元组
查 询 条 件
谓 词
比较
=,>,<,>=,<=,!=,<>,!>,!<;NOT+上述比较运算符
确定范围
BETWEEN AND,NOT BETWEEN AND
确定集合
IN,NOT IN
字符匹配
LIKE,NOT LIKE
空值
IS NULL,IS NOT NULL
多重条件(逻辑运算)
AND,OR,NOT
例如:
查询计算机科学系全体学生的名单。
SELECT Sname
FROM Student
WHERE Sdept=‘CS’;
查询所有年龄在20岁以下的学生姓名及其年龄。
SELECT Sname,Sage
FROM Student
WHERE Sage < 20;
查询年龄在20~23岁(包括20岁和23岁)之间的学生的 姓名、系别和年龄
SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;
查询信息系(IS)、数学系(MA)和计算机科学系(CS)学生的姓名和性别。
SELECT Sname,Ssex
FROM Student
WHERE Sdept IN ( 'IS','MA','CS' );
C、字符匹配:
格式:[NOT] LIKE ‘<匹配串>’ [ESCAPE ‘ <换码字符>’]
1)、匹配串为固定字符串
查询学号为200215121的学生的详细情况。
SELECT *
FROM Student
WHERE Sno LIKE ‘200215121';
等价于:
SELECT *
FROM Student
WHERE Sno = ' 200215121 ';
2)、匹配串为含通配符的字符串% _
[查询所有姓刘学生的姓名、学号和性别。
SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE ‘刘%’;
%(百分号)代表任意长度(长度可以为0)的字符串。例如a%b表示以a开头,以b结束的任意长度的字符串。
_(下横线)代表任意单个字符。例如a_b表示以a开头,以b结尾的长度为3的任意字符串。
如果LINK后面的匹配串中不含有通配符,则可以用=(等于)运算符取代LINK谓词,用!=或<>(不等于)运算符取代NOT LINK谓词
3)、 使用换码字符将通配符转义为普通字符
例如: 查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况。
SELECT *
FROM Course
WHERE Cname LIKE 'DB\_%i_ _' ESCAPE ' \ ‘;
/* ESCAPE '\' 表示“ \” 为换码字符 */
D、涉及空值查询
n : IS NULL 或 IS NOT NULL
n “IS” 不能用 “=” 代替
例如: 某些学生选修课程后没有参加考试,所以有选课记录,但没
有考试成绩。查询缺少成绩的学生的学号和相应的课程号。
SELECT Sno,Cno
FROM SC
WHERE Grade IS NULL
E、多重条件查询
逻辑运算符:AND和 OR来联结多个查询条件
AND的优先级高于OR
可以用括号改变优先级
可用来实现多种其他谓词
[NOT] IN
[NOT] BETWEEN … AND …
1.3ORDER BY子句
n 可以按一个或多个属性列排序
n 升序:ASC;降序:DESC;缺省值为升序
当排序列含空值时:
n ASC:排序列为空值的元组最后显示
n DESC:排序列为空值的元组最先显示
例: 查询全体学生情况,查询结果按所在系的系号升序排列,同一系中的学生按年龄降序排列。
SELECT *
FROM Student
ORDER BY Sdept,Sage DESC;
1.