# 数据:
# 存在银行里面的钱
# 数据库里面的数据表
#-记录每个在存钱的人的信息
# 姓名 身份证号码 账号 密码 余额
# 数据库:存储数据的仓库,
# 里面是一张张的数据表
# 特殊的存储机制,做增删改查非常方便
# mysql 使用命令行进行操作
# 连接 在DOS命令窗口
# win R --运行窗口 输入 cmd
mysql -uroot -p
show databases;
USE web02;
show tables;
SELECT * FROM s_region;
#查看1号地区的名称
SELECT id , name FROM s_region
WHERE id = 1;
SELECT * FROM s_dept;
SELECT * FROM s_emp;
SELECT id,first_name
FROM s_emp;
#查询s_emp表中员工的id,first_name,salary
SELECT id,first_name,salary
FROM s_emp;
# mysql 的函数
#最高工资 MAX(salary) 需要求最大值的列
SELECT MAX(salary)
FROM s_emp;
#求工资的总额 SUM(salary) 需要求和的列
SELECT SUM(salary)
FROM s_emp;
#工资的平均值 AVG(salary)
SELECT AVG(salary)
FROM s_emp;
#求31号部门的月工资总和
SELECT SUM(salary)
FROM s_emp
WHERE dept_id = 31;
#求31号部门的平均工资
SELECT AVG(salary)
FROM s_emp
WHERE dept_id = 31;
#求44号部门的最高工资
SELECT MAX(salary)
FROM s_emp
WHERE dept_id = 44;
#求员工的最低工资 MIN(salary)
SELECT MIN(salary)
FROM s_emp;
#求42号部门的最低工资
SELECT MIN(salary)
FROM s_emp
WHERE dept_id = 42;
#统计公司的员工个数 count(列名/数字) 统计个数
SELECT COUNT(salary)
FROM s_emp;
SELECT COUNT(id)
FROM s_emp;
SELECT COUNT(1) '员工人数'
FROM s_emp;
#统计44号部门的员工个数
SELECT COUNT(1) '44部门员工人数'
FROM s_emp
WHERE dept_id = 44;
SELECT id,first_name
FROM s_emp
WHERE dept_id = 44;
#字符串处理函数
#字符串 : 'abc' abc "abc"
# 变大写 upper()
SELECT UPPER('abc');
#查询出员工的姓名并且变成大写
SELECT UPPER(first_name)
FROM s_emp;
#变小写 LOWER()
SELECT LOWER("ABCD");
#获取字符串长度 length()
SELECT length("abcd");
SELECT length("中国");
# 输出每个员工的姓名的长度
SELECT first_name,length(first_name)
FROM s_emp;
#数值处理函数 1,2,3 8.8 -1,-3
#绝对值 ABS()
SELECT ABS(-99);
#四舍五入 round()
SELECT ROUND(8.8);
SELECT ROUND(8.4);
SELECT ROUND(-8.4);
SELECT ROUND(-8.8);
#向下取整 FLOOR()
SELECT FLOOR(-18.2);
SELECT FLOOR(18.2);
#向上取整 ceil()
SELECT ceil(8.1);
SELECT ceil(-8.1);
#取模函数 模 取余 获取余数
#一个数整除以另外一个数所
#获取的余数 5 / 3 = 1 ...2
# mod(5,3) 表示5对3取余
SELECT mod(5,3);
SELECT mod(6,8);
#随机数 RAND()
#可以获取[0,1)的随机小数
SELECT rand();
#获取 1到10之间的随机整数
SELECT rand()*10;#[0,10)
SELECT rand()*10+1;#[1,11)
SELECT FLOOR(RAND()*10+1);#[1,10]
#查询工资大于等于1200的员工信息
#并且按照工资降序排序
SELECT id,first_name,salary
FROM s_emp
WHERE salary >= 1200
ORDER BY salary desc;
#查询工资小于等于1800的员工信息
#并且按照工资降序排序
SELECT id,first_name,salary
FROM s_emp
WHERE salary <= 1800
ORDER BY salary desc;
# AND 逻辑与 必须同时满足多个条件
# 1800 >= salary >=1200
# salary >=1200 AND salary <= 1800
# 查询出工资在[1200,1800]之间的员工信息
SELECT id,first_name,salary
FROM s_emp
WHERE salary >=1200 AND
salary <= 1800
ORDER BY salary desc;
# BETWEEN AND 在...之间
# BETWEEN 1200 AND 1800 [1200,1800]
SELECT id,first_name,salary
FROM s_emp
WHERE salary BETWEEN 1200 AND 1800;
# 使用两种方法找出31号到35部门
#里的员工的姓名 职位 工资
SELECT first_name,title,salary
FROM s_emp
WHERE dept_id BETWEEN 31 AND 35;
# 逻辑或 OR 满足任意条件之一
SELECT first_name,title,salary
FROM s_emp
WHERE dept_id = 31 OR dept_id= 32
OR dept_id = 33 OR dept_id = 34
OR dept_id = 35;
# IN(值1,值2,值3,值4,值5...) 满足后面
# 括号中的任意一个值
SELECT first_name,title,salary
FROM s_emp
WHERE dept_id IN(31,32,33,34,35);
# 逻辑非 NOT
# 找出不在 31号到35部门
#里的员工的姓名 职位 工资
SELECT first_name,title,salary
FROM s_emp
WHERE dept_id NOT IN(31,32,33,34,35);
模糊查询
#模糊查询
# 使用的关键字 LIKE 像...
# 通配符 % 匹配到0到任意多个字符
_ 匹配任意一个字符
# 以M开头 'M%'
# 名字里面包含m '%m%'
# 查询姓名以M开头的员工的姓名,职位,工资
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE 'M%';
# 查询姓名以A开头的员工的姓名,职位,工资
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE 'A%';
#查询出姓名的第三个字母是d的员工信息
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE '__d%';
#查询出姓名的倒数第二个字母是e的员工信息
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE '%e_';
#查询出姓名的包含字母 n 的员工信息
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE '%n%';
#查询出姓名以M开头包含a的员工的信息
SELECT first_name,title,salary
FROM s_emp
WHERE first_name LIKE 'M%a%';
#查询以s开头的表名
show tables LIKE 's%';
show tables;
#重命名emp为semp
rename TABLE emp TO semp;
#查询以s_开头的表名
show tables LIKE 's_%';
#转义符来定义特殊字符本身 \
# \ 就是转义符,跟在它后面特殊
#字符表示它自己本身 \_ 就表示
# _ 本身
show tables LIKE 's\_%';
# 's\_%' 匹配 以s_开头的表名
#'s_%' 匹配以s和任意一个字符开头的表名
排序
# 查询出42号部门的员工的年薪,
# 并且按照年薪从大到小排序
SELECT first_name,salary*12
FROM s_emp
WHERE dept_id = 42
ORDER BY salary*12 desc;
# 按照别名进行排序
SELECT first_name,salary*12 'yearSal'
FROM s_emp
WHERE dept_id = 42
ORDER BY 'yearSal' desc;
SELECT first_name,salary*12 yearSal
FROM s_emp
WHERE dept_id = 42
ORDER BY yearSal desc;
# 通过编号进行排序
SELECT id, first_name,salary*12 yearSal
FROM s_emp
WHERE dept_id = 42
ORDER BY 3 desc;