数据库排序、分组、过滤

about-BY-gentle.jpg

排序
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 :设置外键约束,。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,539评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,594评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 165,871评论 0 356
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,963评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,984评论 6 393
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,763评论 1 307
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,468评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,357评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,850评论 1 317
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,002评论 3 338
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,144评论 1 351
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,823评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,483评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,026评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,150评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,415评论 3 373
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,092评论 2 355

推荐阅读更多精彩内容