数据库MySQ语法的基本使用

MySQL的基本语句
– 创建数据库
create database 数据库名;
– 创建表
create table 表名(
列名 类型 约束,
列名2 类型 约束
);
– 类型:char、varchar、int、double、date 等
– 约束:primary key、unique、not null、foreign key等

– 增
insert into 表名(列名,…) values(‘值’,…);
– 改
update 表名 set 列名=值,… where 条件;
– 删
delete from 表名 where 条件;

– 查
select
distinct * | 列名,…
from 表名
where 条件
group by 分组
having 分组条件
order by 列名 asc|desc
limit 开始索引,每页显示个数

单表的基本查询

2.1 排序

– order by 排序关键字
– asc 升序、desc 降序
select * from 表名 order by 排序列 asc | desc;

– 练习
– 1.使用价格排序(降序)
select * from product order by price desc;

– 2.在价格排序(降序)的基础上,以分类排序(降序)
select * from product order by price desc, category_id desc;

– 3.显示商品的价格(去重复),并排序(降序)
select distinct price from product order by price desc;

2.2 聚合

  • 聚合函数:SQL基本函数,聚合函数对一组值执行计算,并返回单个值,也被称为组函数。

  • 常见聚合函数:

    • 除 COUNT 以外,聚合函数忽略空值,如果COUNT函数的应用对象是一个确定列名,并且该列存在空值,此时COUNT仍会忽略空值。

    – 统计个数:count
    – 最大值:max
    – 最小值:min
    – 求和:sum
    – 平均值:avg

– 练习
– 聚合函数
– 1 统计个数
– count(列名 | * | 数字)
select count(category_id) from product; # 结果:12,忽略了空值
select count(*) from product; # 结果:13
select count(1) from product; # 结果:13

– 2 价格最大值
select max(price) from product;

– 3 价格最小值
select min(price) from product;

– 4 价格求和
select sum(price) from product;

– 5 价格平均值
select avg(price) from product;

2.3 分组

select 分组列 | 聚合函数 from 表名 group by 分组列 having 分组条件;

– 练习
– 分组
– #1 统计各个分类商品的个数
select category_id , count(1) from product group by category_id

– #2 统计各个分类商品的个数,且只显示个数大于1的信息
select category_id , count(1) from product group by category_id having count(1) > 1

select category_id , count(1) as c from product group by category_id having c > 1

2.4 分页

– limit 开始索引,每页显示个数
---- 开始索引,从0开始。
– 第一页,每页3条
select * from product limit 0,3;
– 第二页,每页3条
select * from product limit 3,3;
– 第三页,每页3条
select * from product limit 6,3;
– 第pageNum页,每页pageSize条
select * from product limit (pageNum - 1) * pageSize, pageSize;

多表的基本连查

3.1 表与表之间的关系

  • 一对多
  • 多对多
  • 一对一

3.2 一对多

  • 一对多关系:通过主外键关系,形成一对多关系。

    • 一表:又称为主表,主表需要提供主键。
    • 多表:又称为从表,从表需要提供外键。
  • 实例:分类 + 商品

    • 一个分类,拥有多个商品,称为一对多关系。

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Nm3d1ZDR-1600502227433)(assets/image-20200910113002484.png)]

  • 需要通过外键约束,描述主外键关系

alter table 从表 add constraint [外键名称] foreign key (外键) references 主表 (主键)
– 添加外键约束时,如果填写“外键名称”,是为了删除外键约束

create database en002;
use en002;
– 一对多关系
– 主表(分类表)
create table tb_category(
cid int primary key ,
cname varchar(50)
);

– 从表(商品表)-- 注意 外键类型 必须 与主表主键类型一致
create table tb_product(
pid int primary key,
pname varchar(50),
category_id int
);

– 主外键关系
alter table tb_product add constraint foreign key (category_id) references tb_category (cid);

3.3 多对多

  • 多对多:提供一个中间表,将一个多对多拆分成了2个一对多

    • 中间表要求:至少提供2个外键列
  • 实例:订单 + 商品

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7d6l2zz6-1600502227444)(assets/image-20200910114829948.png)]

  • 练习:

– 多对多
– 1 主表(订单表)
create table tb_order(
oid int primary key,
price double
);

– 2 主表(商品表)[已有]

– 3 中间表
create table tb_order_product(
order_id int,
product_id int
);

– 4 中间表 和 订单表 主外键关系
alter table tb_order_product add constraint foreign key (order_id) references tb_order (oid);

– 5 中间表 和 商品表 主外键关系
alter table tb_order_product add constraint foreign key (product_id) references tb_product (pid);

Guess you like

Origin blog.csdn.net/li13429743580/article/details/108682475