wqy1027

eeee

 

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');

 

posted on 2022-08-07 11:41  不想写代码的小玉  阅读(27)  评论(0)    收藏  举报

导航