【数据库】SQL--DQL(初阶)
文章目录
- DCL
- 1. 基本介绍
- 2. 语法
- 2.1 基础查询
- 2.2 条件查询
- 2.3 聚合函数
- 2.4 聚合查询
- 2.5 分组查询
- 2.6 排序查询
- 2.7 分页查询
- 2.8 综合案例练习
- 2.9 执行顺序
- 3. DQL总结
DCL
更多数据库MySQL系统内容就在以下专栏:
专栏链接:数据库MySQL
1. 基本介绍
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。
2. 语法
2.1 基础查询
基本语法:
- 查询多个字段
SELECT 字段1, 字段2,...FROM 表名;
SELECT * FROM 表名;
- 设置别名
SELECT 字段1[AS 别名1], 字段2[AS 别名2],...FROM 表名;
注意:
as 可以省略
- 去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
创建一个emp表
mysql>
mysql> create table emp(-> id int comment '编号',-> workno varchar(10) comment '工号',-> name varchar(10) comment '姓名', -> gender char(1) comment '性别', -> age tinyint unsigned comment '年龄', -> idcard char(18) comment '身份证号',-> workaddress varchar(50) comment '工作地址',-> entrydate date comment '入职时间'-> ) comment '员工表';
Query OK, 0 rows affected (0.03 sec)mysql>
mysql>
mysql> show tables;
+------------------+
| Tables_in_itcast |
+------------------+
| emp |
| student |
+------------------+
2 rows in set (0.04 sec)mysql>
添加16组数据
mysql>
mysql> insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydate) values(1,'1', '柳岩', '女', 20, '123456789012345678', '北京', '2001-01-01'), (2,'2', '张无忌', '男', 18, '123456789012345671', '北京', '2002-02-02'),(3,'3', '韦一笑', '男', 38, '123456789012345672', '上海', '2003-03-03'),(4,'4', '赵敏', '女', 18, '123456789012345673', '北京', '2004-04-04'),(5,'5', '小昭', '女', 16, '123456789012345674', '上海', '2005-05-05'),(6,'6', '杨逍', '男', 28, '123456789012345675', '北京', '2006-01-01'), (7,'7', '范瑶', '男', 40, '123456789012345676', '北京', '2007-01-01'),(8,'8', '黛绮丝', '女', 38, '123456789012345678', '天津', '2008-01-01'), (9,'9', '范冰冰', '女', 45, '123456789012345679', '北京', '2009-01-01'), (10,'10', '陈友谅', '男', 53, '223456789012345676', '上海', '2017-01-01'),-> (11,'11', '张士诚', '男', 55, '323456789012345676', '江苏', '2027-01-01'),-> (12,'12', '常遇春', '男', 32, '423456789012345676', '北京', '2037-01-01'),-> (13,'13', '张三丰', '男', 88, '523456789012345676', '江苏', '2047-01-01'),-> (14,'14', '灭绝', '女', 65, '623456789012345676', '西安', '2057-01-01'),-> (15,'15', '胡青牛', '男', 70, '723456789012345676', '西安', '2067-01-01'),-> (16,'16', '周芷若', '女', 18, null, '北京', '2077-01-01');
Query OK, 16 rows affected (0.01 sec)
Records: 16 Duplicates: 0 Warnings: 0
mysql>
mysql> select * from emp;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | null | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
16 rows in set (0.10 sec)mysql>
案例1:
查询指定字段 name, workno, age 返回
示例代码:
mysql>
mysql> select name, workno, age from emp;
+--------+--------+-----+
| name | workno | age |
+--------+--------+-----+
| 柳岩 | 1 | 20 |
| 张无忌 | 2 | 18 |
| 韦一笑 | 3 | 38 |
| 赵敏 | 4 | 18 |
| 小昭 | 5 | 16 |
| 杨逍 | 6 | 28 |
| 范瑶 | 7 | 40 |
| 黛绮丝 | 8 | 38 |
| 范冰冰 | 9 | 45 |
| 陈友谅 | 10 | 53 |
| 张士诚 | 11 | 55 |
| 常遇春 | 12 | 32 |
| 张三丰 | 13 | 88 |
| 灭绝 | 14 | 65 |
| 胡青牛 | 15 | 70 |
| 周芷若 | 16 | 18 |
+--------+--------+-----+
16 rows in set (0.10 sec)mysql>
案例2:
查询所有字段返回
示例代码:
mysql>
mysql> select id, workno, name, gender, age, idcard, workaddress, entrydate from emp;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | null | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
16 rows in set (0.11 sec)mysql>
或者
mysql>
mysql> select * from emp;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | null | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
16 rows in set (0.12 sec)mysql>
案例3:
查询所有员工的工作地址,起别名
示例代码:
mysql>
mysql> select workaddress as '工作地址' from emp;
+----------+
| 工作地址 |
+----------+
| 北京 |
| 北京 |
| 上海 |
| 北京 |
| 上海 |
| 北京 |
| 北京 |
| 天津 |
| 北京 |
| 上海 |
| 江苏 |
| 北京 |
| 江苏 |
| 西安 |
| 西安 |
| 北京 |
+----------+
16 rows in set (0.12 sec)mysql>
或者
mysql>
mysql> select workaddress '工作地址' from emp;
+----------+
| 工作地址 |
+----------+
| 北京 |
| 北京 |
| 上海 |
| 北京 |
| 上海 |
| 北京 |
| 北京 |
| 天津 |
| 北京 |
| 上海 |
| 江苏 |
| 北京 |
| 江苏 |
| 西安 |
| 西安 |
| 北京 |
+----------+
16 rows in set (0.11 sec)mysql>
案例4:
查询公司员工的上班地址(不要重复)
示例代码:
mysql>
mysql> select distinct workaddress '工作地址' from emp;
+----------+
| 工作地址 |
+----------+
| 北京 |
| 上海 |
| 天津 |
| 江苏 |
| 西安 |
+----------+
5 rows in set (0.09 sec)mysql>
2.2 条件查询
基本语法:
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件:
案例1:
查询年龄等于88的员工。
mysql>
mysql> select * from emp where age=88;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
1 row in set (0.04 sec)mysql>
案例2:
查询年龄小于20的员工信息
mysql>
mysql> select * from emp where age<20;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | null | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
4 rows in set (0.04 sec)mysql>
案例3:
查询年龄小于等于20的员工信息
mysql>
mysql> select * from emp where age<=20;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | null | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.04 sec)mysql>
案例4:
查询没有身份证号的员工信息
mysql>
mysql> select * from emp where idcard is null;
+----+--------+--------+--------+-----+--------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------+-------------+------------+
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------+-------------+------------+
1 row in set (0.07 sec)mysql>
案例5:
查询有身份证号的员工信息
mysql>
mysql> select * from emp where idcard is not null;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
15 rows in set (0.08 sec)mysql>
案例6:
查询年龄不等于88的员工信息
mysql>
mysql> select * from emp where age!=88;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
15 rows in set (0.08 sec)mysql>
或者
mysql>
mysql> select * from emp where age <> 88;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
15 rows in set (0.05 sec)mysql>
案例7:
查询年龄在15岁(包含)到20岁(包含)之间的员工信息
mysql>
mysql> select * from emp where age >=15 && age <=20;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.05 sec)mysql>
或者
mysql>
mysql> select * from emp where age>=12 and age<=20;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.05 sec)mysql>
或者
mysql>
mysql> select * from emp where age between 15 and 20;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.05 sec)mysql>
案例8:
查询性别为 女 且年龄小于25岁的员工信息
mysql>
mysql> select * from emp where gender = '女' and age <25;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
4 rows in set (0.05 sec)mysql>
案例9:
查询年龄等于18 或 20 或40 的员工信息
mysql>
mysql> select * from emp where age = 18 || age =20 || age = 40;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.04 sec)mysql>
或者:
mysql>
mysql> select * from emp where age = 18 or age = 20 or age = 40;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.05 sec)mysql>
或者:
mysql>
mysql> select * from emp where age in(18, 20,40);
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
5 rows in set (0.05 sec)mysql>
案例10:
查询姓名为两个字的员工信息
mysql>
mysql> select * from emp where name like '__';
+----+--------+------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
+----+--------+------+--------+-----+--------------------+-------------+------------+
6 rows in set (0.04 sec)mysql>
案例11:
mysql>
mysql> select * from emp where idcard like '%x';
Empty setmysql>
或者:
mysql> select * from emp where idcard like '_________________x';
Empty setmysql>
2.3 聚合函数
基本介绍:
将一列数据作为一个整体,进行纵向计算。
常见聚合函数:
函数 | 功能 |
---|---|
count | 统计数量 |
max | 最大值 |
min | 最小值 |
avg | 平均值 |
sum | 求和 |
2.4 聚合查询
基本语法:
SELECT 聚合函数(字段列表)FROM 表名;
注意:
使用聚合函数进行计算时,所有的null值不参与计算。
案例1:
统计该企业员工数量
mysql>
mysql> select count(*) from emp;
+----------+
| count(*) |
+----------+
| 16 |
+----------+
1 row in set (0.03 sec)mysql>
案例2:
统计该企业员工的平均年龄
mysql>
mysql> select avg(age) from emp;
+----------+
| avg(age) |
+----------+
| 40.1250 |
+----------+
1 row in set (0.03 sec)mysql>
案例3:
统计该企业员工的最大年龄
mysql> select max(age) from emp;
+----------+
| max(age) |
+----------+
| 88 |
+----------+
1 row in set (0.03 sec)mysql>
案例4:
统计该企业员工的最小年龄
mysql>
mysql> select min(age) from emp;
+----------+
| min(age) |
+----------+
| 16 |
+----------+
1 row in set (0.03 sec)mysql>
案例5:
统计西安地区员工的年龄之和
mysql>
mysql> select sum(age) from emp where workaddress = '西安';
+----------+
| sum(age) |
+----------+
| 135 |
+----------+
1 row in set (0.04 sec)mysql>
2.5 分组查询
基本语法:
SELECT 字段列表FROM 表名 [WHERE 条件] GROUP BY 分组字段名 [HAVING 分组后过滤条件]
where与having的区别:
- 执行时机不同:where是分组之前进行过滤,不满足where条件的,不参与分组;而having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
注意:
- 执行顺序:where> 聚合函数> having
- 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段并无任何意义。
案例1:
根据性别分组,统计 男性员工 和 女性员工的数量。
mysql>
mysql> select gender, count(*) from emp group by gender;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 女 | 7 |
| 男 | 9 |
+--------+----------+
2 rows in set (0.05 sec)mysql>
案例2:
根据性别分组,统计男性员工 和 女性员工的平均年龄
mysql>
mysql> select gender, avg(age) from emp group by gender;
+--------+----------+
| gender | avg(age) |
+--------+----------+
| 女 | 31.4286 |
| 男 | 46.8889 |
+--------+----------+
2 rows in set (0.05 sec)mysql>
案例3:
查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址。
mysql>
mysql> select workaddress, count(*) from emp where age<45 group by workaddress having count(*) >= 3;
+-------------+----------+
| workaddress | count(*) |
+-------------+----------+
| 北京 | 7 |
+-------------+----------+
1 row in set (0.04 sec)mysql>
2.6 排序查询
** 基本语法:**
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1, 字段2 排序方式2;
排序方式:
ASC : 升序(默认值)
DESC:降序
注意:
如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序。
案例1:
根据年龄对公司的员工进行升序排序
mysql>
mysql> select name, age from emp order by age asc;
+--------+-----+
| name | age |
+--------+-----+
| 小昭 | 16 |
| 张无忌 | 18 |
| 赵敏 | 18 |
| 周芷若 | 18 |
| 柳岩 | 20 |
| 杨逍 | 28 |
| 常遇春 | 32 |
| 韦一笑 | 38 |
| 黛绮丝 | 38 |
| 范瑶 | 40 |
| 范冰冰 | 45 |
| 陈友谅 | 53 |
| 张士诚 | 55 |
| 灭绝 | 65 |
| 胡青牛 | 70 |
| 张三丰 | 88 |
+--------+-----+
16 rows in set (0.04 sec)mysql>
案例2:
根据入职时间,对员工进行降序排序
mysql>
mysql> select * from emp order by entrydate desc;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
16 rows in set (0.05 sec)mysql>
案例3:
根据年龄对公司的员工进行升序排序,年龄相同,再按照入职时间进行降序排序
mysql>
mysql> select * from emp order by age asc, entrydate desc;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
16 rows in set (0.07 sec)mysql>
2.7 分页查询
基本语法:
SELECT 字段列表 FROM 表名LIMIT 起始索引, 查询记录数;
注意:
- 起始索引从0开始,起始索引 = (查询页码-1) * 每页显示记录数
- 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT
- 如果查询的是第一页数据,其实索引可以忽略,直接简写为limit 10
案例1:
查询第一页员工数据,每页展示10条记录
mysql>
mysql> select * from emp limit 0, 10;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
10 rows in set (0.05 sec)mysql>
或者:
mysql>
mysql> select * from emp limit 10;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
| 2 | 2 | 张无忌 | 男 | 18 | 123456789012345671 | 北京 | 2002-02-02 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 4 | 4 | 赵敏 | 女 | 18 | 123456789012345673 | 北京 | 2004-04-04 |
| 5 | 5 | 小昭 | 女 | 16 | 123456789012345674 | 上海 | 2005-05-05 |
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 7 | 7 | 范瑶 | 男 | 40 | 123456789012345676 | 北京 | 2007-01-01 |
| 8 | 8 | 黛绮丝 | 女 | 38 | 123456789012345678 | 天津 | 2008-01-01 |
| 9 | 9 | 范冰冰 | 女 | 45 | 123456789012345679 | 北京 | 2009-01-01 |
| 10 | 10 | 陈友谅 | 男 | 53 | 223456789012345676 | 上海 | 2017-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
10 rows in set (0.05 sec)mysql>
案例2:
查询第二页员工数据,每页展示10条记录
mysql>
mysql> select * from emp limit 10, 10;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 11 | 11 | 张士诚 | 男 | 55 | 323456789012345676 | 江苏 | 2027-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 13 | 13 | 张三丰 | 男 | 88 | 523456789012345676 | 江苏 | 2047-01-01 |
| 14 | 14 | 灭绝 | 女 | 65 | 623456789012345676 | 西安 | 2057-01-01 |
| 15 | 15 | 胡青牛 | 男 | 70 | 723456789012345676 | 西安 | 2067-01-01 |
| 16 | 16 | 周芷若 | 女 | 18 | NULL | 北京 | 2077-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
6 rows in set (0.07 sec)mysql>
2.8 综合案例练习
案例1:
查询年龄为20, 21, 22, 23的员工信息。
mysql>
mysql> select * from emp where gender = '女' and age = 20 or age = 20 or age = 21 or age = 22 or age = 23;
+----+--------+------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
+----+--------+------+--------+-----+--------------------+-------------+------------+
1 row in set (0.05 sec)mysql>
或者:
mysql>
mysql> select * from emp where gender = '女' and age in(20, 21, 22, 23);
+----+--------+------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+------+--------+-----+--------------------+-------------+------------+
| 1 | 1 | 柳岩 | 女 | 20 | 123456789012345678 | 北京 | 2001-01-01 |
+----+--------+------+--------+-----+--------------------+-------------+------------+
1 row in set (0.04 sec)mysql>
案例2:
查询性别为男,并且年龄在 20-40 (含)以内的,姓名为三个字的员工
mysql>
mysql> select * from emp where gender = '男' and age >= 20 and age <= 40 and name like '___';
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
2 rows in set (0.05 sec)mysql>
或者:
mysql>
mysql> select * from emp where gender = '男' and age between 20 and 40 and name like '___';
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
2 rows in set (0.05 sec)mysql>
案例3:
统计员工表中,年龄小于60岁的,男性员工和女性员工的人数
mysql>
mysql> select gender, count(*) from emp where age < 60 group by gender;
+--------+----------+
| gender | count(*) |
+--------+----------+
| 女 | 6 |
| 男 | 7 |
+--------+----------+
2 rows in set (0.05 sec)mysql>
案例4:
查询所有年龄小于等于35岁员工的姓名和年龄,并对查询结果按照年龄升序排序,如果年龄相同按入职时间降序排序
mysql>
mysql> select name, age from emp where age <= 35 order by age asc, entrydate desc;
+--------+-----+
| name | age |
+--------+-----+
| 小昭 | 16 |
| 周芷若 | 18 |
| 赵敏 | 18 |
| 张无忌 | 18 |
| 柳岩 | 20 |
| 杨逍 | 28 |
| 常遇春 | 32 |
+--------+-----+
7 rows in set (0.04 sec)mysql>
案例5:
查询性别为男,且年龄在20-40(含)以内的前3个员工信息,对查询的结果按年龄升序排序,年龄相同按入职时间升序排序。
mysql>
mysql> select * from emp where gender = '男' and age between 20 and 40 order by age asc, entrydate asc limit 0, 3;
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| id | workno | name | gender | age | idcard | workaddress | entrydate |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
| 6 | 6 | 杨逍 | 男 | 28 | 123456789012345675 | 北京 | 2006-01-01 |
| 12 | 12 | 常遇春 | 男 | 32 | 423456789012345676 | 北京 | 2037-01-01 |
| 3 | 3 | 韦一笑 | 男 | 38 | 123456789012345672 | 上海 | 2003-03-03 |
+----+--------+--------+--------+-----+--------------------+-------------+------------+
3 rows in set (0.05 sec)mysql>
2.9 执行顺序
执行顺序:
上面我们介绍是编写顺序 , 并不是执行顺序。
执行顺序:
验证执行顺序:
mysql> select name, age from emp e where age > 15 order by age asc;
+--------+-----+
| name | age |
+--------+-----+
| 小昭 | 16 |
| 张无忌 | 18 |
| 赵敏 | 18 |
| 周芷若 | 18 |
| 柳岩 | 20 |
| 杨逍 | 28 |
| 常遇春 | 32 |
| 韦一笑 | 38 |
| 黛绮丝 | 38 |
| 范瑶 | 40 |
| 范冰冰 | 45 |
| 陈友谅 | 53 |
| 张士诚 | 55 |
| 灭绝 | 65 |
| 胡青牛 | 70 |
| 张三丰 | 88 |
+--------+-----+
16 rows in set (0.10 sec)mysql>
思路:
我们给emp这个表起了一个别名e ,如果执行顺序是from—> where—>group by—> having —> select,那么我们在用e来访问name,age 就不会报错。
mysql>
mysql> select e.name, e.age from emp e where e.age > 15 order by age asc;
+--------+-----+
| name | age |
+--------+-----+
| 小昭 | 16 |
| 张无忌 | 18 |
| 赵敏 | 18 |
| 周芷若 | 18 |
| 柳岩 | 20 |
| 杨逍 | 28 |
| 常遇春 | 32 |
| 韦一笑 | 38 |
| 黛绮丝 | 38 |
| 范瑶 | 40 |
| 范冰冰 | 45 |
| 陈友谅 | 53 |
| 张士诚 | 55 |
| 灭绝 | 65 |
| 胡青牛 | 70 |
| 张三丰 | 88 |
+--------+-----+
16 rows in set (0.10 sec)mysql>
那反过来,如果给select中的name 和 age 起一个别名,用这个别名去访问order by 中的age 或者区访问where中的age均会报错。
mysql>
mysql> select e.name ename, e.age eage from emp e where eage > 15 order by eage asc;
1054 - Unknown column 'eage' in 'where clause'
mysql>
3. DQL总结
相关文章:
【数据库】SQL--DQL(初阶)
文章目录 DCL1. 基本介绍2. 语法2.1 基础查询2.2 条件查询2.3 聚合函数2.4 聚合查询2.5 分组查询2.6 排序查询2.7 分页查询2.8 综合案例练习2.9 执行顺序 3. DQL总结 DCL 更多数据库MySQL系统内容就在以下专栏: 专栏链接:数据库MySQL 1. 基本介绍 DQL英…...
【docker】docker的安装
如果之前安装了旧版本的docker我们需要进行卸载: 卸载之前的旧版本 卸载 # 卸载旧版本 sudo apt-get remove docker docker-engine docker.io containerd runc # 卸载历史版本 apt-get purge docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker…...
OC IOS 文件解压缩预览
热很。。热很。。。。夏天的城市只有热浪没有情怀。。。 来吧,come on。。。 引用第三方库: pod SSZipArchive 开发实现: 一、控制器实现 头文件控制器定义: // // ZipRarViewController.h // // Created by carbonzhao on 2…...
python-web应用程序-Django-From组件
python-web应用程序-Django-From组件 添加用户时 原始方法(本质)【麻烦】 def user_add(req):if req.method GET:return render(req,XXX.html)#POST请求处理:XXXXX-用户数据没有校验 -出现错误提示 -页面上的每一个字段都需要我们重新写一遍 -关联数…...
K8s(Kubernetes)常用命令
大家好,当谈及容器编排工具时,Kubernetes(常简称为K8s)无疑是当今最受欢迎和广泛使用的解决方案之一。作为一个开源的容器编排平台,Kubernetes 提供了丰富的功能,可以帮助开发人员和运维团队管理、部署和扩…...
C#-for循环语句
for循环语句 语法: for(初始化变量; 判断条件; 增量表达式) { // 内部代码 } 第一个空(初始表达式): 一般用来声明一个临时的局部变量 用来计数第二个空(条件表达式): 表明进入循环的条件 一个bool类型的值(bool类型 条件表达式 逻辑运算符)第三个空(增量表达式): 使用第一个空…...
css动画案例练习之会展开的魔方和交错的小块
这里写目录标题 一级目录二级目录三级目录 下面开始案例的练习,建议第一个动手操作好了再进行下一个一、交错的小块效果展示1.大致思路1.基本结构2.实现动态移动 2.最终版代码 二、会展开的魔方1.大致思路1.基本结构;2.静态魔方的构建3.让静态的魔方动起来 2.最终版…...
前端逆向之下载canvas引用的图片
前端逆向之下载canvas引用的图片 一、来源二、解决三、如果在Network这里也找不到呢? 一、来源 当我们用dom检查器的时候无法选中想要扒下来的图片,只能选中canvas,这种时候该怎么办呢? 二、解决 这个时候应该换个脑子…...
深度学习手撕代码题
目录: PyTorch实现注意力机制、多头注意力与自注意力Numpy广播机制实现矩阵间L2距离的计算Conv2D卷积的Python和C++实现Numpy实现bbox_iou的计算Numpy实现FocallossPython实现nms、softnmsPython实现BN批量归一化PyTorch卷积与BatchNorm的融合分割网络损失函数Dice Loss代码实…...
vue3 + ts 动态添加路由,刷新页面白屏问题解决方案
1、store 中添加路由的方法 2、main.ts中使用该方法 然后就可以任意刷新页面了,有问题可以随时滴我...........
【Kubernetes】k8s的调度约束(亲和与反亲和)
一、调度约束 list-watch 组件 Kubernetes 是通过 List-Watch 的机制进行每个组件的协作,保持数据同步的,每个组件之间的设计实现了解耦。 用户是通过 kubectl 根据配置文件,向 APIServer 发送命令,在 Node 节点上面建立 Pod 和…...
Java数据结构- Map和Set
目录 1. Map和Set2. Map的使用3. Set的使用 1. Map和Set Java中,Map和Set是两个接口,TreeSet、HashSet这两个类实现了Set接口,TreeMap、HashMap这两个类实现了Map接口。 带Tree的这两个类(TreeSet、TreeMap)底层的数…...
JVM参数配置
JVM参数的三种表示方法 在jvm中,jvm虚拟机参数有以下三种表示方法: 标准参数(-)所有的JVM实现都必须实现这些参数的功能,而且向后兼容非标准参数(-X),默认jvm实现这些参数的功能&…...
Vue 实现的精彩动画效果
在 Vue 开发中,我们可以利用<transition>组件来打造各种令人惊艳的动画效果。下面来详细看看这些有趣的动画效果及其实现代码。 一、缩放类效果 zoom-in(整体放大进入) <template><div><button click"isShow ! …...
JVM类加载机制详解(JDK源码级别)
提示:从JDK源码级别彻底剖析JVM类加载机制、双亲委派机制、全盘负责委托机制、打破双亲委派机制的程序、Tomcat打破双亲委派机制、tomcat自定义类加载器详解、tomcat的几个主要类加载器、手写tomcat类加载器 文章目录 前言一、loadClass的类加载大概有如下步骤二、j…...
美国年轻人热衷床上“摆烂”,沃尔玛发掘床上用品新商机!
美国年轻人近年来热衷于床上“摆烂”生活方式,这反映了他们对舒适放松的追求和现代生活的压力。沃尔玛作为零售业巨头,敏锐地捕捉到这一市场变化,发现了床上用品的新商机。 美国年轻人忙碌中渴望宁静空间。床成为他们放松、逃离现实压力的理想…...
3168. 候诊室中的最少椅子数
给你一个字符串 s,模拟每秒钟的事件 i: 如果 s[i] E,表示有一位顾客进入候诊室并占用一把椅子。如果 s[i] L,表示有一位顾客离开候诊室,从而释放一把椅子。 返回保证每位进入候诊室的顾客都能有椅子坐的 最少 椅子…...
C# PaddleOCR 单字识别效果
C# PaddleOCR 单字识别效果 效果 说明 根据《百度办公文档识别C离线SDKV1.2用户接入文档.pdf》,使用C封装DLL,C#调用。 背景 为使客户、第三方开发者等能够更快速、方便的接入使用百度办公文档识别 SDK、促进百度 OCR产品赋能更多客户,特设…...
pyopengl 立方体 正投影,透视投影
目录 顶点和线的方式 划线的方式实现: 顶点和线的方式 import numpy as np from PyQt5 import QtWidgets from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton from OpenGL.GL import * from OpenGL.GLU import * import sys…...
人工智能任务5-高级算法工程师需要学习哪些课程与掌握哪些能力
大家好,我是微学AI,今天给大家介绍一下人工智能的任务5-高级算法工程师需要学习哪些课程,需要掌握哪些能力。高级算法工程师需要掌握的算法模型有:人脸检测模型MTCNN,人脸识别方法Siamese network、center loss、softm…...
服务器上创建搭建gitlab
一、下载与安装 在主目录操作~ 1.使用wget下载 wget --no-check-certificate https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/gitlab-ce-14.0.1-ce.0.el7.x86_64.rpm 可以在开源软件镜像站选择合适的版本,版本不同页面菜单会稍有差异,此次选…...
LangChain学习之prompt格式化与解析器使用
1. 学习背景 在LangChain for LLM应用程序开发中课程中,学习了LangChain框架扩展应用程序开发中语言模型的用例和功能的基本技能,遂做整理为后面的应用做准备。视频地址:基于LangChain的大语言模型应用开发构建和评估高 2. 先准备尝试调用O…...
基于EasyX的贪吃蛇小游戏 - C语言
游戏基本功能演示: 1.主菜单界面 2.自定难度界面 在这里可以自行设定游戏的难度,包括蛇的移动速度,初始节数,以及默认模式,参考线(网格)。这些设定的数据都会在右上角的游戏属性栏中实时显示。…...
使用Docker辅助图像识别程序开发:在Docker中显示GUI、访问GPU、USB相机以及网络
目录概览 引言安装和配置安装docker安装nvidia-docker在docker中显示GUI在Docker中访问usb相机在Docker镜像中开放端口开启更多的GPU功能支持创建本地镜像中心一些可选参数上传镜像回收空间清理所有的无用镜像清理指定的镜像GPU Docker with Anaconda第一种方式:构建DockerFile…...
Java中常见错误-泛型擦除及桥接方法问题及解决方案
Java中泛型擦除及桥接方法 泛型擦除无界擦除上界擦除下界擦除 桥接方法演示案例wrong1wrong2wrong3right 原理总结 泛型擦除 泛型擦除是Java泛型机制的一个特性,它意味着**在编译期间,所有的泛型信息都会被移除,而在运行时,所…...
Linux 程序守护脚本
引言 程序是由代码形成的,代码是由人写的。只要是人,都会有疏忽的时候,导致写出的程序有bug,当然最严重的bug就是程序闪退。 本文旨在提供一个程序守护脚本,当监测到程序闪退后,立马将程序再起启动&#…...
跨境电商|Facebook Marketplace怎么做?
2016 年,Facebook打造了同名平台 Facebook Marketplace。通过利用 Facebook 现有的庞大客户群,该平台取得了立竿见影的成功,每月访问量将超过 10 亿。对于个人卖家和小企业来说,Facebook Marketplace是一个不错的销货渠道…...
.gitignore 文件
一.什么是 .gitignore 文件 在任何当前工作的 Git 仓库中,每个文件都是这样的: 追踪的(tracked)- 这些是 Git 所知道的所有文件或目录。这些是新添加(用 git add 添加)和提交(用 git commit 提…...
qt中实现多语言功能
qt中实现多语言功能 原理: 其本质就是生成ts文件,然后使用Linguist软件手工翻译,再生成qm文件,最后在主程序的开始加载不同的qm文件,实现多语言。 步骤: 修改程序文件 在pro文件中加入说明 TRANSLATI…...
数据结构与算法之 leetcode 513. 找树左下角的值 (BFS) 广度优先
513. 找树左下角的值 /*** Definition for a binary tree node.* function TreeNode(val, left, right) {* this.val (valundefined ? 0 : val)* this.left (leftundefined ? null : left)* this.right (rightundefined ? null : right)* }*/ /*** param {T…...
社区网站 租用服务器还是只需要购买空间/今日的新闻
上半年,打算把ios开发教程上交了。 计划每周出至少两篇。 教程属于初级入门教程。 敬请期待!!!!...
div+css免费网站模板下载/软文优化
1 什么是板卡文件?首先先介绍一下什么是板卡文件,在安装完Vivado开发工具之后,在安装目录下会有一个board_files的文件夹。例如,Vivado安装在C盘,则board_files文件夹路径为:C:\Xilinx\Vivado\2018.1\data\…...
wordpress全景插件/百度排行榜
服务提供方配置安全验证 前面使用了RestTemplate进行远程接口调用,但要注意,这些Rest服务最终都可能暴露在公网的,任何人都可能调用,如果你的Rest服务属于一些私密信息,这样会导致信息的泄露。 如果想进行安全方面的处…...
做网站后端的是什么部门/seo优化招聘
2019独角兽企业重金招聘Python工程师标准>>> 严格控制session过期方法 Session控制类 <?php /*** Session控制类*/ class Session{/*** 设置session* param String $name session name* param Mixed $data session data* param Int $expire 超时时间(秒…...
网站免费观影怎么做/揭阳新站seo方案
系列文章目录 兼容Oracle与MySQL的那些事 兼容Oracle与MySQL的那些事(分页问题) 兼容Oracle与MySQL的一些事 兼容Oracle与MySQL的那些事【LISTAGG与GROUP_CONCAT】...
大连手机网站建设/自助优化排名工具
http://sujitpal.blogspot.com/2007/04/lucene-search-within-search-with.htmlhttp://blog.csdn.net/lansine2005/article/details/6787472Lucene聚类分组统计功能(grouping)分类: Lucene2011-09-18 16:56 229人阅读 评论(1) 收藏 举报在搜索…...