SELECT
格式:
SELECT{* | <字段列名>}[FROM <表 1>, <表 2>…[WHERE <表达式>[GROUP BY <group by definition>[HAVING <expression> [{<operator> <expression>}…]][ORDER BY <order by definition>][LIMIT[<offset>,] <row count>]]
查找表中所有字段
select * from 表名;
查找专业名为电子商务的学生信息
-> select 姓名,专业名-> from xs-> where 专业名='电子商务';+--------+----------+| 姓名 | 专业名 |+--------+----------+| 骆瑜 | 电子商务 || 李老三 | 电子商务 || 张三 | 电子商务 |+--------+----------+
去重 DISTINCT
去除查询结果中重复的项
如果有多个字段,则是消除他们的组合重复项
SELECT DISTINCT <字段名> FROM <表名>;
mysql> select 专业名 from xs;+----------+| 专业名 |+----------+| 电子商务 || 通信工程 || 电子商务 || 通信工程 || 电子商务 |+----------+#使用DISTINCT后:mysql> select DISTINCT 专业名 from xs;+----------+| 专业名 |+----------+| 电子商务 || 通信工程 |+----------+
设置别名AS
将name设置为 student_name,age设置成student_age
mysql> SELECT name AS student_name, age AS student_age FROM tb_students_info;+--------------+-------------+| student_name | student_age |+--------------+-------------+| Dany | 25 || Green | 23 || Henry | 23 || Jane | 22 | |+--------------+-------------+
CASE..END
select 学号,姓名,总学分casewhen 总学分 is null then '尚未选课'when 总学分 <50 then '不及格'when 总学分 >=50 and 总学分 <= 52 then '及格'else '优秀'end as 等级from xswhere 专业名='计算机';
限制查询 LIMIT
<LIMIT> [<位置偏移量>,] <行数>
在 tb_students_if表中,使用LIMIT字句返回从第4条记录开始后面的5行语句
mysql> SELECT * FROM tb_students_info LIMIT 3,5;#第四行开始,后面查询五条
+----+-------+---------+------+------+--------+------------+
| id | name | dept_id | age | sex | height | login_date |
+----+-------+---------+------+------+--------+------------+
| 4 | Jane | 1 | 22 | F | 162 | 2016-12-20 |
| 5 | Jim | 1 | 24 | M | 175 | 2016-01-15 |
| 6 | John | 2 | 21 | M | 172 | 2015-11-11 |
| 7 | Lily | 6 | 22 | F | 165 | 2016-02-26 |
| 8 | Susan | 4 | 23 | F | 170 | 2015-10-01 |
+----+-------+---------+------+------+--------+------------+
查询结果排序 ORDER BY
ORDER BY {<列名> | <表达式> | <位置>} [ASC|DESC]
1) 列名: 指定用于排序的列。可以指定多个列,列名之间用逗号分隔。
2) 表达式 : 指定用于排序的表达式。
3) 位置 : 指定用于排序的列在 SELECT 语句结果集中的位置,通常是一个正整数。
4) ASC|DESC :
关键字 ASC 表示按升序分组,关键字 DESC 表示按降序分组,其中 ASC 为默认值。这两个关键字必须位于对应的列名、表达式、列的位置之后。
先按课程号升序排序,然后按成绩降序排序
也就是课程号相同的情况下再按成绩排序
mysql> select * from score
-> ORDER BY 课程号 ASC,成绩 DESC;
+-------+--------+--------+------+----------+
| 学号 | 课程号 | 课程名 | 成绩 | 成绩情况 |
+-------+--------+--------+------+----------+
| 23130 | 1 | 数据库 | 100 | 合格 |
| 81211 | 1 | 数据库 | 66 | 合格 |
| 85531 | 1 | 数据库 | 56 | 不合格 |
| 23130 | 2 | Java | 98 | 合格 |
| 85531 | 2 | Java | 87 | 合格 |
| 81211 | 2 | Java | 55 | 不合格 |
+-------+--------+--------+------+----------+
例子
select 学号,成绩*1.20 as 成绩120
