赞
踩
单表查询指仅涉及一个表的查询
选择表中的全波列或者部分列,这就是关系代数中的投影运算
该语句的执行过程:从选定的表中取出一个元组,取出该元组在选定的属性上的值,形成一个新的元组作为输出。对该表所有元组做相同的处理,最后形成一个结果关系作为输出。
# 最基本的SELECT语句: SELECT 字段1,字段2,... FROM 表名
SELECT 1 + 1,3 * 2;
SELECT 1 + 1,3 * 2
FROM DUAL; #dual:伪表
全部列:
#查询全体学生的详细记录
SELECT * FROM Student;
部分列:
#查询全体学生的学号与姓名(指定列)
SELECT Sno, Sname
FROM Student;
SELECT子句的<目标表达式>不仅可以是表中的属性列,也可以是表达式、字符串常量、函数等
计算之后的列默认名称为计算的公式:
#查询全体学生的姓名及其出生年份
SELECT Sname, 2004-Sage
FROM Student;
用户也可以通过指定别名来改变计算的列标题,对于含有算术表达式、常量、函数名的目标列表达式较为常用。
命名方式:紧跟列名,也可以在列名和别名之间加入关键字AS,别名使用双引号,以便在别名中包含空格或特殊的字符并区分大小写。
#查询全体学生的姓名及其出生年份(假设今年是2004年)和所在的院系,要求用小写字母表示所有的系名
SELECT Sname AS 'NAME', 'Year of Birth:' BIRTH, 2004-Sage BIRTHDAY,
LOWER(Sdept) DEPARTMENT
FROM Student;
两个本来并不完全相同的元组,投影到指定的某些列上之后,可能变成相同的行了,可以通过DISTINCT来取消重复的行
如果按照默认方式选定某一列:
#查询选修了课程的学生学号
SELECT Sno FROM SC;
加入DISTINCT:
#去重
SELECT DISTINCT Sno
FROM SC;
常用的运算符:
简单的示例:
#查询所有年龄小于20岁的学生姓名及年龄
SELECT Sname, Sage
FROM Student
WHERE Sage < 20;
在某些属性中,经常会遇见NULL的情况,但是如果这一列带着NULL要参与运算,如果算作默认的运算,后面的结果都会是NULL
如果不加处理:
SELECT employee_id,salary "月工资",salary * (1 + commission_pct) * 12 "年工资",commission_pct
FROM employees;
如果想要得到一个符合条件的值,可以根据实际情况,将NULL转化为合适的值
在这里,NULL代表没有奖金,所以应该转化为0再做运算:
#实际问题的解决方案:引入IFNULL
SELECT employee_id,salary "月工资",salary * (1 + IFNULL(commission_pct,0)) * 12 "年工资",commission_pct
FROM `employees`;
我们需要保证表中的字段、表名等没有和保留字、数据库系统或常用方法冲突。如果真的相同,需要在SQL语句中使用一对``(着重号)引起来。
如果不加处理:
#错误的:
SELECT * FROM ORDER;
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that
corresponds to your MySQL server version for the right syntax to use near 'ORDER' at
line 1
解决方法:
SELECT * FROM `ORDER`;
用户可用ORDER BY子句对查询结果按照一个或多个属性列的升序或降序排列,缺省(默认)为升序
排序规则:
简单的例子:
#查询所有学生的学号及成绩,结果按照分数的降序排列
SELECT Sno, Grade
FROM SC
ORDER BY Grade DESC;
注意:
#查询全体学生姓名和所在的院系,结果按照院系号降序排列
SELECT Sname, Sdept dept
FROM Student
ORDER BY dept DESC;
#查询选修了3号课程的学生的学号及其成绩,查询结果按照分数的降序排列
SELECT Sno, Grade
FROM sc
WHERE Cno='3'
ORDER BY Grade DESC;
#1-4行执行顺序:2、3、1、4
#查询全体学生的情况,查询结果按所在系的系号升序排序,同一系的学生按年龄降序排序
SELECT *
FROM Student
ORDER BY Sdept, Sage DESC;
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。