-- root专区
-- 创建用户
CREATE USER xxx@'%'IDENTIFIED BY'1234'
-- 查看用户
SELECT USER,HOST FROM mysql.user;
DROP USER xxx@'localhost'
-- 给权限
GRANT ALL ON student.* TO xxx@'%';
-- xxx 专区
-- 创建数据库和表
-- 查看表信息
SELECT * FROM _stu;
-- 回顾 投影查询
SELECT 20 DIV 10 AS res;
SELECT DISTINCT s_sex FROM _stu;
SELECT s_name,s_sex FROM _stu;
/*
投影查询之函数
mysql经常操作的一些操作编写出来,封装起来就是函数
提供了很多的功能函数分为两类
单值函数【一个或者零个参数进 一个结果返回】
数学函数
字符串函数
日期函数
条件函数
信息函数和加密函数
其他函数
多值函数,也叫聚合函数 【零个或多个参数进 一个结果出】
*/
/*
单值函数--数学函数
*/
-- 绝对值和圆周率
SELECT ABS(-125),PI();
-- 数据精度处理 小数转化成整数
-- floor(x)直接去除x的小数部分,保留整数
-- ceil(x)和ceiling(x)得到的值都是大于等于x的最小整数
-- round(x)小数位四舍五入,得到整数
SELECT FLOOR(12.55),CEIL(12.54),CEILING(12.65),ROUND(12.77);
SELECT FLOOR(12.12),CEIL(12.00),CEILING(12.00),ROUND(12.44);
-- 获取随机数 rand() rand(x) 获取一个随机数
-- rand()获取0-不包含1的随机数
SELECT RAND();
SELECT RAND(10);
-- 获取1-9随机整数
SELECT ROUND(RAND()*8+1);
-- 求余数和平方根
SELECT SQRT(9),MOD(49,3);
-- 数据的幂运算
SELECT POW(2,3),POWER(2,4)
-- 小数精度处理
-- ROUND(x,n)x小数保留小数点后n位,可以是负数,四舍五入
-- TRUNCATE(x,n)x小数保留小数点后面n位,直接舍弃后面多的小数位
SELECT ROUND(1.3242,3),TRUNCATE(12.411,-1)
-- 三角函数 sin() tan()等
-- 对数 log
/*
函数查询--字符串函数
主要用于字符串的处理
*/
-- 获取字符串的长度
-- char_length(x) 返回的是字符串x的字符个数
-- length(x)返回的是字符串x在当前数据编码环境中,占的字节数
SELECT CHAR_LENGTH('玛德困死'),LENGTH('怎么这么难熬')
-- 字符串的拼接
-- concat(字符串1,字符串2,……)可以将多个字符串拼接成一个字符串
-- concat_ws(字符串1,字符串2……)可以将多个字符串连接符连接成一个字符串
SELECT CONCAT('今天','周五','明天可以睡觉');
SELECT CONCAT_WS('#','*','.','*','#'),CONCAT_WS('哈喽','哈哈');
-- 大小写转化 lower和upper
SELECT LOWER('gfsvGRWSgs'),UPPER('gssGSR');
-- =反转字符串
SELECT REVERSE('阿巴阿巴阿巴');
-- 截取字符串
-- 截取空格
-- trim(x) 会将x两边的空格去除
-- LTRIM(x)会将x左边的空格去掉
-- RTRIM(x)会将x右边的空格去掉
SELECT TRIM(' 傻逼 '),LTRIM(' 傻逼 '),RTRIM(' 傻逼 ');
-- TRIM('x' FROM 'y')去除y两边的x字符串
SELECT TRIM('xxx' FROM 'xxxxxxfsgsgxxxx')
-- 获取子字符串 获取想要的字符串
SELECT LEFT('gssgwsg',3),RIGHT('sgnbiekjs',4)
SELECT LEFT(s_name,1)FROM _stu
-- 填补字符串
-- lpad(x1,len,x2)会用x2去将x1填充到长度为len
-- 如果x1的长度大于len,会将字符串截取len长度
-- 如果x1的长度小于len,才会将x2填充到对应长度
SELECT LPAD('xxxxxxx',12,'3'),RPAD('yyyyyyy',3,'2222222')
-- 字符串
-- SUBSTRING(x,n)和SUBSTRING(x from n)从x字符串的第n个字符开始截取返回
SELECT SUBSTRING("傻子",2),SUBSTRING("傻子" FROM 2)
-- SUBSTRING(x,n,len)从x字符串中第n个字符开始截取len长度字符串返回
SELECT SUBSTRING('马上下课,真快',2,4),SUBSTRING('马上下课,真快啊' FROM 2 FOR 2)
-- 重复字符串
SELECT REPEAT('傻子',5)
-- 练习给定字符串' 老师,赶紧下课,我不想学,无所谓!!! '
-- 要求 获取老师
-- 获取下课,重复1
-- 获取字符串 ’想不学’
-- 获取'无所谓!!!!!'
SELECT LEFT(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),2)
SELECT REPEAT(SUBSTRING(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),6,2),2)
SELECT CONCAT(REVERSE(SUBSTRING(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),10,2)),SUBSTRING(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),12,1));
SELECT CONCAT(SUBSTRING(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),14,3),REPEAT(SUBSTRING(TRIM(' 老师,赶紧下课,我不想学,无所谓!!! '),17,1),8));
/*
函数查询之日期处理函数
可以使用函数获取想要的日期信息
*/
-- 基本处理
SELECT '2023-07-14'- '1973-08-27'
-- 获取当前的日期信息
SELECT CURDATE(),CURRENT_DATE()-- 获取yyyy-MM-dd
SELECT NOW(),SYSDATE(),LOCALTIME(),CURRENT_TIMESTAMP() -- 获取年月日时分秒
SELECT CURRENT_TIME() -- 获取时分秒
-- 获取日期的月份
SELECT MONTH(NOW()),MONTHNAME(NOW())
-- 获取年
SELECT YEAR(NOW())
-- 获取天
SELECT DAY(NOW())
-- 获取小时
SELECT HOUR(NOW()),MINUTE(NOW()),SECOND(NOW())
-- 获取星期
SELECT DAYNAME(NOW()),DAYOFWEEK(NOW()),WEEKDAY(NOW())
-- 获取一些特殊时间
-- 获取一年中的周数
SELECT WEEK(NOW()),WEEKOFYEAR(NOW())
SELECT WEEKOFYEAR('2023-12-30')
-- 获取第几天
SELECT DAYOFMONTH(NOW())-- 当前对应日期是这一个月的第几天
SELECT DAYOFYEAR(NOW())-- 当前对应日期是一年中第几天
-- 获取第几个季度
SELECT QUARTER(NOW())
-- 日期转化
SELECT TIME_TO_SEC(NOW())-- 当前的小时分钟秒,转化成秒数
SELECT SEC_TO_TIME(NOW())