当前位置: 首页 > news >正文

MySQl_2

目录

函数

一.字符串函数 

二.数值函数 

 三.日期函数 

四.流程控制函数

 约束

多表查询

多表关系

一.内连接

二.外连接

 三.自连接

四.联合查询

 五.子查询

        标量子查询

         列子查询

         行子查询

        表子查询


函数

一.字符串函数 

二.数值函数 

SELECT LPAD(FLOOR(RAND()*1000000),6,'0');//生成6位随机数

 三.日期函数 

四.流程控制函数

 约束

1.概念:作用于字段上的规则,用于限制存储在表中的数据

2.使用:在create创建表或者alter修改表时,添加约束。 

AUTO_INCREMENT 自动递增

3.外键

在创建表时,添加外键

create table 表名(

        字段名 数据类型

        ...

        [constraint] [外键名称] foreign key (外键字段名) references  主表(主表列名)

); 

为表中已有字段,添加外键

alter table 表名 add constaint 外键名称 foreign key (外键字段名) references 主表(主表列名); 

 删除外键

alter table 表名 drop foreign key 外键名称;

外键删除/更新行为

        在添加外键时,后面跟上  on update 行为 on delete 行为 ;

cascade 级联

多表查询

多表关系

        1.多对一(一对多)  e.g. 员工与部门

实现:在多的一方建立外键,指向一的一方的主键。

        2.多对多        eg.学生选修课程

实现:建立中间表,至少包含两个外键,分别关联两方主键

        3.一对一

        用于单表拆分

实现:在其中一方添加外键,另一方添加主键,并且设置外键unique

多表查询时,应添加过滤条件,消除无效的笛卡尔积

一.内连接

        相当于查询俩表或多表的交集部分数据

 隐式内连接

select student.name,sc.courseid from student ,student_course sc where student.id=sc.studentid;

 显式内连接

select student.name,sc.courseid from student [inner]jion student_course sc on student.id=sc.studentid;

可读性和可维护性:显式内连接在语法上更加明确和直观,易于理解和维护。它可以清楚地表达出连接操作和连接条件。相比之下,隐式内连接的语法相对简洁,但在复杂的查询中可能会较难理解和调试。

二者执行内连接的操作是相同的,只是语法形式不同

二.外连接

左外连接和内连接都是基于连接条件将两个表中符合条件的行进行匹配。但是左外连接会返回左表中所有的行,不管是否在右表中有与之匹配的行;而内连接只返回两个表中匹配的行。

右表中没有与之匹配的行,对应的列值将为NULL。

 三.自连接

        表必须起别名

按需求不同,选择内连接/外连接进行自连接查询

应用场景:员工包括普通员工和领导,当查所属领导时,可使用。

四.联合查询

 五.子查询

        标量子查询

         列子查询

子查询 返回  一列多行

  依据学生id,查询该名学生的选课情况。

select id,name,teacherId,teacherName,description from course where id in(select courseid from student_course where studentid=?)
         行子查询

子查询 返回 一行多列

select * from student where (age,sex,class) =(select age,sex,class from student where name="Lee")
        表子查询

子查询 返回 多行多列 

操作符主要为in 常放于from后,作为一张临时表,再和其他表进行连查操作

这张临时表应起别名

*参考视频 bilibili黑马程序员*

http://www.lryc.cn/news/196687.html

相关文章:

  • 使用Filter AND Interceptor校验等录(全网独一份,机不可失)
  • ubuntu20.04安装FTP服务
  • MyBatisPlus(二十)防全表更新与删除
  • 14.9 Socket 高效文件传输
  • 第二节 threejs简单案例
  • PowerShell批量修改DNS域名解析
  • uniapp(uncloud) 使用生态开发接口详情3(新增产品分类,产品列表,新闻列表)
  • XTU-OJ 1339-Interprime
  • FPGA中的LUT查找表工作原理。
  • Python爬虫:制作一个属于自己的IP代理模块
  • 解决QT中文乱码
  • GPIO基本原理
  • 算法通过村第十五关-超大规模|青铜笔记|海量找数
  • TCP、IP和HTTP的区别和联系
  • 【4】c++11新特性(稳定性和兼容性)—>final关键字
  • 23基于MATLAB的小波降噪,默认阈值消噪,强制消噪,给定软阈值消噪方法,数据直接替换后就可以跑。
  • 蓝桥杯 常用STL (C++) 未完待续
  • class id
  • Qt (QInputDialog 、QMessageBox、QMessageBox)对话框实战
  • Java 解析 cURL(bash) 命令
  • JDK21的虚拟线程是什么?和平台线程什么关系?
  • Unity DOTS Component概述
  • element ui 下拉框 选择月份和天数
  • 用Java包com.sun.net.httpserver下面的类实现一个简单的http服务器demo
  • unity 浏览器插件【embedded browser(原zfbrowser)】简单教程,使unity支持web h5页面,附软件下载链接
  • LeetCode算法位运算—只出现一次的数字
  • vcpkg manifest 的使用
  • 选择什么电容笔比较好?平板手写笔推荐
  • pdf转二维码怎么做?pdf二维码制作简单技巧
  • 【CANoe】TX Self-ACK自应答配置与CPAL实现