所有的查询操作都用它:Select;简单的查询,复杂的查询它都能做;数据库中最核心的语言,最重要的语句;使用频率最高的语句。 指定查询字段
--查询全部的学生 SELECT 字段 FROM 表
SELECt * FROM student
--查询指定字段
SELECt `StudentNo`,`StudentName` FROM student
--别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别名
SELECt `StudentNo` AS 学号,`StudentName` AS 学生姓名 FROM student AS s
--函数 Concat(a,b)
SELECt CONCAT('姓名:',StudentName) AS 新名字 FROM student
有的时候,列的名字不是那么见名知意,所以我们起别名 AS…
去重(distinct)
作用:去除SELECt查询出来的结果中重复的数据,重复的数据只显示一条
--查询一下有哪些同学参加了考试,成绩 SELECT * FROM result --查询全部的考试成绩 SELECt `StudentNo` FROM result -- 查询有哪些同学参加了考试 --发现重复数据,去重 SELECt DISTINCT `StudentNo` FROM result
其他查询语句
SELECt VERSION() --查询系统版本(函数) SELECT 100*3-1 AS 计算结果 --用来计算(表达式) SELECT @@auto_increment_increment --查询自增的步长(变量) --学员考试成绩 +1分 查看 SELECT `StudentNo`,`StudentResult`+1 AS '提分后' FROM result模糊查询(比较运算符)
| 运算符 | 语法 | 描述 |
|---|---|---|
| IS NULL | A is null | 如果操作符为null,结果为真 |
| IS NOT NULL | A is not null | 如果操作符不为null,结果为真 |
| BETWEEN | A between B and C | 若A在B和C之间,结果为真 |
| LIKE | A like B | SQL匹配,如果A匹配B,结果为真 |
| IN | A in (A1,A2,…) | 假设A在A1、A2…其中的某一个值中,结果为真 |
关于LIKE:%(代表0到任意个字符), _(代表一个字符)
联表查询
| 操作 | 描述 |
|---|---|
| Inner join | 在两张表进行连接查询时,只保留两张表中完全匹配的结果集 |
| left join | 会从左表中返回所有的值,即使右表中没有匹配 |
| right join | 会从右表中返回所有的值,即使左表中没有匹配 |
自连接
自己的表和自己的表连接
核心:一张表拆为两张一样的表即可
SELECt完整语法
SELECT [ALL | DISTINCT]
{* | table.* | [table.field1[as alias1][,table.field2[as alias2]][,...]]}
FROM table_name [as table_alias]
[left | right | inner join table_name2] --联合查询
[WHERe ...] --指定结果需满足的条件
[GROUP BY ...] --指定结果按照哪几个字段来分组
[HAVINg] --过滤分组的记录必须满足的次要条件
[ORDER BY] --指定查询记录按一个或多个条件排序
[LIMIT {[offset,]row_count | row_countOFFSET offset}]; --指定查询的记录从哪条至哪条
注意:[ ]表示可选,{ }表示必选
分页和排序
分页(limit):
为什么要分页?
缓解数据库压力给人更好的浏览体验
语法:
limit 起始值,页面大小
排序(order by):
升序 ASC
降序 DESC
子查询
where()
本质:在where语句中嵌套一个子查询语句
MySQL常用函数
-- 数学运算
SELECT ABS(-8) --绝对值
SELECT CEILING(9.6) --向上取整
SELECT FLOOR(9.6) --向下取整
SELECT RAND() --返回一个0-1之间的随机数
SELECT SIGN(10) --判断一个数的符号 0 返回0,复数返回-1,正数返回1
--字符串操作
SELECT CHAR_LENGTH('AB') --字符串长度
SELECT CONCAT('A','+','B') --拼接字符串
SELECT INSERT('HELLO',1,2,'XXX') --从某个位置开始替换某个长度
SELECT LOWER('ABcD') --转小写
SELECT UPPER('ABcD') --转大写
SELECT INSTR('hello','e') --返回第一次出现的子串的索引
SELECT REPLACE('abc','a','d') --替换出现的指定字符串
SELECT SUBSTR('hello',2,3) --返回指定的子字符串
SELECT REVERSE('olleh') --反转
--时间和日期函数
SELECT CURRENT_DATE() --获取当前日期
SELECT NOW() --获取当前时间
SELECT LOCALTIME() --获取本地时间
SELECT SYSDATE() --获取系统时间
聚合函数
COUNT() --计数 SUM() --求和 AVG() --平均值 MAX() --最大值 MIN() --最小值 ...



