SQL
结构化查询语言SQL( Struceured Query Languang)一直是关系数据库管理系统(RDBMS)的标准语言
集DDL,DML,DCL于一体,
数据查询 与 数据操纵
SELECT [ALL|DISTINCT]<目标表达式>[,目标表达式]……
FROM<表名>[,表名]
WHERE<条件表达式>
ORDER BY <列名>[ASC|DESC]
单表查询
建立数据库studentinfo,
建立数据库表 student (学生基本信息表)
建立字段(列),sno,sname,ssex,sage,sdept
建立数据库表 sc (学生选课表)
建立字段,id,sno,cno,grade
查询表中若干列
1查询指定的列
例1 查询全体学生的学号与姓名。
SELECT sno,sname FROM student
例2 查询全体学生的名称、学号、所在系
SELECT studentname,studentno,sdepartment FROM student;
例3 查询全体学生详细记录
SELECT * FROM student
等价于
SELECT * sno,sname,ssex,sage,sdept FROM student
例 4 查询全体学生的姓名以及出生年份
SELECT Sname,2006-sage FROM student;
查询表中若干元组
1 消除重复的数据
查询选修课程的所有学生学号
SELECT sno FROM sc
这样会包含一些重复数据,如何消除呢?
使用DISTINCT
SELECT DISTINCT sno FROM sc
查询满足条件的数据
比较 = , > ,< , >= , <= , != , <> , !> !< ; NOT +比较运算符
确定范围 BETWEEN AND ,NOT BETWEEN AND
确定集合 IN,NOT IN
字符匹配 LIKE, NOT LIKE
空值 IS NULL,IS NOT NULL
多重条件 AND, OR
例5 查询 计算机系所有学生名单
SELECT Sname , FROM student WHERE Sdept = ‘CS’;
例6 查询年龄在20以下的学生姓名及其年龄
SELECT Sname , Sage , FROM student WHERE sage <20;
确定范围ie
BETWEEN…AND 和 NOT BETWEEN….AND
例7 查询年龄在20-23岁之间的学生姓名、系别和年龄。
SELECT sname , sdept,sage FROM student WHERE sage BETWEEN 20 AND 23
确定集合
IN可以查询值属于指定集合的数据
例8 查询信息系(is) 与计算机系(cs)学生的姓名与性别
SELECT sname,ssex FROM student WHERE sdept IN(‘is’,’cs’);
字符匹配
LIKE 和 NOT LIKE 用于字符串的匹配。其中可以包含通配符_和%
%代表任意长度
_代表一个字符
例9 查询学号为06001的学生所有数据
SELECT * FROM student where sno LIKE ‘95001’;
例10 查询所有姓刘的学生姓名、学号和性别
SELECT sname,sno,ssex WHERE sname LIKE ‘刘%’
例 11 查询姓”欧阳”并且三个汉字的学生姓名
SELECT sname FROM student WHERE sname LIKE ‘欧阳_ _’
多重条件查询
AND 和 OR可用来连接多个查询条件
例12 查询所有计算机系年龄在20以下的学生
SELECT sname FROME student WHERE sdept=’cs’ and sage<20;
例 13 查询是计算机系的或者是信息系的所有学生姓名和性别
SELECT sname,ssex FROM student WHERE sdept=’cs’ OR sdept=’is’
对查询结果排序(ORDER BY)
ORDER BY 对查询结果按照一个字段的升序(ASC)或降序(DESC)排列,默认为升序
例14 查询选修了3号课的学生学号以及成绩,查询结果按照分数的降序排列
SELECT sno,grade FROM sc where cno=’3’ ORDER BY grade DESC;
使用函数
COUNT 统计数据条数
SUM 计算某一列值得总和
AVG 计算某一列值得平均值
MAX 求某一字段中最大值
MIN 求某一字段的最小值