数据操作语言——INSERT语句
Insert 语句可以向数据库中插入数据,可以是一条数据,也可以是多条数据,它有以下语法形式:
下面给出一个插入语法的示例:
INSERT INTO t_dept(deptno,dname,loc) VALUES(50,'司法部','济南');
INSERT INTO t_dept(deptno,dname,loc) VALUES(60,'后勤部','济南'),(70,'安保部','湖北');
INSERT语句方言
MYSQL的INSERT语句还有一种方言语法
例如:
INSERT INTO t_dept SET deptno='80',dname='财务部',loc = '十堰';
IGNORE语法:
IGNORE关键字会让INSERT只插入数据库不存在的记录
例如:
INSERT IGNORE INTO t_dept(deptno,dname,loc) VALUES(60,'后勤部','济南'),(90,'HR部','湖北');
INSERT中的子查询
INSERT语句中可以包含子查询语句,代表把子查询的内容写入到数据表
把人数超过5人的部门记录拷贝到新的部门表
例如:
INSERT INTO t_dept_new( deptno, dname, loc )
(
SELECT
d.deptno,
d.dname,
d.loc
FROM
t_dept d
INNER JOIN ( SELECT deptno FROM t_emp e GROUP BY deptno HAVING COUNT(*)> 5 ) temp ON d.deptno = temp.deptno
)
UPDATE 语句
UPDATE语句用于修改表的记录
把每个员工的编号和上司的编号+1,用ORDER BY子句完成
UPDATE IGNORE t_emp
SET empno =empno+1,
mgr =mgr+1
ORDER BY empno DESC
把月收入前三名的员工底薪减100元,用LIMIT子句完成
UPDATE t_emp
SET sal =sal-100
ORDER BY SAL DESC
LIMIT 3
把10部门中,工龄超过20年的员工,底薪增加200元
UPDATE t_emp
SET SAL =sal +1000
where deptno ='10'
AND DATEDIFF(NOW(),hiredate)/365 >20
把ALLEN调往RESEARCH部门,职务调整为ANALYST
#把ALLEN调往RESEARCH部门,职务调整为ANALYST
UPDATE t_emp E inner join t_dept t
SET E.deptno = t.deptno,JOB ='SALESMAN'
WHERE t.dname ='RESEARCH' AND E.ename='ALLEN'
Mysql函数
mysql函数是指数据库将复杂一点的功能封装在函数中,供使用者使用。
数字函数
#绝对值
SELECT ABS(-100);
#四舍五入
SELECT ROUND(9.87);
#向下取整
SELECT FLOOR(9.87);
#向上取整
SELECT CEIL(9.987);
#幂函数
SELECT POWER(2,3);
#对数函数
SELECT LOG(2,2);
#对数函数
SELECT LN(2);
#开平方
SELECT SQRT(9);
#圆周率
SELECT PI();
#三角函数等
SELECT SIN(X);
#角度转弧度
SELECT RADIANS(30);
#弧度转角度
SELECT DEGREES(1);
获取系统时间函数
- NOW()函数能获得系统日期和时间,格式yyyy-MM-dd hh:mm:ss
- CURDATE()函数能获得当前系统日期,格式yyyy-MM-dd
- CURTIME()函数能获得当前系统时间,格式hh:mm:ss
日期格式化函数
DATE_FORMAT()函数用于格式化日期,返回用户想要的日期格式
#利用日期函数,查询明年你的生日是星期几?
SELECT DATE_FORMAT("2023-07-14","%W");
#利用日期函数,查询1981年上半年入职的员工有多少人?
SELECT COUNT(*)
FROM t_emp
WHERE DATE_FORMAT(hiredate,"%Y")='1981'
AND DATE_FORMAT(hiredate,"%m")<='6'
日期计算的注意事项
MySQL数据库里面,两个日期不能直接加减,日期也不能与数字加减
日期偏移运算
DATE_ADD()函数可以实现日期的偏移计算,而且时间单位很灵活
select DATE_ADD(NOW(),INTERVAL 10 YEAR);
select DATE_ADD(NOW(),INTERVAL 10 MONTH);
select DATE_ADD(NOW(),INTERVAL 10 DAY);
select DATE_ADD(NOW(),INTERVAL -10 YEAR);
select DATE_ADD(NOW(),INTERVAL -10 MONTH);
;
select DATE_FORMAT(DATE_ADD(NOW(),INTERVAL -10 DAY),"%Y/%m/%d")
DATEDIFF()函数用来计算两个日期之间相差的天数
字符函数
SQL语句中可以利用条件函数来实现编程语言里的条件判断
# 中秋节公司发放礼品,SALES部门发放礼品A,其余部门发放礼品B,打印每名员工获得的礼品
SELECT E.empno,E.ename,E.empno,t.dname,IF(t.dname ='SALES',"礼品A","礼品B") AS gift
FROM t_emp E INNER JOIN t_dept T
ON E.deptno =t.deptno
#公司年庆决定组织员工集体旅游,每个部门旅游目的地是不同的。SALES部门去P1地点,ACCOUNTING部门去P2地点,RESEARCH部门去P3地点,查询每名员工的旅行地点
SELECT ename,
CASE D.dname
WHEN "SALES" THEN
"P1"
WHEN "ACCOUNTING" THEN
"P2"
WHEN "RESEARCH" THEN
"P3"
ELSE
"P4"
END AS PLACE
FROM t_emp E INNER JOIN t_dept D
ON E.deptno =D.deptno;