1,数据库----select语句 详解
MySQL 软件 数据处理
SQL 语言
编写规范 mySQL 语言大写 其它小写
- 建立数据库
CREATE DATABASE oneschema;
删除数据库:
mysql> DROP DATABASE 库名;
- 建立表
CREATE TABLE 表名 (id int primary key ,字段名 VARCHAR(20), 字段名 CHAR(1));
将表中记录清空:
DELETE FROM 表名插入
INSERT INTO 表名 ( 属性,属性 )VALUES (“hyq”,“M”);更新表中数据:
UPDATE 表名 SET 字段名1=‘a’,字段名2=‘b’ WHERE 字段名3=‘c’;
2个知识点(大纲)
1/ 七大部分
select------输出 ④
from--------获取数据 ①
where------过滤 ②
group by—分组 ③
having------过滤 ⑤
order by----排序 ⑥
limit----------分页(限定个数) ⑦
2/ sql语句执行顺序(初始化)
数据是以表的形式展现的, 列 和 行 的形式.
from--------获取数据
拿到一个表内所有数据(一个网格的所有内容)
where------过滤
group by—分组
定义:以某一列 数据相同的作为一组
所以 你先知道分了几组 如图 那么多数据 就变成了 2条 为两组
原理: 建立–标识–一个组内的第一行被记录下来 遇到select 输出标识
其他 不输出
这里的结果默认会有个排序
聚集函数
当count(1)–计数 有多少行
遇到
分组
这结果 是 (以上图为例)
多列分组
select------输出
‘*’ 说的是所有的属性 不推荐 建议所有属性 打上去
函数 用法大体相同
- count 计数(三种用法)
1.count(1)–计数 有多少行
2.count(name)
区别 如果这个name属性 有 null 这 null就不计入 其他情况一致
3.null就不计入 不重复的 计数 distinct 属性
- sum 求和
- max 最大值
- min 最小值
- avg 平均值
- GROUP_CONCAT(expr) 字符串 用的少
总结:
having------过滤 (过滤输出后的内容的 过滤)
查询每个班中人数 大于三个的班级 号.
(目的明确)输出: xx
遇到 ‘每个’ 一般要用到分组
这里不可以用 where 过滤 count(*) > 3 达成 每个班中人数 大于三个 这个目的 ,如果用了 就意味着 他不知道要对什么计数 ,因为还没有分组.
select class from stu group by class having count(1) > 3;
order by----排序
可以用列名(属性名) ,也可以 用 count(*) .
limit----------分页
limit(0,2)