排序
order by
asc 默认
desc
单列排序
SELECT * FROM 表明 ORDER BY age (desc|asc);
条件排序
SELECT* FROM 表明 WHERE 条件 ORDER BY age (asc|desc);
多列排序
SELECT * FROM studentinfo order by age desc,gender asc;
有一样的值在相同的时候,第二个条件进行排序。
列子:age相同,就把gender的值做升许。
英文汉字按AZ排序
如果排序的列是中文,排序的列编码转为gbk,然后进行排序。
SELECT * FROM biao ORDERBY convert(name USING gbk) DESC;
列名
限定查询
如果linit后面只跟了一个数字,表示0,数字。表示限制返回多少条。
SELECT * FROM biao ORDER BY LIMIT 6;
SELECT * FROM biao ORDER BY LIMIT 0,6;
查东西限定,要在查到结果以后进行限定,所以limit 一直放在后面。
第一位偏移量,也叫开头(不包含当前的行)。后一个表示限制返回多少条。
SELECT * FROM biao ORDER BY LIMIT 6,6;
从第6开始查,返回6条。返回7-12行。
如何实现分列。
输入页码m 返回20条内容。
SELECT * FROM stu LIMIT (m-1)*20,20;
取年龄最小
SELECT * FROM stunt ORDER BY age LIMIT1;
聚合函数
AVG 平均值
SELECT AVG(age) FROM stu;
别名:
SELECT AVG(age) as avgage FROM stu;
COUNT 统计某一列项的总行数
SUM 计算列总和
MIN 某一列最小值
MAX 某一列最大值
组合:
mysql> SELECT COUNT(age),MAX(age) FROM studentinfo;
去重:
mysql> SELECT COUNT(DISTINCT age) FROM studentinfo;
添加条件:
SELECT COUNT(gender) FROM studentinfo WHERE gender=1;
分组
GROUP BY (相同放在一组)
丹丹分组无意义:
SELECT age from studentinfo GROUP BY age;
加聚合(age 每组有多少人):
SELECT count(*),age from studentinfo GROUP BY age;
GROUP 与 group_concat(列):
SELECT gender,group_concat(student_name),group_concat(age) from studentinfo GROUP BY gender;
+--------+-------------------------------------------+-------------------+
| gender | group_concat(student_name) | group_concat(age) |
+--------+-------------------------------------------+-------------------+
| 0 | xx,老黄,小环,小花花,小刚,小牛 | 23,23,6,22,20,25 |
| 1 | jim,王二 | 30,11 |
+--------+-------------------------------------------+-------------------+
group by +with rollup
在最后新增一行,来记录当前列里所有记录的总和
SELECT gender,group_concat(student_name),group_concat(age) from studentinfo GROUP BY gender with rollup;
HAVING
根据条件过滤(筛选)结果。
HAVING和WHERE相似。where是根据条件筛选结果,不过having根据条件筛选结果,是在已有结果基础进一步筛选。
如何使用:
原句:
SELECT count(),age from studentinfo group by age;
进行过滤:
分组行数大于等于2才返回。
SELECT count(),age from studentinfo group by age having count(*)>=2;
where行
having 和group组合,在组基础上筛选
SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 order by age desc;
order by 配合使用:
SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 AND age>23 order by age desc;
limit配合使用:
SELECT count(*),age,gender from studentinfo group by age,gender having gender=1 AND age>23 order by age desc LIMIT 2;
查询顺序:
select
列,列
from
表名
where
条件
group by
列,列
having
条件
order by
列 (asc|desc)
limit start,count
r原样输出
str = '\c' \c
str = 'r\c' \c
\b单词的边际分割
三大约束
none
not null
唯一 unique:
设置唯一以后,当插入相同的唯一时就报错。
唯一可为null
主键 不能为空
创表跟primary类似。
CREATE TABLE unique5 ( userid int , UNIQUE KEY(userid) );
result
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| userid | int(11) | YES | UNI | NULL | |
+--------+---------+------+-----+---------+-------+
主键
mysql> CREATE TABLE IF NOT EXISTS unique2 ( userid int not null, PRIMARY KEY(userid) );
Query OK, 0 rows affected (0.33 sec)
mysql> desc unique2;
+--------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------+------+-----+---------+-------+
| userid | int(11) | NO | PRI | NULL | |
+--------+---------+------+-----+---------+-------+
【数据库五大约束】
1.primary KEY:设置主键约束,不以为空,唯一;
2.UNIQUE:设置唯一性约束,不能有重复值,可以为null;
3.DEFAULT 默认值约束,height DOUBLE(3,2)DEFAULT 1.2 height不输入是默认为1,2,不使用就会使用默认值。
4.NOT NULL:设置非空约束,该字段不能为空不等于空字符串;
5.FOREIGN key :设置外键约束,。
网友评论