-- 查看所有用户
SELECT USER,HOST FROM mysql.user
CREATE USER xxx
-- 赋予权限
GRANT ALL ON warehouse.* TO xxx@'%'
CREATE DATABASE student
/*
函数查询--时间查询
时间处理
时间获取
时间计算等
*/
-- 获取时间信息
SELECT YEAR(NOW()),MONTH('2023-07-17'),DATE(NOW()),DAY(NOW()),
HOUR(NOW()),MINUTE(NOW()),SECOND(NOW());
-- 获取名字
SELECT MONTHNAME(NOW()),DAYNAME(NOW());
-- 获取部分信息
-- 星期相关
SELECT WEEK(NOW()),WEEKDAY('2023年7月17日08:29:49'),WEEKOFYEAR(NOW());
-- 天相关
SELECT DAYOFMONTH(NOW()),DAYOFMONTH(NOW()),DAYOFMONTH(NOW());
-- 日期的计算/转化
SELECT DATE_ADD(NOW(),INTERVAL 2 DAY)-- 当前时间的对应之后的日期
SELECT DATE_ADD(NOW(),INTERVAL 2 MINUTE)
SELECT DATE_SUB(NOW(),INTERVAL 3 MONTH)-- 当前时间的对应之前的日期
SELECT DATE_SUB(NOW(),INTERVAL 3 MONTH)
SELECT DATEDIFF(NOW(),'2001-10-04')-- 两个日期之间相差多少天
SELECT TIMESTAMPDIFF(HOUR,'2001-10-04',NOW())
SELECT TIMESTAMPDIFF(MINUTE,'2001-10-04',NOW())
SELECT TIMESTAMPDIFF(SECOND,'2001-10-04',NOW())
SELECT TO_DAYS(NOW()) -- 1970-01-01标准日期
SELECT TO_seconds(NOW()) -- 日期转化成整数
SELECT FROM_DAYS(419589) -- 整数转化成日期
SELECT LAST_DAY(NOW()) -- 当前日期当前月的最后一天
SELECT MAKEDATE(2023,128) -- 给定年数,获取多少天之后的日期
SELECT DATE_FORMAT(NOW(),'%Y年%m月%d日 %W %H:%i:%s') -- 格式化日期
/*
练习
1:十八年后还是一条好汉
2:当前车辆入库2023-07-17 6:06:05,十五分钟内不收费,
超过每半小时收费5元(不足按半个小时算)计算 2023-07-18 09:11:12出库应该付多少钱
3:产品生产日期是2023-07-17 12:24:24 25小时后过期
计算过期时间,按照中文习惯显示
4:假设人的寿命为99岁,计算你还能活多少年,多少天,多少秒
*/
-- 1
SELECT DATE_ADD(NOW(),INTERVAL 18 YEAR) 后还是一条好汉
-- 2
SELECT CEILING((
TIMESTAMPDIFF(SECOND,'2023-07-17 06:06:05','2023-07-18 09:11:12')/60-15)/30)*5
-- 3
SELECT DATE_FORMAT(DATE_ADD('2023-07-17 12:24:24',INTERVAL 25 HOUR),'%Y年%m月%d日 %H:%i:%s')
-- 4
SELECT DATEDIFF(DATE_ADD('2023-10-04',INTERVAL 99 YEAR),NOW())
SELECT TIMESTAMPDIFF(HOUR,NOW(),DATE_ADD('2023-10-04',INTERVAL 99 YEAR))
SELECT TIMESTAMPDIFF(SECOND,NOW(),DATE_ADD('2023-10-04',INTERVAL 99 YEAR))
SELECT TIMESTAMPDIFF(YEAR,NOW(),DATE_ADD('2002-08-18 02:30:30',INTERVAL 99 YEAR))年,
TIMESTAMPDIFF(DAY,NOW(),DATE_ADD('2002-08-18 02:30:30',INTERVAL 99 YEAR)) 天,
TIMESTAMPDIFF(SECOND,NOW(),DATE_ADD('2002-08-18 02:30:30',INTERVAL 99 YEAR)) 秒
/*
函数查询--信息函数
获取一些数据库系统中的信息
*/
-- 获取当前用户
SELECT USER(),CURRENT_USER(),SYSTEM_USER
-- 获取当前数据库
SELECT DATABASE()
-- 获取版本信息
SELECT VERSION()
-- 返回最近一个查询获取的信息条数
SELECT FOUND_ROWS()
-- 返回autoincrement 字段最后一次插入数据的id
SELECT LAST_INSERT_ID()
-- 获取一串唯一的ID号
SELECT UUID()
/*
函数查询---判断函数
用户判断条件是否满足
*/
-- if判断 第一个表达式是判断条件,如果结果是true或不等于null,就返回第二个值,否则返回第一个值
SELECT IF(12<10,'今天心情挺不错','真他妈傻逼')
-- 非空函数 如果第一个值为null则返回第二个值,否则返回第一个值
SELECT IFNULL('傻逼','智障')
SELECT IFNULL(NULL,'智障')
/*
函数查询---加密运算
*/
-- 不可逆
SELECT PASSWORD('abc')
SELECT MD5('abc')
-- 可逆
SELECT ENCODE('abcdefg','123456')
SELECT DECODE('abcdefg','123456'),'123456'
/*
选择查询
依赖于已有的数据,根据条件进行数据的筛选
*/
-- 练习--仓库
warehouse仓库
-- 创建仓库表
CREATE TABLE w_warehouse(
w_id VARCHAR(3) PRIMARY KEY,
w_city VARCHAR(3) COLLATE NOT NULL,
w_area INT(4) DEFAULT NULL,
)
CREATE TABLE s_list(
p_id VARCHAR(2) PRIMARY KEY,
w_id VARCHAR(3),
l_id VARCHAR(4),
l_date DATE
)
CREATE TABLE `s_people` (
`s_id` VARCHAR(3) COLLATE utf8_unicode_ci NOT NULL,
`p_id` VARCHAR(2) COLLATE utf8_unicode_ci NOT NULL,
`p_wages` INT(4) NOT NULL
)
CREATE TABLE `s_supplier` (
`w_id` VARCHAR(2) COLLATE utf8_unicode_ci NOT NULL,
`w_name` VARCHAR(10) COLLATE utf8_unicode_ci NOT NULL,
`w_add` VARCHAR(5) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`w_id`)
)