数据库:能够存储数据的仓库,可以永久存储
mysql>show databases; -- 查询当前所有的数据库名称
sql语句:DDL语句、DML语句、DQL语句
DDL语句:数据库定义语句:创建数据库、修改数据库、查询数据库、创建表、删除表、修改表、查询表
create database 数据库名; -- 创建数据库
create database if not exists 数据库名; -- 如果不存在该数据库名称,创建一个新的数据库
show create database 数据库名; -- 查看当前创建数据库的字符集
alter database 数据库名称 default character set gbk; -- 修改数据库默认的字符集
drop database 数据库名; -- 删除数据库
drop database if exists 数据库名; -- 如果存在数据库,删除该数据库
show variables like '%characters%'; -- 默认查询
-- 创建表的格式
create table 表名(
列名1 字段类型1,
列名2 字段类型2,
列名3 字段类型3,
......
列名n 字段类型n
);
show tables; -- 查看数据库存在哪些表
desc 表名; -- 查看当前表的结果
alter table 表名 add 列名 字段类型; -- 修改表
alter table 表名 change 旧列名 新列名 字段类型; -- 修改表中字段的名称
alter table 表名 modify 列名称 字段类型; -- 修改表中的字段类型
alter table 当前表名 rename to 新的表名; -- 修改表名
alter table 表名 drop 列名; -- 删除表中某一列
drop table 表名; --删除表
create table 新表名 like 其他表名; -- 复制表
DML语句:操作表中记录:delete、create、update
-- 给表中插入数据
-- 默认全部插入数据
insert into 表名(列名1,列名2,....列名n) values(值1,值2,值3,.....值n);
-- 部分插入
insert into 表名(列名1,列名2) values (值1,值2);
-- 修改表中记录
update 表名 set 字段名称 = 值; -- 批量修改,不推荐
update 表名 set 字段名称 = 值 where 条件语句; -- 带条件修改
-- 删除数据
delete from 表名; -- 删除全表数据
delete from 表名 where 条件; -- 带条件删除数据
DQL语句:查询语句:基本查询、条件查询、模糊查询、排序查询、聚合函数、分页查询、分组查询
-- 基本查询
select * from 表名; -- 查询所有字段
select 查询字段1,查询字段2,.... from 表名; -- 查询某些字段
-- where条件查询:基本where语句查询
运算符号:<,>,<=,>=,=
逻辑符号:!=,<>(不等于)
并列关系:&&,and
between 条件1 and 条件2
或的关系:||,or
in(集合)
is null:某个字段为空
is not null:不为空
-- 带模糊条件的查询
关键字:like
select 字段名称 from 表名 where 字段名称 like '占位符号';
占位符号:%:包含的字符,包含多个字符,可以代表任意字符
-:代表单个字符
-- 聚合函数
count:统计表的总记录数
sum(列名):求和函数
max(列名):求最大值
min(列名):求最小值
avg(列名):平均分
-- 排序查询:order by
select 字段名称 from 表名 order by 字段名称 排序方式;
asc:升序(默认按照升序排序) ; desc:降序
-- 分组排序:group by
查询的字段:分组的字段,不能是聚合函数
-- 筛选:having
having后面可以使用聚合函数
分页查询:
limit 起始行数(当前索引:从0开始),每页显示的条数
起始行数=(当前页码数-1)*每页显示的条数
多表查询:查询多个表中多个字段
笛卡尔乘积、内连接、外连接、子查询
1)笛卡尔乘积:A表中所有记录*B表中所有记录(字段冗余)
解决笛卡尔乘积:1)查询哪些表;
2)查询这些表中的哪些字段;
3)这多个表的连接条件(外键)
2)内连接:隐式内连接、显示内连接
(1)隐式内连接:基本的where语句 连接条件
(2)显示内连接:select xxx from 表名1 inner(可以省略) join 表名2 on 连接条件
3)外连接:左外连接、右外连接
(1)左外连接:将左表中的数据全部显示,以及和右表产生的交集数据
select
字段名称1,
字段名称2,
......
from 左表名 left outer(省略) join 右表名
on 连接条件(交集数据)
(2)右外连接:将右表中的数据全部显示,以及和左表产生的交集数据
select
字段名称1,
字段名称2,
......
from 右表名 right outer(省略) join 左表名
on 连接条件(交集数据)
4)子查询
单行单列:利用运算符:<=,>=,=,...
多行单列:并集 in(值1,值2,.....)
多行多列:将一个表中查询的数据当作虚表,查询嵌套查询