• MYSQL介绍——数据库的增删改及常用函数


    数据操作语言——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;
    
  • 相关阅读:
    中秋节祝福程序源代码分享:土地分类数据阈值筛选和重投影分类
    单调栈和单调队列可以很简单
    字符串截取
    荧光染料Cy7 酰肼,Cy7 hydrazide,Cy7 HZ参数及结构式解析
    Linux操作系统使用及C高级编程
    WinDbg 远程调试遇到IP为:169.254.xx.xx 的处理
    46. 全排列
    《Hierarchical Text-Conditional Image Generation with CLIP Latents》阅读笔记
    【自定义类型】--- 位段、枚举、联合
    【小程序源码】笑话与趣图框架
  • 原文地址:https://blog.csdn.net/HBUT_WANGWEI/article/details/127096035