mysql day1
mysql简介
MySQL是一个典型的关系数据库,目前是Oracle公司产品之一,也是目前主流使用的关系型数据库之一。使用MySQL可以进行最基本的数据存储、管理、查询等操作,也可以方便的组建数据库集群,配置读写分离。
MySQL数据库同样使用SQL(结构化查询语言)来进行操作,同时MySQL数据库自身也有很多可以直接使用的内置函数,在部分操作的语法上和其他数据库会存在区别。
mysql字符类型




select条件查询
1.普通条件查询
=>,<,>,!=,<>,>=,<=
2.where:过滤
3.in:在某个范围内查找
1 --查询 员工编号为 7369 7788 7881的员工信息 2 1.select * from emp where empno in (7369,7788,7881); 3 2.select * from emp where empno=7369 or empno=7788 or empno=7881;
4.null值查询
--查询不发放津贴的员工信息 select * from emp where comm is null; --查询发放津贴的员工信息 select * from emp where comm is not null;
5.范围比较
--查询薪资范围在1000-4000之间的员工信息 [1000.4000] select * from emp where sal between 1000 and 4000;
6.模糊查询
--查询名字中有S的员工 select * from emp where ename like '%S%'; --查询名字最后一个字符是S select * from emp where ename like '%S'; --查询名字第一个字符是S select * from emp where ename like 'S%'; --查询名字第二个字符是A select * from emp where ename like '_A%'; --查询名字中有%的员工 select * from emp where ename like '%\%%'; --查询名字第8 188个字符是A,这是需要一些特殊的手段-》函数 -- % 代表任意字符的任意次数 _任意字符的一次
7.多条件联合查询 and or
--and 必须前后同时满足条件才能返回结果 --or前后有一个满足条件就能返回结果 --查询在20部门并且薪资大于2000的员工 select * from emp where deptno =20 and sal >2000; --查询在20部门或者薪资大于2000的员工 select * from emp where deptno = 20 or sal >2000; --查询不在20部门并且薪资小于2000的员工 select * from emp where deptno <> 20 and sal <2000;
8.select结果排序 order by
使用asc是升序排列(默认),使用desc可以降序排序 单列: --按照薪资进行排序(默认升序) select * from emp order by sal; --按照薪资进行排序(降序) select * from emp order by sal desc; --按照薪资进行排序(升序) select * from emp order by sal asc; --按照津贴进行排序(null排在最前面) select * from emp order by comm; 多列; --多个排序的列 select * from emp order by deptno,sal; --多个排序的列(部门升序 薪资降序) select * from emp order by deptno,sal desc; --多个排序的列(工作,薪资) select * from emp order by job,sal;
9.select结果分页
--每次查询前N行 SELECT * FROM emp LIMIT 4; --查询第N页,每页显示M个 select * from emp limit 0,3; select * from emp limit 3,3;//从第三行开始取三行 select * from emp limit 6,3; select * from emp limit (n-1)*M,M; --查询薪资大于1000的逆序排列,然后显示前5条记录 select * from emp where sal >1000 order by sal desc limit 0,5 ;
单行函数
函数都是数据库提前给我们准备好的,所以我们可以直接调用,使用函数可以让指定的列计算出我们需要的数据
单行函数 : 指的是操作一行数据返回一行数据,操作10行数据返回10行数据
1)字符串函数

substr(字段名,开始位置,截取的个数)
substring和substr截取方法一样
-- 长度 select ename,length(ename) from emp; -- 截取 select ename,SUBSTR(ename,1,3) from emp; select * from emp where substr(ename,5,1)='S'; -- 大小写 select ename, upper(ename),lower(ename) from emp; -- 拼接 select CONCAT(empno,'=',ename) from emp; -- 替换 select ename,REPLACE(ename,'T','—') from emp
2.日期函数

-- 获取当前系统时间 - select hiredate,sysdate() from emp; - select hiredate,CURRENT_DATE(),CURRENT_TIME(),CURRENT_TIMESTAMP() from emp; -- 日期转换 - select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s') - select hiredate, date_format(now(),'%Y年%m月%d日 %H时%i分%s秒') from emp; -- 分别获取 年月日 时分秒 星期 - select - SECOND MINUTE HOUR DAY WEEK MONTH YEAR -- 日期的加减操作 - select hiredate,ADDDATE(hiredate,9),ADDDATE(hiredate,-9) from emp; - select DATE('2022-05-02');
last_day:每月最后一天
H表示24小时制,h表示12小时制
3.数字函数

-- 向上取整 向下取整 - select ceil(12,1),floor(12.9) -- mod abs pow PI rand round TRUNCATE(直接进行截取,不进行四舍五入) -- 保留多少位有效数字 - select round(1.4999999,2),round(1.4999999),round(1.4999999,-1) - select TRUNCATE(1.4999999,2)
4.转换函数
-- 日期--》字符串 - date_format(date,expr) - select DATE_FORMAT(sysdate(),'%Y-%m-%d %H:%i:%s'); -- 字符串--》日期 - 要注意字符串和格式的匹配 - select STR_TO_DATE('2020-4-16 17:15:24','%Y-%c-%d %H:%i:%s'); - select STR_TO_DATE('5月2022年4日','%m月%Y年%d日'); -- 数字--》字符串 - 直接拼接一个字符串即可,可以自动转换 lpad,concat -- 字符串--》数字 - 依靠函数提供的参数
rtrim:去除右边空格
ltrim:去除左边空格
trim:去除左右空格
-- 空值的处理 if null(exp1,exp2) exp1!=null?exp1:exp2 select IFNULL(comm,888) from emp; -- 加密算法(面试题) select MD5('123456'); select AES_ENCRYPT('123456','abcd'),AES_DECRYPT(AES_ENCRYPT('123456','abcd'),'abcd');
浙公网安备 33010602011771号