MySQL查询数据操作(DQL)

查询记录

单表查询SELECT语句完整形式:

SELECT select_expr [ , select_expr ... ]

[

FROM tbl_references

[WHERE 条件]

[GROUP BY {col_name | position} [ASC | DESC], ... 分组]

[HAVING 条件 对分组结果进行二次筛选]

[ORDER BY {col_name | position} [ASC | DESC], ...排序]

[LIMIT 限制显示条数]

]

查询表达式(select_expr)

1. 每一个表达式表示想要查询的一列,至少有一列,多个列之间以逗号分隔

2. *表示所有列,tbl_name.*可以表示命名的所有列

3. [AS] alias_name 为其赋予别名

SELECT id, username, role FROM cms.cms_admin;

给字段起别名

例如:SELECT id AS ‘编号‘,username AS ‘用户名‘,email AS ‘邮箱‘ FROM 表名; 查询完后别名代替原名显示。

WHERE条件

1. 比较 = < <= > >= != <> !

2. BETWEEN AND 、NOT BETEEN AND 指定范围

IN、NOT IN 指定集合

3. 模糊查询 LIKE

% :代表0个 1个 或多个任意字符

_ :代表1个任意字符

例如查询姓王的用户:

SELECT * FROM user WHERE username LIKE ‘王%‘;

查询名字中含有in的用户:

SELECT * FROM user WHERE username LIKE ‘%in%‘;

查询名字长度为4的用户:

SELECT * FROM user WHERE username LIKE ‘_ _ _ _‘;

查询名字第二位是i的用户:

SELECT* FROM user WHERE username LIKE ‘_i%‘;

当没有使用%或_时 LIKE相当于等号,精准查询。

4. 是否为空值IS NULL、IS NOT NULL

5. 多个查询条件 AND  OR

例如查询用户名为jack,密码为123456的用户:

SELECT * FROM user WHERE username=‘jack‘ AND password=‘123456‘;

查询id大于等于3且年龄不为NULL的用户:

SELECT * FROM user WHERE id>=3 AND age IS NOT NULL;

查询id大于等于3,年龄不为NULL,proId等于3的用户:

SELECT * FROM user WHERE id>=3 AND age IS NOT NULL AND proId=3;

查询编号在5~10之间的,用户名为4位的用户:

SELECT * FROM user WHERE id BETWEEN 5 AND 10 AND username LIKE ‘____‘;

查询用户名以张开头或者id为2或4的用户

SELECT * FROM user WHERE username LIKE ‘张%‘ OR id IN(2, 4);

分组查询GROUP BY

只会显示各个组中的第一条记录。

按照用户所在省份分组proId:

SELECT * FROM user GROUP BY proId;

按照性别分组:

SELECT * FROM user GROUP BY sex;

按照字段位置分组:

SELECT * FROM user GROUP BY 7;(按照第7个位置的字段分组)

按照多个字段分组:

SELECT * FROM user GROUP BY sex,proId;(先按照sex分组,在sex中又以proId来分组。 )

通过WHERE条件筛选,再把结果分组

例如查询id大于等于5的用户按照sex分组:

SELECT * FROM user WHERE id>=5 GROUP BY sex;

GROUP_CONCAT(字段名称)     得到某个字段详情

GROUP BY配合GROUP_CONCAT()函数得到分组详情

查询id,sex,用户详情,按照sex分组

SELECT id,sex,GROUP_CONCAT(username) FROM user GROUP BY sex;

查询proId、sex、regTime、username详情,按proId分组、

SELECT proId,GROUP_CONCAT(username),GROUP_CONCAT(username),GROUP_CONCAT(sex),GROUP_CANCAT(regTime) FROM user GROUP BY proId;

聚合函数

COUNT()      统计某个字段的总数

MAX()          最大值

MIN()           最小值

AVG()           平均值

SUM()          和

注意:COUNT(字段)不统计NULL值。

例如查询id、sex、username详情、组中总人数,并按sex分组:

SELECT id,sex,GROUP_CONCAT(username) AS users,COUNT(*) AS COUNT(*) AS totalUsers FROM user GROUP BY sex;

统计表中所有记录总和:

SELECT COUNT(*) AS totalUsers FROM user;

查询编号、性别、用户名详情,组中总人数,组中最大年龄,最小年龄,平均年龄,年龄总和,按性别分组:

SELECT id,sex,GROUP_CONCAT(username),

COUNT(*) AS total_users,

MAX(age) AS max_age,

MIN(age) AS min_age,

AVG(age) AS avg_age,

SUM(age) AS sum_age

FROM user

GROUP BY sex;

WITH ROLLUP聚合统计上面所有记录

使用HAVING子句对分组结果进行二次筛选

WHERE是对记录第一次筛选,HAVING子句是对分组结果的二次筛选

注意:HAVING子句只能配合分组使用才有意义,放在分组之后

例如查询id>=2、sex、用户名详情、组中总人数、最大年龄、年龄总和:

SELECT id,sex,GROUP_CONCAT(username) AS users,

COUNT(*) AS totalUsers,

MAX(age) AS max_age,

SUM(age) AS sum_age

FROM user

--id大于等于2

WHERE id >=2

GROUP BY sex

-- 继续筛选人数大于2的组并且最大年龄大于60

HAVING COUNT(*)>2  AND MAX(age)>60;

