MySQL-函数/约束/多表查询

news/2024/6/18 21:13:04 标签: mysql, 数据库

MySQL-函数

distinct-去重  //放在select后

1、字符串函数

SELECT 函数(参数)

CONCAT(S1,S2,S3...)-字符串拼接,拼接成一个字符串。

LOWER(str)-将字符串str全部转换为小写。

UPPER(str)-将字符串str全部转换为大写。

LPAD(str,n,pad)-左填充,用字符串pad对str的左边进行填充,达成n个字符串长度。

RPAD(str,n,pad)-右填充,用字符串pad对str的右边进行填充,达成n个字符串长度。

TRIM(str)-去掉字符串头部和尾部的空格。

SUBSTPING(str,start,len)-返回从字符串str从start位置起的len个长度的字符串。

2、数值函数

SELECT 函数(参数)

CEIL(x)-向上取整

FLOOR(x)-向下取整

MOD(x,y)-返回x/y的模

RAND()-返回0~1内的随机数

ROUND(x,y)-求参数x的四舍五入的值,保留y位小数

3、日期函数

SELECT 函数(参数)

CUPDATE()-返回当前日期

CUPTIME()-返回当前时间

NOW()-返回当前日期和时间

YEAR(date)-获取指定date的月份

MONTH(date)-获取指定date的月份

DAY(date)-获取指定date的日期 //DAY(now())得到的那一天

DATE-ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间间隔expr后的时间值

DATEDIFF(date1,date2)返回起始时间date1和结束时间date2之后的天数

4、流程控制函数

IF(value,t,f)-如果value为true,则返回t,否则返回f

IFNULL(value1,avlue2)-如果value1不为空,返回value1,否则返回value2

CASE WHEN [val1] THEN [res1] ...ELSE [default] END-如果val1为true,返回res1,…否则返回default默认值

CASE [expr] WHEN [val1 ] THEN [res1] ... ELSE [default] END-如果expr的值等于val1,返回res1,…否则返回default默认值

MySQL-约束

NOT NULL-非空约束
UNIQUE-唯一约束
PRIMARY-主键约束
DEFAULT-默认约束  //默认约束为1,defauat‘1’
CHECK-检查约束  //check(age>0 && age<120)
FOREIGN KEY-外键约束  

1、外键约束:

添加外键

1.CREATE TABLE 表名(
          字段名 数据类型,
           .....
          [CONSTRAINT] [外键名称] FOREIGN KEY [外键字段名] REFFRENCES 主表(主表名)
);

2.ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);

删除外键

ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;

MySQL-多表查询

1、多表关系

一对多:
多对多:创建第三个表关联其他两个
一对一:创建UNIQUE唯一主键

2、多表查询

SELECT * FROM 表名,表名;  //多表查询

SELECT * FROM 表名1,表名2 WHERE 表名1.id = 表名2.id;   //笛卡儿积

3、多表查询分类

连接查询 
内连接:A,B的交集部分
外连接:左连接,右连接
自连接
子查询

4、内连接

隐式内连接

SELECT 字段列表 FROM 表1,表2 WHERE 条件 ....;
//  条件:表名1.id = 表名2.id ,可以取别名

显式内连接

SELECT 字段列表 FROM 表1 [INNER] JOIN 表2 ON 连接条件....;   //inner可省略

5、外连接

左外连接

SELECT 字段列表 FROM 表1 LEFT [OUTER] JOIN 表2 ON 条件...;

右外连接

SELECT 字段列表 FROM 表1 RIGHT [OUTER] JOIN 表2 ON 条件...;

6、自连接

语法

SELECT 字段列表 FROM 表A 别名A JOIN 表B 别名B ON 条件....;

子连接查询,可以是内连接查询,也可以是外连接查询。

7、联合查询-union,union all

语法

SELECT 字段列表 FROM 表A.....
UNION[ALL]
SELECT 字段列表 FROM 表B......;


对于联合查询的多张表的列数和字段类型必须保持一致 。
union all 全部数据合在一起,union是要去重。

