一、引言
1.1 现有存储数据的方式有哪些?
java程序存储数据方式(数组、对象 、集合、变量) ,数据保存在内存中,属于瞬时存储。
文件存储 保存在硬盘中,属于持久状态存储
1.2 以上存储方式有什么缺点?
没有数据类型区分
存储的量级小<br>
没有安全限制
没有备份 恢复机制
数据查询
基本查询
select 查询的字段(列名) FROM 表名
select last_name,salary FROM t_employees;<br>-- 查询员工的入职日期和 工资 以及姓名 <br>SELECT last_name,salary,hire_Date from t_employees;<br><br>-- 查询员工所有信息 *表示所有的列 (在实际开发中不能使用)<br>SELECT * from t_employees;
在基本查询中进行运算
-- 1.查询所有员工的年薪 (12 薪)<br>select last_name,salary*12 FROM t_employees;<br>-- 2.查询所有员工的月薪(扣除社保800)<br>select last_name,salary-800 FROM t_employees;<br>-- 3.查询所有员工的月薪(扣除社保800)+绩效 salary*IFNULL(COMMISSION_PCT,0)<br>-- IFNULL(判断的字段值,如果结果为null的值)<br>SELECT last_name,salary*IFNULL(COMMISSION_PCT,0)+salary-800 FROM t_employees;<br><br>-- 4.查询所有员工的时薪<br>SELECT last_name,salary/22/8 from t_employees;
别名查询
相当于取小名 1.当列名过长或者字段重复 2.需要用到别名进行查询或者作区分
SELECT first_name '名' ,last_name '姓' FROM t_employees;
SELECT last_name,salary*IFNULL(COMMISSION_PCT,0)+salary-800 as salary FROM t_employees;
排序查询
1.按照员工的工资进行降序排序 DESC 降序 asc 升序 默认不写
select last_name,salary FROM t_employees ORDER BY salary DESC;
select last_name,salary FROM t_employees ORDER BY salary ;
2.按照员工的工资进行降序排序 如果工资相同的话就按照 入职日期进行升序排序
select last_name,salary FROM t_employees ORDER BY salary DESC,hire_Date ;
条件查询
-- 语法:Select * from 表名 where 查询条件<br><br>-- 关系条件:<br> -- > < >= <= != <><br>-- 逻辑条件<br> -- and or not<br>-- 区间条件<br> -- between 起始值 and 结束值<br>-- 枚举条件<br> -- in(值1,值2...) not in(值1,值2...)<br>-- 非空条件 sql中的null 不能使用= 或者 != 来进行判断<br> -- is null is not NULL
-- 1.查询工资大于10000 的员工信息<br>select * FROM t_employees WHERE salary>10000; <br>-- 2.查询不是销售的员工信息<br>SELECT * FROM t_employees WHERE JOB_ID !='SA_MAN'; <br>SELECT * FROM t_employees WHERE JOB_ID <>'SA_MAN'; <br>-- 3.查询姓名叫Peter 员工的信息<br>SELECT * FROM t_employees WHERE FIRST_NAME ="peter";<br>-- 4.查询1998年以后入职的员工 且 工资大于 8000的员工信息<br>SELECT * from t_employees WHERE HIRE_DATE> "1998" and SALARY >8000;<br><br>-- 5. 查询不是30部门的员工信息<br>SELECT * FROM t_employees WHERE NOT DEPARTMENT_ID=30 <br>-- 6.查询50 60 90 部门的员工信息<br>SELECT * FROM t_employees WHERE DEPARTMENT_ID=50 or DEPARTMENT_ID=60 or DEPARTMENT_ID=90; <br><br>-- 7.查询员工工资在 8000 12000 的员工信息 between 起始值 and 结束值<br>SELECT * FROM t_employees WHERE SALARY BETWEEN 8000 and 12000;<br>SELECT * FROM t_employees WHERE SALARY >=8000 and SALARY <=12000;<br>-- 8. 查询员工 30 40 70 部门员工信息<br>SELECT * FROM t_employees WHERE DEPARTMENT_ID IN(30,40,70)<br><br>-- 9.查询没有绩效的员工信息<br>SELECT * FROM t_employees WHERE COMMISSION_PCT = NULL; -- 不要用<br>SELECT * FROM t_employees WHERE COMMISSION_PCT IS NULL;
-- 10. 查询有绩效的员工信息
SELECT * FROM t_employees WHERE COMMISSION_PCT is not Null;
-- 11.查询名字中带有en的员工信息
SELECT * FROM t_employees WHERE LAST_NAME like '%en%'
-- 12.查询last name 中 以la 开头的员工信息
SELECT * from t_employees WHERE LAST_NAME like 'la%'
SELECT * from t_employees WHERE LAST_NAME like '%la'
-- 13.查询last name 中第二个和第三个字符为 in 的员工信息
SELECT * from t_employees WHERE LAST_NAME LIKE '_in%'
-- 14. 查询last name 中 带 'S' 且长度 大于6 的员工信息
SELECT * FROM t_employees WHERE LAST_NAME LIKE '%s%' AND LAST_NAME LIKE '%_______%';
-- 15. 查询last name 中 带 'S' 且长度 大于等于6 的员工信息
SELECT * FROM t_employees WHERE LAST_NAME LIKE '%s%' AND LAST_NAME LIKE '%______%';
子主题
-- 分支查询
-- case
-- when 条件1 then 结果1
-- when 条件2 then 结果2
-- when 条件3 then 结果3
-- else 结果4
-- end
-- 16.查询员工共工资 按照等级来 A B C D E
SELECT
SALARY,
case
WHEN SALARY >12000 THEN 'A类'
WHEN SALARY >8000 THEN 'B类'
WHEN SALARY >5000 THEN 'C类'
WHEN SALARY >3000 THEN 'D类'
ELSE 'E类'
END
FROM t_employees;
时间函数
-- 语法: select 时间函数(参数列表)
-- 获取当前的系统时间
SELECT SYSDATE();
-- 获取当前日期
SELECT NOW()
-- 获取系统当前日期(不包含时间)
SELECT CURDATE()
-- 获取系统的时间
SELECT CURTIME()
-- 获取指定日期中的年份
SELECT YEAR('2023-03-21')
-- 计算指定日期相隔天数
SELECT DATEDIFF('2023-02-27','2023-03-21')
-- 在指定日期基础上添加指定天数
SELECT ADDDATE(NOW(),20)
字符串函数
-- 字符串函数
-- 请将 hello word 拼接在一起
SELECT 'hello' + 'word' ; -- 错误
-- CONCAT(str1,str2,...) 函数 拼接函数
SELECT CONCAT('hello','word')
SELECT CONCAT('%','手机','%')
-- 字符串 替换函数 参数1 原始字符串 参数2 起始位置 参数3 截取位置 参数4 替换的字符串
SELECT INSERT('helloword',6,5,'mysql')
SELECT LOWER('HELLO')
SELECT UPPER('hello')
-- 字符串截取函数 参数1 原始字符串 参数2 起始位置 参数3 截取的长度
SELECT SUBSTRING('hello,java123' ,7,4)
聚合函数
-- 聚合函数
-- select 聚合函数 (列名) from 表名
-- sum 函数求和
SELECT sum(SALARY+SALARY*IFNULL(COMMISSION_PCT,0)) FROM t_employees;
-- max 函数求最大 值
SELECT MAX(SALARY) FROM t_employees;
-- min 函数求最小
SELECT MIN(SALARY) FROM t_employees;
-- avg 求平均值
SELECT AVG(SALARY) FROM t_employees;
-- count函数 求个数 * 表示所有列 函数只会统计不为null 数据
SELECT COUNT(*) from t_employees
SELECT COUNT(1) from t_employees
SELECT COUNT(COMMISSION_PCT) from t_employees