数据查询--单表查询(选择表中的若干列、若干元组(比较、确定范围、确定集合、字符匹配))

单表查询

语句格式:
SELECT[ALL|DISTINCT]<目标列表达式>…
FROM<表名或视图名>…
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY<列名2>[ASC|DESC]];
SELECT子句:指定要显示的属性列
FROM子句:指定查询对象(基本表或视图)
WHERE子句:指定查询条件
GROUP BY子句:对查询结果按指定列的值分组,该属性列值相等的元组为一个组。通常会在每组中作用聚集函数。
HAVING短语:只有满足指定条件的组才予以输出
ORDER BY子句:对查询结果表按指定列的升序或降序排序
1.1 选择表中的若干列
查询指定列
例1.1:查询全体学生的姓名、学号、所在系:

SELECT Sname,Sno,Sdept
FROM Student;

查询全部列
在SELECT关键字后面列出所有列名的表示:**SELECT ***
例1.2:查询全体学生的详细记录:

SELECT *
FROM Student;

查询经过计算的值
SELECT子句的<目标表达式>可以为:算术表达式、字符串常量、函数、列别名
例1.3:查全体学生的姓名及其出生年份:

SELECT Sname,2020-Sage
FROM Student;

1.2 选择表中的若干元组
消除取值重复的行
如果没有指定DISTINCT关键词,则缺省为ALL
例1.4:查询选修了课程的学生学号:

SELECT Sno FROM SC;

输出结果:数据查询--单表查询(选择表中的若干列、若干元组(比较、确定范围、确定集合、字符匹配))_第1张图片

SELECT DISTINCT Sno FROM SC;

输出结果:
数据查询--单表查询(选择表中的若干列、若干元组(比较、确定范围、确定集合、字符匹配))_第2张图片
查询满足条件的元组

查询条件 谓词
比较 =,<,>,>=,<=,!=,<>,!>,!<,NOT;
确定范围 BETWEEN AND,NOT BETWEEN AND
字符匹配 LIKE,NOT LIKE
确定集合 IN,NOT IN
空值 IS NULL,IS NOT NULL
多重条件(逻辑运算) AND,OR,NOT

查询满足条件的元组–比较大小
例1.5:查询计算机科学系全体学生的名单:

SELECT Sname FROM Student
WHERE Sdept='CS';

例1.6:查询所有年龄在20岁以下的学生姓名及其年龄:

SELECT Sname,Sage FROM Student
WHERE Sage<20;

查询满足条件的元组–确定范围
BETWEEN…AND…
NOT BETWEEN…AND…

例1.7:查询年龄在20~23岁(包括20岁和23岁)之间的学生的姓名、系别和年龄:

SELECT Sname,Sdept,Sage
FROM Student
WHERE Sage BETWEEN 20 AND 23;

查询满足条件的元组–确定集合
IN<值表>,NOT IN<值表>
例1.8:查询信息系(IS),数学系(MA)和计算机科学系(CS)学生的姓名和性别:

SELECT Sname,Ssex
FROM Student
WHERE Sdept IN('IS','MA','CS');

查询满足条件的元组–字符匹配:
谓词:[NOT] LIKE ’ <匹配串>’ [ESCAPE ‘<换码字符>’]
例1.9:查询学号为200215121的学生的详细情况:

SELECT *
FROM Student
WHERE Sno LIKE'200215121';

<匹配串>可以是一个完整的字符串,也可以含有通配符%和_
%:代表任意长度的字符串,例如:a%b表示以a开头,以b结尾的任意长度的字符串
_:代表任意单个字符,例如:a_b表示以a开头,以b结尾的长度为3的任意字符串。
例2.0:查询所有姓刘学生的姓名、学号和性别:

SELECT Sname,Sno,Ssex
FROM Student
WHERE Sname LIKE'刘%';

你可能感兴趣的:(数据库SQL,mysql,数据库)