mysql学习 day1

86 阅读2分钟
create database day17; //创建数据库day17create database if not exists day17;//只有在day17不存在的情况下创建create database day17 character set utf8;//设置数据库编码 utf-8编码直接写成utf8。show databases;//展示所有的数据库select database();//显示当前正在使用的数据库、use day17;//使用数据库day17show create database day17;//显示创建数据库day17的命令。

sql中的分支结构查询:

case
    when 条件1 then 结果1
    when 条件2 then 结过2
    else 结果3
end

select  employee_id,first_name,salary ,
case when salary>=1000 Then 'A'
    else 'B'
end as "level" from employee;

时间相关的查询:日期默认格式yyyy-MM-dd,如'2020-5-20','2020-5-20 17:50:12'

SYSDATE():当前系统的时间 年月日+时分秒
CURDATE():获取当前日期
CURTIME():获取当前时分秒。

WEEK(DATE):获取指定日期为一年中的第几周。
YEAR(DATE):获取指定日期的年份
HOUR(TIME):获取指定时间的小时
MINUTE(TIME):获取指定时间的分钟
DATEDIFF(DATE1,DATE2):获取两个时间之间相差的天数。DATE1-DATE2;
ADDDATE(DATE,N):计算date加上n天之后的日期。

例子:

SELECT SYSDATE()/CURDATE()/CURTIME();

SELECT WEEK('1920-01-05');
SELECT HOUR('2017-05-06 06:52:00');
SELECT HOUR('06:52:00');

SELECT DATEDIFF('1970-1-1','1970-1-2');#返回结果-1;
SELECT ADDDATE('1970-1-1',1);# 1970-1-2

字符串查询:

注意的是字符串的开始索引是从1开始的;

select insert('这是一个数据库',3,2,'mysql'); #返回的结果是 ’这是mysql数据库‘,相当于替换。

select substring('这是一个数据库',5,3);#f返回的结果是 ’数据库‘。

聚合函数

SUM() MAX() MIN() AVG() COUNT() 聚合函数是针对列的,会自动忽略NULL值。

SELECT SUM(SALARY) FROM EMPLOYEE;

SELECT COUNT(*) FROM EMPLOYEE;#id为null 其他不为null,会计入。
SELECT COUNT(EMPLOYEE_ID) FROM EMPLOYEE;#这里要是有id为null的则不会计入

限定查询:

SELECT * FROM EMPLOYEE LIMIT 起始行,要展示的行数。
#注意的是这里编号从0开始 与字符串不同。

SELECT * FROM EMPLOYEE LIMIT 0,5; 
SELECT * FROM EMPLOYEE LIMIT 5,5; 
SELECT * FROM EMPLOYEE LIMIT 10,5; #做分页展示的时候前面的数字一直是要展示的行数的倍数,后面数字不用动。

查询总结:

语句执行顺序 from -where- group by- having-  select- order by -limit

子查询:

1.查询结果是单行单列就一个值的:

SELECT * FROM EMPLOYEE WHERE SALARY>(SELECT SALAR FROM EMPLOYEE WHERE EMPLOYEE_ID=1);

2.查询结果是多行单列的

SELECT * FROM EMPLOYEE WHERE DEPARTMENT_ID IN(SELECT DEPARMENT_ID FROM EMPLOYEE WHERE LAST_NAME=
'KING'); 

3.查询结果是多行多列的