导入数据
- 登录mysql数据库管理系统
mysql -uroot -pXXX
- 查看有哪些数据库
show databases; (这个不是SQL语句,属于MySQL的命令。)
- 创建属于我们自己的数据库
create database db1; (这个不是SQL语句,属于MySQL的命令。)
- 使用bjpowernode数据
use db1; (这个不是SQL语句,属于MySQL的命令。)
- 查看当前使用的数据库中有哪些表?
show tables; (这个不是SQL语句,属于MySQL的命令。)
- 初始化数据
source D:\course\05-MySQL\resources\db1.sql
DQL概述
DQL英文全称是Data Query Language(数据查询语言),数据查询语言,用来查询数据库中表的记录。关键字:select
基础查询
1、 查询多个字段
select 字段名1,字段名2,字段名3,.... from 表名;
SELECT * FROM 表名 ;#实际开发中不建议使用*,效率较低。
标准sql语句中要求字符串使用单引号括起来。虽然mysql支持双引号,尽量别用。
2、 字段设置别名
SELECT 字段1 [ AS 别名1 ] , 字段2 [ AS 别名2 ] ... FROM 表名;
SELECT 字段1 [ 别名1 ] , 字段2 [ 别名2 ] ... FROM 表名;
3、去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
条件查询
1、语法
SELECT 字段列表 FROM 表名 WHERE 条件列表 ;
执行顺序:from -> where -> select (先from,然后where,最后select)
2、条件
比较运算符:
注意:
1、between and在使用的时候必须左小右大。
2、between and除了可以使用在数字方面之外,还可以使用在字符串方面。(用在字符串左闭右开)
3、在数据库当中NULL不是一个值,代表什么也没有,为空。空不是一个值,不能用等号衡量。必须使用 is null或者is not null
4、in等同于or;not in: 不在这几个值当中
逻辑运算符:
聚合函数
将一列数据作为一个整体,进行纵向计算 。所有的分组函数都是对“某一组”数据进行操作的。分组函数一共5个。分组函数还有另一个名字:多行处理函数。多行处理函数的特点:输入多行,最终输出的结果是1行。
1、语法
SELECT 聚合函数(字段列表) FROM 表名 ;
注意:
- 1、NULL值是不参与所有聚合函数运算的。聚合函数自动忽略NULL。
- 2、SQL语句当中有一个语法规则,分组函数不可直接使用在where子句当中,因为group by是在where执行之后才会执行的。
- 3、count(*)和count(具体的某个字段),他们有什么区别?
count(*):不是统计某个字段中数据的个数,而是统计总记录条数。(和某个字段无关)
count(每个字段): 表示统计comm字段中不为NULL的数据总数量。 - 4、所有数据库都是这样规定的,只要有NULL参与的运算结果一定是NULL。解决方案:使用ifnull函数,ifnull(可能为NULL的数据,被当做什么处理) : 属于单行处理函数。
分组查询
- group by : 按照某个字段或者某些字段进行分组。
- having : having是对分组之后的数据进行再次过滤。
1、语法
SELECT 字段列表 FROM 表名 [ WHERE 条件 ] GROUP BY 分组字段名 [ HAVING 分组后过滤条件 ];
2、注意事项
• 分组函数一般都会和group by联合使用,这也是为什么它被称为分组函数的原因。
• 分组之后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义。
• 任何一个分组函数都是在group by语句执行结束之后才会执行的。
• 执行顺序: where > 聚合函数 > having 。
• 支持多字段分组, 具体语法为 : group by columnA,columnB
3、where与having区别
- 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
- 判断条件不同:where不能对聚合函数进行判断,而having可以。
排序查询
1、语法
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1 , 字段2 排序方式2 ;
2、排序方式
- ASC : 升序(默认值)
- DESC: 降序
注意事项:
• 如果是升序, 可以不指定排序方式ASC ;
• 如果是多字段排序,当第一个字段值相同时,才会根据第二个字段进行排序 ;
分页查询
1、语法
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数 ;
注意事项:
• 起始索引从0开始,起始索引 = (查询页码 - 1)* 每页显示记录数。
• 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是LIMIT。
• 如果查询的是第一页数据,起始索引可以省略,直接简写为 limit 10。