前言:
最近学习了MySQL,便将所学的知识归档一下吧!希望对您有所帮助!
启动/停止 数据库命令:net start mysql / net stop mysql
登录数据库: mysql -u 用户名 -p
显示数据库列表:show databases;
显示库中的数据表:use mysql; show tables;
新建数据库: create database 库名 default charset utf8;
删除数据库: drop database 库名;
数据库常见单词表:
asc
升序
int
整型
auto_increment
自动增长
into
往...内部
avg
平均
is not null
不为空
between and
两者之间范围
is null
是空
char
固定长度字符型
join
连接
check
检查约束
left
左
count
技术
like
模糊匹配
create database
创建数据库
limit
限制范围
create table
创建表
max
最大值
datetime
日期数据类型
min
最小值
default
缺省值
not null
非空
delete
删除
null
允许空
desc
降序
on
连接条件
distinct
去重复
order by
排序
double
双精度浮点数
primary key
主键PK
drop database
删除数据库
references
引用
drop table
删除表
right
右
exists
是否存在
select
查询
float
单精度浮点数
set
设置
foreign key
外键
sum
求和
from
来源
unique
唯一性约束
group by
分组
update
更新
having
分组过滤
values
值
in
指定清单内
varchar
可变长度字符型
insert
插入
where
条件筛选
单词表附件下载地址:点我下载
2021/10/11日 mysql作业答案分享:
作业1:部门-员工表
部门表【Dept】
编号 |
字段名称 |
字段描述 |
数据类型 |
备注 |
1 |
did |
部门ID |
int |
主键,自增 |
2 |
pdid |
上级部门编号 |
int |
|
3 |
dname |
部门名称 |
varchar(20) |
唯一 |
4 |
dtel |
部门电话 |
varchar(20) |
唯一 |
5 |
dcreatetime |
创建日期 |
datetime |
|
员工表【Emp】
编号 |
字段名称 |
字段描述 |
数据类型 |
备注 |
1 |
eid |
编号 |
int |
主键,自增 |
2 |
ename |
员工姓名 |
varchar(20) |
|
3 |
sex |
员工性别 |
char(1) |
'F或'M'' |
4 |
salary |
员工工资 |
float |
|
5 |
hiredate |
入职日期 |
datetime |
|
6 |
firedate |
离职日期 |
datetime |
|
7 |
did |
部门ID |
int |
外键 |
题目答案:(注:此答案仅适用于建表以及插入数据答案中的数据表使用)
(1) 查询部门id为2的员工
手写代码:SELECT ename FROM emp where did=2;
(2) 查询员工信息并按入职时间降序排列
手写代码:SELECT * from emp ORDER BY hiredate desc;
(3) 查询薪水低于3000的员工
手写代码:SELECT ename from emp where salary<3000;
(4) 查询薪水在2000~4000之间的员工
手写代码:select ename from emp where salary BETWEEN 2000 and 4000;
(5)
查询第3条到第5条记录的员工信息
手写代码:select * from emp LIMIT 2,3;
(6) 查询出2006年(含)以后入职的员工
手写代码:SELECT ename from emp where hiredate>='2006-1-1'
(7) 查询每个部门的员工数
手写代码:
SELECT count(*)as 部门员工数 from emp where did=1;
SELECT count(*)as 部门员工数 from emp where did=2;
SELECT count(*)as 部门员工数 from emp where did=3;
(8) 按性别统计员工人数
手写代码:
SELECT count(*) as 部门员工数 from emp where sex='F';
SELECT count(*) as 部门员工数 from emp where sex='M';
(9) 查询各部门中最高工资、最低工资、平均工资
手写代码:SELECT max(salary) as 最高工资 ,min(salary) as 最低工资,avg(salary) as 平均工资 from emp group by did;
(10) 查询所有为员工按薪水降序,入职时间升序排列
手写代码:SELECT ename from emp order by salary asc, hiredate desc;
建表以及插入数据答案:
create database zys; --建数据库 zys为数据库名,可改
use zys; --使用数据库
create table dept( --新建数据表
did int PRIMARY key auto_increment,
pdid int,
dname varchar(20) UNIQUE,
dtel VARCHAR(20) unique,
dceatetime datetime
);
create table emp( --新建数据表
eid int PRIMARY key auto_increment,
ename varchar(20),
sex CHAR(1) check(sex='F' or sex='M'),
salary float,
hiredate datetime,
diredate datetime,
did int,
FOREIGN key (did) REFERENCES dept(did)
);
INSERT into dept value(1,1,'部门1','0710-110','2021-10-1'); --以下为插入数据库
INSERT into dept value(2,3,'部门2','0710-6900','2021-10-2');
INSERT into dept value(3,3,'部门3','0710-560','2021-10-6');
INSERT into emp value(1,'张三','F',2500,'2021-5-1','2021-10-1',1);
INSERT into emp value(2,'李二','M',4000,'2021-5-15','2021-10-1',3);
INSERT into emp value(3,'王四','F',6000,'2021-7-11','2021-10-1',2);
INSERT into emp value(4,'王七','F',4000,'2021-2-15','2021-10-1',1);
INSERT into emp value(5,'王六','F',2000,'2021-2-10','2021-10-1',2);
2021年10月14日作业
图书-订单-明细表,使用SQL语句完成下面任务:
图书表【Books】
编号 字段名称 字段描述 数据类型 备注
1 bid 图书编号 int 主键,自增
2 bname 书名 varchar(50)
3 bauthor 作者 varchar(20)
4 bpress 出版社 varchar(50)
5 purchaseprice 图书进价 float
6 salesprice 图书售价 float
7 amount 图书库存量 int
订单表【Orders】
编号 字段名称 字段描述 数据类型 备注
1 oid 订单编号 int 主键,自增
2 otime 下订单时间 datetime
3 uname 客户名 varchar(20)
4 uphone 客户电话 varchar(50)
5 uaddress 客户地址 varchar(100)
6 postalcode 邮编 varchar(6)
订单明细表【OrdersDetail】
编号 字段名称 字段描述 数据类型 备注
1 odid 订单明细编号 int 主键,自增
2 oid 订单编号 int 外键
3 bid 图书编号 int 外键
4 amount 购买数量 int
⦁ 查询作者金庸的图书信息,只列出书名和出版社
手写代码:
⦁ 查询“邮电出版社”出版的所有图书信息
手写代码:
⦁ 查询图书库存量低于100的图书信息
手写代码:
⦁ 查询售价在20~40之间的图书信息
手写代码:
⦁ 查询售价在30以上且库存量不足200的图书信息
手写代码:
⦁ 按出版社升序,售价降序显示所有图书信息
手写代码:
⦁ 根据图书编号排序,查询图书表中第2-4条记录
手写代码:
⦁ 查询每本图书的利润(利润=售价-进价)
手写代码:
⦁ 查询客户许晴购买图书共花了多少钱
手写代码:
⦁ 查询"许晴"的最近的一笔订单
手写代码:
create database zy1;
use zy1;
CREATE table books(
bid int PRIMARY key auto_increment,
bname VARCHAR(50),
bauthor varchar(20),
bpress varchar(50),
purchaseprice float,
salesprice float,
amount int
);
CREATE table orders(
oid int PRIMARY key auto_increment,
otime datetime,
uname varchar(20),
uphone varchar(50),
uaddress VARCHAR(100),
postalcode varchar(6)
);
create table ordersdetail(
odid int PRIMARY key auto_increment,
oid int,
FOREIGN key (oid) REFERENCES orders(oid),
bid int,
FOREIGN key (bid) REFERENCES books(bid),
amount int
);
INSERT into books(bid,bname,bauthor,bpress,purchaseprice,salesprice,amount)
value(1000,'梦里花落知多少','郭敬明','邮电出版社',24.80,37.90,200);
INSERT into books(bid,bname,bauthor,bpress,purchaseprice,salesprice,amount)
value(1001,'笑傲江湖','金庸','人民出版社',31.50,42.10,100);
INSERT into books(bid,bname,bauthor,bpress,purchaseprice,salesprice,amount)
value(1002,'倚天屠龙记','金庸','邮电出版社',40.00,48.00,80);
INSERT into books(bid,bname,bauthor,bpress,purchaseprice,salesprice,amount)
value(1003,'平凡的世界','路遥','人民出版社',45.90,53.80,115);
INSERT into orders(otime,uname,uphone,uaddress,postalcode)
value('2010-02-04','许晴','13456667888','襄樊建华路','440110');
INSERT into orders(otime,uname,uphone,uaddress,postalcode)
value('2010-05-01','张磊','13456666666','武汉紫阳路','410908');
INSERT into ordersdetail(oid,bid,amount)
VALUE(1,1000,1);
INSERT into ordersdetail(oid,bid,amount)
VALUE(2,1001,2);
-- 第一题:查询作者金庸的图书信息,只列出书名和出版社
SELECT bname,bpress from books where bauthor='金庸';
-- 第二题:查询“邮电出版社”出版的所有图书信息
SELECT * from books where bpress='邮电出版社';
-- 第三题:查询图书库存量低于100的图书信息
select * from books where amount<100;
-- 第四题:查询售价在20~40之间的图书信息
select * from books where salesprice BETWEEN 20 and 40;
-- 第五题:查询售价在30以上且库存量不足200的图书信息
SELECT * from books where salesprice>30 and amount<200;
-- 第六题:按出版社升序,售价降序显示所有图书信息
select * from books ORDER BY bpress asc,salesprice desc;
-- 第七题:根据图书编号排序,查询图书表中第2-4条记录
select * from books order by bid limit 1,3;
-- 第八题:查询每本图书的利润(利润=售价-进价)
select bname,salesprice-purchaseprice as 利润 from books;
-- 第九题:查询客户许晴购买图书共花了多少钱
SELECT
-- 第十题:查询"许晴"的最近的一笔订单
SELECT * from orders where uname='许晴' ORDER BY otime desc LIMIT 1;
注:将会持续学习持续更新此帖。
发表评论