数据库应用(四): Ubuntu 下 MySQL 数据库简单查询
简单查询
查询语句核心语法
SELECT [DISTINCT] *|{字段名1, 字段名2, 字段名3,……} FROM 表名 [WHERE 条件表达式1] [GROUP BY 字段名 [HAVING 条件表达式2]] [ORDER BY 字段名 [ASC|DESC]] [LIMIT [OFFSET] 记录数
- “字段1,字段2…”表示从表中查询的指定字段,星号(“*”)通配符表示表中所有字段,两者为互斥关系,任选其一。“DISTINCT”是可选参数,用于剔除查询结果中重复的数据
-
from 表示从指定的表中查询数据
-
“WHERE”是可选参数,用于指定查询条件
-
“GROUP BY”是可选参数,用于将查询结果按照指定字段进行分组,“HAVING”也是可选参数,用于对分组后的结果进行过滤。
- “ORDER BY”是可选参数,用于将查询结果按照指定字段进行排序。排序方式由参数ASC或DESC控制,其中ASC表示按升序进行排列,DESC表示按降序进行排列。如果不指定参数,默认为升序排列
-
“LIMIT”是可选参数,用于限制查询结果的数量。LIMIT后面可以跟2个参数,第一个参数“OFFSET”表示偏移量,如果偏移量为0则从查询结果的第一条记录开始…以此类推。如果不指定OFFSET,其默认值为0。第二个参数“记录数”表示返回查询记录的条数。
查询student表中的所有字段
查询student表中name字段和gender字段的数据(查询指定属性)
PS: 指定查询对象 需要用 where 来限制 相关的条件表达式如下
例如:
查询name为“wusong”的姓名和 性别
带IN关键字的查询
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名 [NOT] IN (元素1,元素2,……)
例如:
查询student表中id值为1、2、3的id、成绩 、姓名、性别
带BETWEEN AND关键字的查询
—判断某个字段的值是否在指定的范围之内
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 字段名 [NOT] BETWEEN 值1 AND 值2
例如:
查询student表中id值在2和5之间的学生id和姓名
空值查询
—判断某些列是否有NULL值
SELECT *|字段名1,字段名2,……
FROM 表名
WHERE 字段名IS [NOT] NULL
例:
查询student表中gender为空值的id、姓名、成绩、性别
带DISTINCT关键字的查询
—去重
SELECT DISTINCT 字段名 FROM 表名;
例:
查询student表中gender字段的值,查询记录不能重复
DISTINCT关键字作用于多个字段
SELECT DISTINCT 字段名1,字段名2,……
FROM 表名;
在上面的语法格式中,只有DISTINCT关键字后指定的多个字段值都相同,才会被认作是重复记录。
带LIKE关键字的查询
—判断两个字符串是否相匹配
SELECT *|{字段名1,字段名2,……} FROM 表名 WHERE 字段名 [NOT] LIKE '匹配字符串';
例:
查找student表中name字段值包含字符“y”的学生id和姓名
下划线(_)通配符
下划线通配符只匹配单个字符,如果要匹配多个字符, 需要使用多个下划线通配符。
PS: 汉字占两个
使用百分号和下划线通配符进行查询操作
百分号和下划线是通配符,它们在通配字符串中有特殊含义,
因此,如果要匹配字符串中的百分号和下划线,就需要在通配字符串中使用右斜线(“\”)对百分号和下划线进行转义,
例如,“\%”匹配百分号字面值,“\_”匹配下划线字面值。
名字中含有 % 的
带AND关键字的多条件查询
-----连接两个或者多个查询条件
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 […… AND 条件表达式n];
例:
查找id >5 的女生
带OR关键字的多条件查询
— 记录满足任意一个条件即被查出
SELECT *|{字段名1,字段名2,……}
FROM 表名
WHERE 条件表达式1 OR […… OR 条件表达式n];
例
查询student表中id字段值小于3或者gender字段值为“女”的id、姓名、性别
OR和AND关键字一起使用的情况
AND的优先级高于OR,因此当两者在一起使用时,应该先运算AND两边的条件表达式,再运算OR两边的条件表达式。
使用LIMIT限制查询结果的数量
SELECT 字段名1,字段名2,……
FROM 表名
LIMIT [OFFSET,] 记录数
LIMIT:后面可以跟2个参数,“OFFSET”:为可选值,表示偏移量,如果偏移量为0则从查询结果的第一条记录开始…以此类推,如果不指定其默认值为0。
“记录数”:表示返回查询记录的条数。
例:
查询student表中grade字段值从第5位到第8位的学生。
高级查询
- COUNT()函数用来统计记录的条数
SELECT COUNT(*) FROM 表名
- SUM()是求和函数,用于求出表中某个字段所有值的总和
SELECT SUM(字段名) FROM 表名;
- AVG()函数用于求出某个字段所有值的平均值
SELECT AVG(字段名) FROM student;
- MAX()函数是求最大值的函数,用于求出某个字段的最大值
SELECT MAX(字段名) FROM student;
- MIN()函数是求最小值的函数,用于求出某个字段的最小值
SELECT MIN(grade) FROM student;
- ORDER BY对查询结果进行排序
SELECT 字段名1,字段名2,…… FROM 表名 ORDER BY 字段名1 [ASC | DESC],字段名2 [ASC | DESC]……
PS: NULL 会被认为最小, 建议and 上非空检测
- GROUP BY对字段值进行分组查询
SELECT 字段名1,字段名2,…… FROM 表名 GROUP BY 字段名1,字段名2,……[HAVING 条件表达式];
- COUNT()函数用来统计记录的条数
学习不易,诸君共勉