MySQL
select
最基本的SELECT语句
代码语言:javascript复制# SELECT 字段1,字段2...FROM表名
```sql
SELECT 1 1,2*2;
代码语言:javascript复制此句运行结果·就是· 2,4
其实相当于·
```sql
SELECT 1 1,2*2
FROM DUAL;#dual 伪表
代码语言:javascript复制SELECT *FROM employees
# * 代表表中所有的字段(列)
其中字段的名字要完全正确(及所写的字段的名字在表中存在,不可以写缩写等)
列的别名
代码语言:javascript复制SELECT personname name,personage AS age,personsex "sex"
FROM employees
第一种: name就是 personname的别名 第二种 age就是personage的别名 as 英文全称 alias(别名),可以省略 第三种: sex就是personsex的别名
注意: 不能使用单引号 日期时间,字符串类型的变量需要使用时使用一对 ’ '单引号
去除重复行
代码语言:javascript复制SELECT DISTINCT personage
FROM employees
只显示出一种年龄,比如有两个相同的年龄,经过此词语后只会留下一个年龄。 错误示范:
代码语言:javascript复制SELECT personname, DISTINCT personage
FROM employees
personname没有去重,但是personage却去重了,导致无法通过
代码语言:javascript复制SELECT DISTINCT personname, personage
FROM employees
实际上对personname,personage两个都进行却重,不会报错,但没有实际·意义
空值参与运算
空值:NULL
空值不等同于0 或者 ‘ ’
空值参与运算时结果也一定为NULL
那么当字段中有NULL时怎么计算呢?
可以引入IFNULL函数
IFNULL(字段,0)
意思是如果 字段为NULL的话就会把其看作0
着重号
必须保证你到字段没有和保留字,数据库系统或常用方法冲突,如果坚持使用,请在sql语句中使用 ``引起来。 比如:
代码语言:javascript复制SELECT *FROM ORDER
ORDER 因为是一个排序的关键字,所以如果一运行会报错。 解决方法就是加上一对``
代码语言:javascript复制SELECT *FROM `order`
查询常数
就是在SELECT查询结果中增加一列固定的常数列,这列的取值是我们规定的,不是从数据表中动态取出的、作为常量出现
代码语言:javascript复制SELECT “xiaojiejie”,personage
FROM employees;
结果及在每一个年龄·前面都匹配填充上“xiaojiejie”
显示表结构
显示表中字段的详细信息
代码语言:javascript复制DESCRIBE employees;
#或者
DESC employees;
过滤数据
代码语言:javascript复制SELECT *
FROM employees
WHERE personage=12;
即只显示表中年龄为12的数据 同理
代码语言:javascript复制SELECT *
FROM employees
WHERE personname='xiaojiejie';
即只显示表中姓名为’xiaojiejie’的数据 因为‘xiaojiejie’是字符串,所以要用单引号 注意:‘xiaojiejie’ 由于Mysql的不严谨性,'xiaojiejie’的大小写不会区分。和不区分单引号,双引号一样。 但是在oracl 中就会区分。所以还是要严格按照sql的标准来执行学习。
排序
如果假如没有使用排序操作,默认情况下查询返回的数据是按照添加数据的顺序来显示的。
代码语言:javascript复制SELECT *FROM employees;
使用 ORDER BY 对查询到的数据进行排序操作。
升序:ASC(ascend) 降序:DESC(descend) 比如: 按照age从高到低的顺序进行排序
代码语言:javascript复制SELECT age
FROM person
ORDER BY age DESC;
按照age从低到高的顺序进行排序
代码语言:javascript复制SELECT age
FROM person
ORDER BY age ASC;
如果 ORDER BY age; 后面没有显示指定排序的方式的话,则默认按照升序排序。
代码语言:javascript复制SELECT age
FROM person
ORDER BY age;
使用列的别名,进行排序
代码语言:javascript复制SELECT age*12 agee
FROM person
ORDER BY agee;
注意:列的别名只能在ORDER BY 中使用,不能在WHERE 中使用 比如
代码语言:javascript复制SELECT age*12 agee
FROM person
WHERE agee > 10;
#会报错
那么·当同时出现WHERE 和ORDER BY时应该·怎么写呢? 格式强调: WHERE的声明要写在FROM后,ORDER BY 之前
代码语言:javascript复制SELECT age
FROM person
WHERE age > 10
ORDER BY age;
二级排序
在对列进行排序的时候,首先排序的第一列必须有相同的列值,才会对第二列进行排序。 如果第一列的数据中所有值都是唯一的,将不再对第二列进行排序。 比如: 显示员工信息。按照age降序排列,salary的升序排列
代码语言:javascript复制SELECT name,age,salary
FROM person
ORDER BY age,salary ASC;
分页
LIMIT 分页显示公式:(当前页数减一)*每页条数,每页条数
代码语言:javascript复制SELECT *
FROM table
LIMIT (pageNo-1)*pageSize,pageSize;
例如 显示前10条记录:
代码语言:javascript复制SELECT *
FROM table
LIMIT 0,10;
显示第11条到20条记录:
代码语言:javascript复制SELECT *
FROM table
LIMIT 10,10;
显示第21条到20条记录:
代码语言:javascript复制SELECT *
FROM table
LIMIT 20,10;
注意:在mysql8.0当中,可以使用“LIMIT 3 OFFSET 4” 意思是从第5条记录开始,向后获取3条记录。与“LIMIT 4,3”结果一样。 注意:LIMIT子句一定要放在整个SELECT语句的最后面。
使用LIMIT句子好处
约束返回结果的数量可以减少数据表的网络传输量,也可以提升查询效率。如果我们知道返回结果只有一条,就可以使用LIMIT 1 告诉SELECT 语句只需要返回一条记录即可。这样的好处就是SELECT语句不需要扫描完整的表,只需要检索到一条符合条件的记录即可返回。
文章到此结束啦,欲知后事如何,请看下篇!