对查询结果进行排序  ORDER BY

例如:按照id升序排序

SELECT * FROM user ORDER BY id ASC;

按照id降序排序

SELECT * FROM user ORDER BY id DESC;

按多字段排序

例如:按年龄升序,id降序排列

SELECT * FROM user ORDER BY age ASC,id DESC;

对结果随机排序

SELECT * FROM user ORDER BY RAND();

限制查询结果显示条数 LIMIT

1.LIMIT 显示条数

2.LIMIT 偏移量,显示条数

查询结果集 前三条记录:

SELECT * FROM user LIMIT 3;

SELECT * FROM user ORDER BY id DESC LIMIT 3;

查询表中前一条记录:

SELECT * FROM user LIMIT 1;

实现分页,偏移量+每页显示记录数

SELECT * FROM user LIMIT 0,5;

SELECT * FROM user LIMIT 5,5;

SELECT * FROM user LIMIT 10,5;

总结:

SELECT id,sex,age,GROUP_CONCAT(username),

COUNT(*) AS totalUsers,

MAX(age) AS max_age,

MIN(age) AS min_age,

AVG(age) AS avg_age,

SUM(age) AS sum_age

FROM user

WHERE id>=1  根据条件第一次筛选

GROUP BY sex  对筛选结果分组

HAVING COUNT(*)>=2 对查询结果二次筛选

ORDER BY age DESC  筛选结果按照age字段排序

LIMIT 0,2;  限制显示条数

时间: 2024-08-02 14:43:08

MySQL查询数据操作(DQL)的相关文章

MySQL查询数据表中数据记录(包括多表查询)

MySQL查询数据表中数据记录(包括多表查询) MySQL查询数据表中数据记录(包括多表查询) 转自:http://www.baike369.com/content/?id=5355 在MySQL中创建数据库的目的是为了使用其中的数据. 使用select查询语句可以从数据库中把数据查询出来. select语句的语法格式如下: select selection_list // 要查询的内容,选择哪些列 from table_list // 从什么表中查询,从何处选择行 where primary_

MySQL 大数据操作注意事项

MySQL 大数据操作注意事项 http://netkiller.github.io/journal/mysql.parallel.html Mr. Neo Chen (netkiller), 陈景峰(BG7NYT) 目录 1. 关于 delete 2. 关于 update 3. 关于创建索引 4. 关于 OPTIMIZE 5. 关于切换引擎 6. 确保SELECT不被受阻 1. 关于 delete delete from mytable 必死无疑,你需要分批删除,尽量缩小每个批次删除的记录数,

MySQL查询in操作 查询结果按in集合顺序显示_Mysql_脚本之家

body { font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI",Tahoma,Helvetica,Sans-Serif,"Microsoft YaHei", Georgia,Helvetica,Arial,sans-serif,宋体, PMingLiU,serif; font-size: 10.5pt; line-height: 1.5;

MySQL 查询数据:语法及案例剖析

MySQL 查询数据 MySQL 数据库使用SQL SELECT语句来查询数据. 你可以通过 mysql> 命令提示窗口中在数据库中查询数据,或者通过PHP脚本来查询数据. 语法 以下为在MySQL数据库中查询数据通用的 SELECT 语法: SELECT column_name,column_name FROM table_name [WHERE Clause] [LIMIT N][ OFFSET M] 查询语句中你可以使用一个或者多个表,表之间使用逗号(,)分割,并使用WHERE语句来设定查

mysql五:数据操作

一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. ======================================================== 本节内容包括: 插入数据更新

MySQL对数据操作的一些深入语法

其他数据操作 数据的操作也叫作crud: C:create R:read U:update D:delete 插入数据 蠕虫复制 就是在已有的数据的基础之上,将原来的数据进行复制,插入到相对应的表中! 语法规则: insert into 表名 select *|字段列表from 表名 注意: 当一个表中的数据复制到另一个表中的时候,需要注意数据的来源要与被插入的表的字段数量和类型要保持一致! 总结蠕虫复制的优点: 1, 可以以最快的速度复制另外一张表的数据 2, 在短期内产生大量的数据,以测试服

mysql四:数据操作

阅读目录 一 介绍 二 插入数据INSERT 三 更新数据UPDATE 四 删除数据DELETE 五 查询数据SELECT 六 权限管理 一 介绍 MySQL数据操作: DML ======================================================== 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. ==

MySQL 之 数据操作

一 介绍 二 插入数据 INSERT 三 更新操作 UPDATE 四 删除操作 DELETE 五 查询操作 SELECT 一  介绍 在MySQL管理软件中,可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据. 二 插入数据 INSERT #语法一: 按字段进行插入 insert into 表(字段1,字段2 ...) values (值1,值2 ...); #语法二:按字段

第八章|MySQL数据库|数据操作

数据操作 可以通过SQL语句中的DML语言来实现数据的操作,包括 使用INSERT实现数据的插入 UPDATE实现数据的更新 使用DELETE实现数据的删除 使用SELECT查询数据以及. 数据的增删改查 插入数据INSERT 1. 插入完整数据(顺序插入) 语法一: INSERT INTO 表名(字段1,字段2,字段3-字段n) VALUES(值1,值2,值3-值n); 语法二: INSERT INTO 表名 VALUES (值1,值2,值3-值n); 2. 指定字段插入数据 语法: INSE