数据库的一些命令:
退出mysql:exit quit
注释:使用-- 添加单行注释时,–后面一定要加空格,而#没有要求。
多行注释: /* 注释 */
1.DDL操作数据库
1.查询所有的数据库
查询所有的数据库:SHOW DATABASES;
2.创建数据库
创建数据库:CREATE DATABASE 数据库名称;
创建数据库(判断,如果不存在则创建):CREATE DATABASE IF NOT EXISTS 数据库名称;
3. 删除数据库
删除数据库:DROP DATABASE 数据库名称;
删除数据库(判断,如果存在则删除:DROP DATABASE IF EXISTS 数据库名称
4.使用数据库
使用数据库:USE 数据库名称;
查看当前使用的数据库:SELECT DATABASE();
2. DDL操作表
操作表也就是对表进行增(Create)删(Retrieve)改(Update)查(Delete)。
1.查询表
查询当前数据库下所有表名称:SHOW TABLES;
2.查询表结构
DESC 表名称;
3.创建表
创建表:
CREATE TABLE 表名 (
字段名1 数据类型1,
字段名2 数据类型2,
…
字段名n 数据类型n
);
注意:最后一行末尾,不能加逗号
4.删除表
删除表:DROP TABLE 表名;
删除表时判断表是否存在:DROP TABLE IF EXISTS 表名;
5.修改表
1.修改表名:ALTER TABLE 表名 RENAME TO 新的表名;
2.添加一列:ALTER TABLE 表名 ADD 列名 数据类型;
-- 给stu表添加一列address,该字段类型是varchar(50)
alter table stu add address varchar(50);
3.修改数据类型:ALTER TABLE 表名 MODIFY 列名 新数据类型;
-- 将stu表中的address字段的类型改为 char(50)
alter table stu modify address char(50);
4.修改列名和数据类型:ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
-- 将stu表中的address字段名改为 addr,类型改为varchar(50)
alter table stu change address addr varchar(50);
5.删除列:ALTER TABLE 表名 DROP 列名;
-- 将stu表中的addr字段 删除
alter table stu drop addr;
3.DML
DML主要是对数据进行增(insert)删(delete)改(update)操作。
1.添加数据
1.给指定列添加数据:INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…);
2.给全部列添加数据:INSERT INTO 表名 VALUES(值1,值2,…);
3.批量添加数据:
INSERT INTO 表名(列名1,列名2,…) VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
INSERT INTO 表名 VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…)…;
2.修改数据
1.修改表数据:
UPDATE 表名 SET 列名1=值1,列名2=值2,… [WHERE 条件] ;
注意:
1. 修改语句中如果不加条件,则将所有数据都修改!
2. 像上面的语句中的中括号,表示在写sql语句中可以省略这部分
3. 删除数据
1.删除数据:DELETE FROM 表名 [WHERE 条件] ;
4.DQL
1.基础查询
1.查询多个字段:
SELECT 字段列表 FROM 表名;
SELECT * FROM 表名; – 查询所有数据
2.去除重复记录
SELECT DISTINCT 字段列表 FROM 表名;
2.条件查询
SELECT 字段列表 FROM 表名 WHERE 条件列表;
条件列表可以使用以下运算符:
3.模糊查询
模糊查询使用like关键字,可以使用通配符进行占位:
(1)_ : 代表单个任意字符
(2)% : 代表任意个数字符
查询姓’马’的学员信息:
select * from stu where name like '马%';
查询第二个字是’花’的学员信息:
select * from stu where name like '_花%';
查询名字中包含 ‘德’ 的学员信息:
select * from stu where name like '%德%';
4.排序查询
SELECT 字段列表 FROM 表名 ORDER BY 排序字段名1 [排序方式1],排序字段名2 [排序方式2] …;
- ASC : 升序排列 (默认值)
- DESC : 降序排列
注意:如果有多个排序条件,当前边的条件值一样时,才会根据第二条件进行排序
5.聚合函数
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
语法:
SELECT 聚合函数名(列名) FROM 表;
根据id统计人数:
select count(id) from stu;
如果该字段某一行的值为null的话,将不会被统计。但是count(*)却可以统计所有的包括含有null的
6. 分组查询
注意:分组之后,查询的字段为聚合函数和分组字段,查询其他字段无任何意义
举例:查询男同学和女同学各自的数学平均分:
select sex, avg(math) from stu group by sex;
select name, sex, avg(math) from stu group by sex; -- 这里查询name字段就没有任何意义
举例:查询男同学和女同学各自的数学平均分,以及各自人数,要求:分数低于70分的不参与分组,分组之后人数大于2个的
select sex, avg(math),count(*) from stu where math > 70 group by sex having count(*) > 2;
where 和 having 区别:
- 执行时机不一样:where 是分组之前进行限定,不满足where条件,则不参与分组,而having是分组之后对结果进行过
滤。 - 可判断的条件不一样:where 不能对聚合函数进行判断,having 可以。
7.分页查询
如下图所示,大家在很多网站都见过类似的效果,如京东、百度、淘宝等。分页查询是将数据一页一页的展示给用户看,用
户也可以通过点击查看下一页的数据。
语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引 , 查询条目数;
起始索引 = (当前页码 - 1) * 每页显示的条数