-- root用户
-- 创建用户
CREATE USER xxx@'%' IDENTIFIED BY'1234'
-- 权限仓库
GRANT ALL ON warehouse.* TO xxx@'%'
SHOW GRANTS
USE warehouse
SELECT DATABASE()
SHOW TABLES
/*
脚本中有创建的语句,但是不会执行,需要手动创建数据
*/
-- 查看信息
SELECT * FROM warehouse.s_list
SELECT * FROM warehouse.s_people
SELECT * FROM warehouse.s_supplier
SELECT * FROM warehouse.s_warehouse
-- 查看表结构
DESC warehouse.s_list
DESC warehouse.s_people
DESC warehouse.s_supplier
DESC warehouse.s_warehouse
/*
投影查询---排序
解释:对查询到的数据进行排序
语法:select 字段信息 from 表名 order by 排序字段 desc/asc从大到小/从小到大
默认按照自然顺序从小到大 asc(升序),desc(降序)
排序规则:
order by 后加一个字段名,获取的信息会以该字段进行排序
order by 字段1,字段2等多个字段联合排序
*/
-- 希望获取仓库信息并且按照面积进行排序
SELECT w_id,w_city,w_area FROM s_warehouse ORDER BY w_area
-- 获取每一个人的工资,进行排序
SELECT * FROM s_people ORDER BY p_wages
-- 工资大于1230 工资减去100,工资小于等于 加500
SELECT s_id,p_wages,IF(p_wages>1230,p_wages-100,p_wages+500)chsal,s_id FROM s_people
-- 时间降序显示订单信息
SELECT * FROM s_list ORDER BY l_date DESC
/*
选择查询
解释:根据具体的需求获得精确的数据,对投影获取的数据进行筛选和过滤
语法:
普通条件查询:select 字段列表/表达式/函数 from 表名 where 条件表达式
分组条件查询:
*/
/*
普通条件的选择查询;
解释:当where 后面的条件满足的时候,获取对应字段信息
表达式:
条件运算符
= 等于
!=或<> 不等于
> 大于
< 小于
<= 小于等于
>= 大于等于
is null或is not null为空或不为空
between and 两者之间
in 在……范围内
like 匹配信息
regexp 正则表达式
逻辑运算符
and 并且
or 或者
! 非
*/
INSERT INTO w_wwarehouse(w_id,w_city,w_area) VALUES
('WH5','广州',560)
-- 获取地址在北京的仓库信息
DESC w_supplier
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_add='北京'
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_add!='北京'-- 不等于
-- 获取面积不是500的仓库信息
SELECT w_id,w_city,w_area FROM w_wwarehouse WHERE w_area>500
-- 获取仓库面积大于等于300的仓库信息
SELECT w_id,w_city,w_area FROM w_wwarehouse WHERE w_area>=300
INSERT INTO w_people(w_id,p_id,p_wages) VALUES
('WH2','E1',1220),
('WH1','E3',1210),
('WH2','E4',1250),
('WH3','E5',1230);
-- 获取工资1300到200之间的员工信息
SELECT w_id,p_id,p_wages FROM w_people WHERE p_wages BETWEEN 200 AND 1300
SELECT w_id,p_id,p_wages FROM w_people WHERE p_wages>=200 AND p_wages<=1300
-- 编号在s2,s3,s6,s8,s9的供应商信息
SELECT s_id,s_name,s_add FROM w_supplier
WHERE s_id='s2 ' OR s_id='S3' OR s_id='S6'
-- IN 表达式 字段 in(值1,值2,值3)只要字段存在就满足条件,不在就是 not in
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_id IN('s2','S3','S6','S8')
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_id NOT IN('s2','S3','S6','S8')
-- 查询供应商名字中带电子的供应商信息
-- like 模糊匹配,有两个匹配符号:%(0个或多个任意字符) _(匹配一个任意字符)
-- 语法:字段 like '匹配表达式'
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name LIKE '%电子%'
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name NOT LIKE '%电子%'
-- 查询供应商名字的第一个字是华的供应商信息
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name LIKE '华%'
-- 查询供应商名字的第二个字是华的供应商信息
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name LIKE '_华%'
/*
选择查询----正则表达式
解释:匹配信息
语法:
where 字段 regexp‘正则表达式’
正则约束:
^匹配开始字符,以……开始 例如:'^A'以A开头
$匹配结束字段,以……结束 例如:'A$'表示以A结束
.匹配一个字符, 例如:'A.B'表示A和B中间有一个字符
*匹配0个或多个字符,例如'A*'表示以A开头任意字符串
+匹配一个或多个,例如'A+'表示A后面有一个或多个字符
字符串 匹配信息,只要信息里需要包含字符串
[字符集合]匹配的是字符集合中任意字符,只要信息中包含就满足条件
[^字符集合]匹配不包含字符集合的信息
字符串{n,}匹配信息中至少包含字符串n次
字符串{n,m}匹配的是信息中至少包含字符串n次,最多包含字符串m次
*/
-- 对供应商进行匹配
SELECT s_id,s_name,s_add FROM w_supplier
-- 包含电子
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name REGEXP'电子'
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name REGEXP'.华'
-- 添加信息
INSERT INTO w_wwarehouse(w_id,w_city,w_area)VALUES('WH6','武汉',NULL)
-- 查询面积为不为空的仓库信息
SELECT * FROM w_wwarehouse WHERE w_area IS NOT NULL
-- 检索职工关系中的所有信息
SELECT w_id,p_id,p_wages FROM w_people
-- 检索供应商关系中的所有信息
SELECT w_id,w_city,w_area FROM w_wwarehouse
DELETE FROM w_list
SELECT * FROM w_list
INSERT INTO w_list(p_id,s_id,l_id,l_date) VALUES
('E3','S4','OR79','2001-06-23'),
('E1','S4','OR73','2001-07-28'),
('E3','S7','OR67','2001-05-25'),
('E5','S6','OR76','2001-05-26'),
('E6','S6','OR77','2001-06-13'),
('E1','S2','OR80','2001-08-29'),
('E3','S3','OR90','2001-09-01'),
('E3','S3','OR91','2001-07-13');
-- 5.检索六月之后的所有订单
SELECT l_date ,DATE_FORMAT(l_date,"%m/%d/%y")AS l_date FROM w_list
SELECT p_id,s_id,l_date FROM w_list WHERE MONTH(l_date)>6
-- 6.检索面积大于400的仓库
SELECT * FROM w_wwarehouse WHERE w_area >400;
-- 7.检索哪些职工的工资多于1210
SELECT w_id,p_id,p_wages FROM w_people WHERE p_wages>=1210
-- 8.检索仓库是“WH1”或“WH2”并且面积大于400的城市
SELECT w_id,w_city,w_area FROM w_wwarehouse WHERE w_id IN ('WH1','WH2')AND w_area>400
-- 9.找出仓库面积在400到600的仓库
SELECT w_id,w_city,w_area FROM w_wwarehouse WHERE w_area>=400 AND w_area<=600
-- 10.找出名中包含 “厂”的所有供应商的名
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_name REGEXP'厂'
-- 11.找出不在西安的供应商
SELECT s_id,s_name,s_add FROM w_supplier WHERE s_add!='西安'
-- 12.找出不在北京的仓库
SELECT w_id,w_city,w_area FROM w_wwarehouse WHERE w_city!='北京'
-- 13.按工资降序排列出所有职工的信息
SELECT * FROM w_people ORDER BY p_wages DESC
-- 14.先按仓库号升序排列,再按工资降序排列
SELECT * FROM w_people ORDER BY w_id,p_wages DESC