1.常用指令
常用指令如下图所示:
1.set names gbk
改变cmd编码方式
2.cmd进入mysql
mysql -uroot -proot
3.建立数据库
create database 数据库名;
4.显示数据库
show databases;
5.进入数据库
use day02;
6.查看正在使用的数据库
select database();
7.查看表的内容
select * from wemeet;
8.表中插入内容
INSERT INTO wemeet(ID,PASSWORD)VALUES (132856616,‘123456789’);
INSERT INTO wemeet VALUE(1,‘小米mix8’);
9.删除表的内容
DELETE FROM wemeet WHERE ID=1;
2.例子
商品分类:
1.分类的ID
2.分类名称
3.分类描述
create table category(
cid int primary key auto_increment,
cname varchar(10),
cdesc varchar(31)
)
insert into category values(null, ‘手机数码’, ‘电子厂品,黑马生产’);
insert into category values(null, ‘鞋靴箱包’, ‘江南皮革厂倾情打造’);
insert into category values(null, ‘香烟酒水’, ‘黄鹤楼,茅台,二锅头’);
insert into category values(null, ‘酸奶饼干’, ‘娃哈哈,蒙牛酸酸乳’);
insert into category values(null, ‘馋嘴零食’, ‘瓜子花生,八宝粥’);
所有商品
1.商品ID
2.商品名称
3.商品的价格
4.生产价格
5.商品分类ID
商品和商品分类:所属关系
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
//timestamp默认当前时间
insert into product value(null,‘小米mix8’,998,null,1);
insert into product value(null,‘锤子’,2888,null,1);
insert into product value(null,‘老村长’,5,null,3);
insert into product value(null,‘劲酒’,35,null,3);
insert into product value(null,‘小熊饼干’,1,null,4);
insert into product value(null,‘薯片’,5,null,5);
insert into product value(null,‘旺旺大饼’,1,null,5);
查询所有的商品 select选择显示哪些列的内容
select * from product;
查询商品名称和商品价格
select pname, price from product;
别名查询: as的关键字 as关键字可以省略
表别名
select p.pname, p.price from product as p;
列别名
select pname as 商品名称, price as 商品价格 from product;
去掉重复的值
查询商品的所有的价格
select price from product;
select distinct price from product;
select运算查询 *代表所有的列(仅仅在所有查询结果上做了运算+ - * /)
select , price1.5 as 折后价 from product;
条件查询(where 关键字)
指定条件,确定要操作的记录
查询商品价格>60元的所有商品信息
select * from product where price>60;
关系运算符:> >= < <= !=
<> : 不等于 标准sql语法
!= : 非标准
大于小于 >10 and <100 或 select * from product where price between 10 and 100
逻辑运算: and or not
复杂查询
like: 模糊查询
-: 代表的是一个字符
%: 代表的是多个字符
查询出名字中带有饼的所有商品 ‘%饼%’
select * from product where pname like ‘%饼%’; //不论第几个
查询第三个名字是饼的所有商品 ‘__饼%’
select * from product where pname like ‘__饼%’; //第二个字
in 在某个范围中获得值
查询出商品分类ID在1,4,5里面的所有商品
select * from product where cno in (1,4,5);
排序查询:order by 关键字 方式
asc:升序(默认)
desc: 降序
查询所有商品,按照价格进行排序
select * from product order by price desc;
查询名称中有 小 的商品,按价格降序排序
select * from product where pname like ‘%小%’;
2.排序
select * from product where pname like '%小% order by;
聚合函数
sum() :求和
avg() :求平均值
count: 统计数量
max: 最大值
min: 最小值
1.获得所有商品价格总和:
select sum(price) from product;
2.获得所有商品价格平均价格:
select avg(price) from product;
3.获得所有商品的个数
select count(*) from product;
注意: where条件后面不能接聚合函数
select * from product where price > avg(price);
4.查出商品价格大于平均价格的所有商品
.查出所有商品
select * from product;
平均价格
select avg(price) from product;
子查询
select * from product where price > (select avg(price) from product);
分组: group by
1.根据cno字段分组,分组后统计结果 -根据每组元素个数
select cno, count(*) from product group by cno;
2.根据cno分组,分组后统计每组商品的平均价格,并且商品平均价格>60
select cno, avg(price)
from product group by cno
having avg(price) > 60;
having关键字,可以接聚合函数,出现在分组之后
where关键字后不可接聚合函数,出现在分组前
selectl编写顺序
S F W G H O
select …from…where…group by…having…order by
执行顺序
F…W…G…H…S…O
from…where…group by…having…select…order by
从哪张表 条件判断 对表分组 条件筛选 控制显示的 结果排序
create table category(
cid int primary key auto_increment,
cname varchar(10),
cdesc varchar(31)
);
insert into category values(null, '手机数码', '电子厂品,黑马生产');
insert into category values(null, '鞋靴箱包', '江南皮革厂倾情打造');
insert into category values(null, '香烟酒水', '黄鹤楼,茅台,二锅头');
insert into category values(null, '酸奶饼干', '娃哈哈,蒙牛酸酸乳');
insert into category values(null, '馋嘴零食', '瓜子花生,八宝粥');
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
pdate timestamp,
cno int
);
insert into product value(null,'小米mix8',998,null,1);
insert into product value(null,'锤子',2888,null,1);
insert into product value(null,'老村长',5,null,3);
insert into product value(null,'劲酒',35,null,3);
insert into product value(null,'小熊饼干',1,null,4);
insert into product value(null,'薯片',5,null,5);
insert into product value(null,'旺旺大饼',1,null,5);
//插入数据会失败
insert into product value(null,'充气的',1,null,12);
多表之间关系如何来维护?
外键约束: foreign key
alter table product add foreign key(cno) references category(cid);
网上商城市里的分析:用户购物流程
用户表(用户的ID,用户名,密码,手机)
create table user(
uid int primary key auto_increment,
username varchar(31),
password varchar(31),
phone varchar(11)
);
insert into user values(1,'zhangsan','123','13811118833')
订单表(订单编号,总价,订单时间,地址,外键用户的ID)
create table orders(
oid int primary key auto_increment,
sum int not null,
otime timestamp,
address varchar(100),
uno int,
foreign key(uno) references user(uid)
);
insert into orders values(1,200,null,'黑马前台旁边小黑屋',1);
insert into orders values(2,250,null,'黑马后台旁边1702',1);
商品表(商品ID,商品名称,商品价格,外键cno)
create table product(
pid int primary key auto_increment,
pname varchar(10),
price double,
cno int,
foreign key(cno) references category(cid)
);
insert into product value(null,'小米mix8',998,1);
insert into product value(null,'锤子',2888,1);
insert into product value(null,'老村长',5,3);
insert into product value(null,'劲酒',35,3);
insert into product value(null,'小熊饼干',1,4);
insert into product value(null,'薯片',5,5);
insert into product value(null,'旺旺大饼',1,5);
商品分类表(分类ID,分类名称,分类描述)
create table category(
cid int primary key auto_increment,
cname varchar(15),
cdesc varchar(100)
);
insert into category values(null, '手机数码', '电子厂品,黑马生产');
insert into category values(null, '鞋靴箱包', '江南皮革厂倾情打造');
insert into category values(null, '香烟酒水', '黄鹤楼,茅台,二锅头');
insert into category values(null, '酸奶饼干', '娃哈哈,蒙牛酸酸乳');
insert into category values(null, '馋嘴零食', '瓜子花生,八宝粥');
订单项:中间表(订单ID,商品ID,商品数量,订单项总价)
//名字不重复
create table orderitem(
ono int,
pno int,
foreign key(ono) references orders(oid),
foreign key(pno) references product(pid),
ocount int,
subsum double
);
--给1号订单添加商品 200块钱商品
insert into orderitem values(1,7,100,100);
insert into orderitem values(1,5,20,100);
--给2号订单添加商品 250块钱商品
insert into orderitem values(2,4,1,35);
insert into orderitem values(2,5,10,50);