8、子查询

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

子查询结果不同,分为;
标量子查询(结果为单个值)
列子查询
行子查询
表子查询

1.标量子查询

单个值可以是数字、字符串、日期等

常用操作符:= <> < > >= <=

2.列子查询

返回结果是一列(多列)

常用操作符:
IN:指定范围内,多选一
NOT IN:不在指定范围内
ANY:返回列表中,任意一个满足即可
SOME :与ANY一样
ALL:返回列表的所有值都必须满足

//使用:in(2,4)、all (条件)

3.行子查询

返回结果是一行(多行)

常用操作符:=、<>、IN、NOT IN

4、表子查询

返回多行多列

常用操作符:IN


 

 


http://www.niftyadmin.cn/n/5520324.html

相关文章

NettyのNIOBIO原理解析

1、IO模型 在IO模型中&#xff0c;主要可分为同步与异步操作&#xff1a; 在同步 I/O 模型中&#xff0c;I/O 操作是阻塞的&#xff0c;当一个进程或线程执行 I/O 操作时&#xff0c;它会一直等待这个操作完成才继续执行后续的代码。 在异步 I/O 模型中&#xff0c;I/O 操作是非…

描述React中的函数组件和类组件之间的区别

React中的函数组件和类组件之间存在显著的区别&#xff0c;以下是对这些区别的详细描述&#xff1a; 语法与设计思想&#xff1a; 函数组件&#xff1a;采用函数式编程思想&#xff0c;使用纯JavaScript函数定义。函数组件接收一个输入参数props&#xff0c;并返回一个React元…

JBoss面试题精要和参考答案(3万字长文)

目录 JBoss应用服务器的主要功能是什么? 描述JBoss中的目录结构。 JBoss支持哪些Java EE规范? 什么是JBoss的独立模式和域模式? JBoss AS和WildFly有什么区别? 如何在Linux服务器上安装JBoss? 描述如何在JBoss中增加Java堆内存。 如何以独立模式启动JBoss? 解释…

el-tabl 表格行列转换(表头在左数据在右)

1 效果展示 1 空数据 2 有数据 2 完成代码 2.1 SchedulingTable.vue <template><div class="schedulingTable"><el-row :gutter="1" class="row-center"><el-col :span="3"><el-tag type="&quo…

linux下C语言如何操作文件(一)

本篇我们简单介绍一下在linux中如何使用C语言操作文件,首先我们在项目中创建file_util.c源文件和file_util.h头文件如图: 我们先编辑file_util.h文件,定义好常用的函数,源代码如下: #ifndef FILE_UTIL_INCLUDED #define FILE_UTIL_INCLUDED#include <stdbool.h> #i…

[环境配置]vscode通过ssh连接autodl进行项目开发

警告&#xff1a;如果使用VSCode直接执行或开终端执行训练程序&#xff0c;请在调试完成后最后通过screen/tmux工具开守护进程&#xff0c;确保程序不受SSH连接中断影响程序执行&#xff01; 官方文档&#xff1a;请戳 AutoDL使用方法&#xff1a; 在进行操作前您需要提前安装…

Mysql--基础知识点--86--慢查询

1 判断是不是网络、接口问题&#xff1b; 2 若不是网络接口问题&#xff0c;查看服务器性能cpu、内存、硬盘。若mysql的cpu很高则表示读写频率高&#xff0c;若网站的访问量又不高&#xff0c;则可能是(1)mysql参数问题&#xff1b;(2)linux系统参数&#xff1b;(3)mysql的sql语…

优化查询性能:DolphinDB 时间类型数据比较规则详解

在数据库中&#xff0c;时间是一种常见的数据类型。在处理时间数据时&#xff0c;比较操作是非常常见的需求。然而&#xff0c;在不同的场景下&#xff0c;对时间类型数据进行比较时应用的规则不同。本文将从 DolphinDB 支持的时间类型开始&#xff0c;由浅入深分别介绍时间类型…