MySQL学习day2 单表查询
SQL的语言分类
SQL功能 | 动词 |
---|---|
DQL ( Data Query Language ) : 数据查询语言 | select |
DDL (Data Define Languge) : 数据定义语言 | create、drop、alter |
DML ( Data Manipulate Language) : 数据操作语言 | insert、update、 delete |
DCL ( Data Control Language ) : 数据控制语言 | gtant、revoke |
数据查询
语句格式:
SELECT [ALL|DISTINCT] <目标列表达式> FROM <表名或视图名>
WHERE <条件表达式>
GROUPBY <列名1> [ HAVING <条件表达式>]
ORDERBY <列名2> [ ASCIDESC ];
单表查询
一、选择表中的若干列
1.查询指定列
SELECT 列名 FROM 表名;
2.查询全部列
SELECT * FROM 表名;
3.查询经过计算的值
SELECT子句的<目标列表达式>可以为:
- 算术表达式
- 字符串常量
- 函数
- 列别名
二、选择表中的若干元组
1.消除取值重复的行
- DISTINCT
- ALL(默认)
2.查询满足条件的元组
常用查询条件
查询条件 | 谓词 |
---|---|
比较 | = > < >= <= != <> !> !< |
去冗余 | DISTINCT |
确定范围 | BETWEEN AND,NOT BETWEEN AND |
确定集合 | IN,NOT IN |
字符匹配 | LIKE,NOT LIKE |
空值 | IS NULL, IS NOT NULL |
多重条件 | AND, OR , NOT |
3.字符匹配
(1)匹配串为固定字符串
查询学号为200215121的学生的详细情况
SEL ECT * FROM Student
WHERE Sno LIKE ‘200215121’;
等价于:
SELECT * FROM Student
WHERE Sno= ’ 200215121’;
(2)匹配串为含通配符的字符串
查询所有姓刘学生的姓名、 学号和性别
SELECT Sname,Sno ,Ssex FROM Student
WHERE Sname LIKE‘刘%’ ;
查询姓"欧阳"且全名为三个汉字的学生的姓名
SELECT Sname FROM Student
WHERE Sname LIKE '欧阳_ ’ ;
查询名字中第 2个字为"阳"字的学生的姓名和学号
SELECT Sname,Sno FROM Student
WHERE Sname LIKE’__阳%’ ;
查询所有不姓刘的学生姓名
SELECT Sname,Sno,Ssex FROM Student
WHERE Sname NOT LIKE ‘刘%’ ;
(3)使用换码字符将通配符转义为普通字符
查询DB_ Design 课程的课程号和学分
SELECT Cno, Ccredit FROM Course
WHERE Cname LIKE ‘DB \ _ Design’ ESCAPE ’ \ ';
查询以"DB_ " 开头,且倒数第3个字符为i 的课程的详细情况
SELECT * FROM Course
WHERE Cname LIKE ‘DB \ _ %i__’ ESCAPE’ \ ';
ESCAPE’ \ ’ 表示 " \ " 为换码字符
(4) 涉及空值的查询
IS NULL 或 IS NOT NULL
“IS"不能用”="代替
(5) 多重条件查询
- AND和OR来联结多个查询条件
AND的优先级高于OR,可以用括号改变优先级 - 可用来实现多种其他谓词
[NOT] IN
[NOT] BETWEEN AND
三、组函数 ( 组函数的返回值只有一个 )
关键字 | 功能 |
---|---|
COUNT() | 计算所选数据(记录)的个数 |
SUM() | 计算某一数值列的和 |
AVG() | 计算某一数值列的平均值 |
MAX() | 求(字符、 日期、数值列)的最大值 |
MIN() | 求(字符、 日期、数值列)的最小值 |
四、GROUP BY子句
- 将查询结果表按某一列或多列值分组,值相等的为一-组;
- 未对查询分组,组函数作用于整个查询结果
- 对查询分组后,组函数作用于每个组
- 包含GROUP BY子句的查询语句中,SELECT子句后面的所
有字段列表(除组函数外),均应该包含在GROUP BY子句中
HAVING与WHERE区别
作用对象不同
- WHERE子句作用于基表或视图,从中选择满足条件的元组
- HAVING短语作用于组,从中选择满足条件的组
五、ORDER BY 子句
升序: ASC(默认)
降序: DESC
缺省值为升序.
当排序列含空值时
- DESC : 含有空值的行位于最前面
- ASC : 含有空值的行位于最后面
- 点赞
- 收藏
- 分享
- 文章举报
- MYSQL之DQL语言的基础查询学习
- 高性能Mysql学习笔记-查询性能优化
- mongodb和MySql的一些等价查询语句,方便大家映照学习
- MySQL中的基本查询语句学习笔记
- mysql学习—查询数据库中特定的值对应的表
- mysql学习之正则表达式查询
- MySQL学习:多表查询(带实例)
- MySQL中表子查询与关联子查询的基础学习教程
- 深入学习之mysql(五)连接查询
- MySQL CookBook 学习笔记-07排序查询结果
- PHP学习笔记——MySql 查询
- Mysql学习笔记五之查询的五种语句
- 我的MYSQL学习心得(七) 查询
- MySQL学习打卡 Day2
- MySQL 基础 (一)- 查询语句--day2打卡
- Mysql-学习笔记(==》连接查询_高级查询五)
- MySQL查询高速缓冲学习
- MySQL学习笔记5:子查询与连接
- Mysql学习总结(37)——Mysql Limit 分页查询优化
- MySQL学习笔记(四)__模糊查询