首页 > 数据库 >N天爆肝数据库——MySQL(3)

N天爆肝数据库——MySQL(3)

时间:2024-01-09 22:02:38浏览次数:44  
标签:... 数据库 外键 查询 str MySQL 连接 SELECT 天爆

(N天爆肝数据库——MySQL(3))

本篇文章,主要对DCL、 函数、 约束和多表查询进行知识总结和学习。

期待和大家一起学习进步。

在这里插入图片描述

DCL

DCL-介绍

数据控制语言,用来管理数据库用户、控制数据库的访问权限。

DCL-管理用户

查询用户

USE mysql; SELECT * FROM user; 在这里插入图片描述

创建用户

CREATE USER ‘用户名’@’主机名’IDENTIFIED BY ’密码’;

修改用户密码

ALTER USER ’用户名’@’主机名’ IDENTIFIED WITH mysql_password BY ‘新密码’;

删除密码

DROP USER ‘用户名’@’主机名’;

注意:

本机名可以使用%统配
这类SQL开发人员操作较少,主要是数据库管理人员使用。

DCL-权限控制

MySQL常用

ALL,ALL PRIVILEGES 所有权限
SELECT 查询
INSERT 插入
UPDATE 修改
DELETE 删除
ALTER 修改表
DROP 删除数据库/表/视图
CREATE 创建数据库/表
![在这里插入图片描述](/i/ll/?i=dd8da57d2b434e9285b643dde136af36.png)
查询权限
SHOW CRANTS FOR‘用户名’@’主机名’;
授予权限
CREATE 权限列表 ON 数据库名.表名 TO ‘用户名’@’主机名’;
撤销权限
REVOKE 权限列表 ON 数据库名.表名 FROM‘用户名’@’主机名’;

注意:

多个权限之间,使用逗号分割
授权时,数据库名和表名可以使用*进行通配,代表所有。

在这里插入图片描述

函数

是指一段可以直被另一段程序调用的程序或代码

分类

字符串函数、数值函数、日期函数、流程函数

常用字符串函数

CONCAT(S1,S2,...Sn)字符串拼接,将S1,S2...Sn拼接成一个字符串
LOWER(str)将字符串str全部转为小写
UPPER(str)将字符串str全部转为大写
LPAD(str,n,pad)左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
RPAD(str,n,pad)右填充,用字符串pad对str的右边进行填充,达到n个字符串长度
TRIM(str)去掉字符串头部和尾部的空格
SUBSTRING(str,start,len)返回从字符串str从start位置起的len个长度的字符串

常用的数值函数

CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0~1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数

常用的日期函数

CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定date的年份
MONTH(date)获取指定date的月份
DAY(date)获取指定date的日期
DATE_ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间
	间隔expr后的时间值
DATEDIFF(date1,date2)返回起始日期date1和结束时间date2之间的天数

流程函数

IF(value,t,f)如果value为true,返回t,否则返回f
IFNULL(value1,value2)如果value1不为空,返回value1,否则返回value2
CASE WHEN [val]THEN[res1]...ELSE[default] END 如果val1为true,返
	回res1,...否则返回default默认值
CASE[exper] WHEN[val1] THEN[res1]...ELSE[default] END 如果expr的值
等于val1返回res1,..否则返回default默认值

在这里插入图片描述

约束:

概念

约束是作用于表中字段上的规则,用于限制存储在表中的数据。

目的

保证数据库中数据的正确,有效性和完整性。

分类:

非空约束:NOT NULL 限制该字段的数据不能为null
唯一约束: UNIQUE 保证该字段的所有数据都是唯一、不重复的
主键约束:PRRIMARY KEY 主键是一行数据的唯一标识,要求非空且唯一
默认约束:DEFAULT 保存数据时,如果未指定该字段的值,则采用默认值
检查约束:CHECK 保证字段值满足某一个条件
外键约束:FOREIGN KEY 用来让两张表的数据之间建立连接,保证数据的一致性
		和完整性

外键约束:

概念

外键用来让两张表中的数据之间建立连接,从而保证数据的一致性和完整性。

语法:

添加外键

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

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

删除外键

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

删除/更新行为

NO ACTION
RESTRICT
CASCADE
SET NULL
SET DEFAULT
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREING KEY (外键名称)REFERNCES 主表名(主表名段名)ON UPDATE CASCADE ON DELETE CASCADE;

多表关系

概述

各个表结构之间相互存在联系有:一对多,多对多,一对一

一对多(多对一)

实现:在多的一方建立外键,指向一的一方的主键
举例:员工和部门

多对多

实现:建立第三张中间表,中间表至少包含两个外键,费别关联两方的主键
案例:学生于课程

一对一

实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
案例:用户与用户详细信息的关系

多表查询

概述:指从多张表中查询数据

笛卡尔积:在多表查询时,需要消除无效的笛卡尔积

分类

连接查询

  	内连接:相当于查询A,B交集部分数据
	外连接
		左外连接:查询左表所有数据,以及两张表交集部分数据
		右外连接:查询游标所有数据,以及两张表交集部分数据
	自连接:当前表与自身的连接查询,自连接必须使用表别名
	子查询

多表查询-内连接

隐式内连接

SELECT 字段列表 FROM 表1,表2 WHERE 条件...;

显示内连接

SELECT 字段列表 FROM 表1[INNER]JOIN表2 ON连接条件...;

注意

内连接查询时两张表交集的部分

多表查询-外连接

左外连接

 SELECT 字段列表 FROM 表1 LEFT [OUTER]JOIN表2 ON条件...;
	相当于查找表1(左表)的所有数据,包含表1和表2交集部分的数据

右外连接

SELECT 字段列表 FROM 表1 RIGHT [OUTER]JOIN表2 ON条件...;
	 相当于查找表2(右表)的所有数据,包含表1和表2交集部分的数据

多表查询-自连接

语法

SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON条件...;
自连接查询,可以是内连接查询,也可以是外连接查询。

联合查询-union,union all

对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集

语法:

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

注意:

 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
  union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。

在这里插入图片描述

子查询

概念

SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
 SELECT * FROM t1 WHERE column1=(SELECT column1 FROM t2);
  子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。

根据子查询结果不同,分为:

标量子查询(子查询结果为单个值)
列子查询(子查询结果为一列)
行子查询(子查询结果为一行)

根据子查询位置,分为

WHERE之后
FROM之后
SELECT之后

标签:...,数据库,外键,查询,str,MySQL,连接,SELECT,天爆
From: https://blog.51cto.com/u_16193391/9166422

相关文章

  • mysql8.0触发器
    1、触发器概述MySQL从5.0.2版本开始支持触发器。MySQL的触发器和存储过程一样,都是嵌入到MySQL服务器的一段程序。触发器是由事件来触发某个操作,这些事件包括INSERT、UPDATE、DELETE事件。所谓事件就是指用户的动作或者触发某项行为。如果定义了触发程序,当数据库执行这些语句......
  • openGauss学习笔记-191 openGauss 数据库运维-常见故障定位案例-出现Error:No space l
    openGauss学习笔记-191openGauss数据库运维-常见故障定位案例-出现Error:Nospaceleftondevice提示191.1出现“Error:Nospaceleftondevice”提示191.1.1问题现象在数据库使用过程中,出现如下错误提示。Error:Nospaceleftondevice191.1.2原因分析磁盘空间不足......
  • 在Django中,`python manage.py makemigrations`和`python manage.py migrate`是两个用
    在Django中,`pythonmanage.pymakemigrations`和`pythonmanage.pymigrate`是两个用于数据库迁移的命令,它们的主要区别在于:-`pythonmanage.pymakemigrations`:这个命令主要是记录我们对`models.py`的所有改动,并且将这个改动迁移到`migrations`这个文件下生成一个文件,例如:`0001`......
  • Mybatis 拦截器实现单数据源内多数据库切换 | 京东物流技术团队
    物流的分拣业务在某些分拣场地只有一个数据源,因为数据量比较大,将所有数据存在一张表内查询速度慢,也为了做不同设备数据的分库管理,便在这个数据源内创建了多个不同库名但表完全相同的数据库,如下图所示:现在需要上线报表服务来查询所有数据库中的数据进行统计,那么现在的问题来了,该如何......
  • mysqlshell备份脚本
    非常简单的备份脚本[root@mydb01~]#catmysqlsh_backup.sh#!/bin/bashMIP=192.168.5.130MU=rootMp=rootMP=3306backup_dir=/mysql/backup/mysqlbackup"_"$MIP"_"`(date+%Y%m%d)`/mysql/jerry/mysqlshell/bin/mysqlsh-h$MIP-u$MU-p$Mp-P$MP--util......
  • PGSQL(PostgreSQL)数据库基础篇:PostgreSQL 的 主要优点 、 劣势 、体系结构 、核心功
    PostgreSQL的主要优点1.维护者是PostgreSQLGlobalDevelopmentGroup,首次发布于1989年6月。2.操作系统支持WINDOWS、Linux、UNIX、MACOSX、BSD。3.从基本功能上来看,支持ACID、关联完整性、数据库事务、Unicode多国语言。4.表和视图方面,PostgreSQL支持临时表,而物化视图,可以......
  • Spring Boot中使用JPA进行数据库操作
    在Java后端开发中,数据库操作是一个非常重要的环节。SpringBoot作为当前非常流行的轻量级Java开发框架,提供了很多便捷的工具和功能,使得数据库操作变得更加简单快捷。在SpringBoot中,我们可以使用JPA(JavaPersistenceAPI)来进行数据库操作。JPA是一种将对象持久化到数据库的方法,它遵......
  • 使用mysql
    使用MySQL数据库需要以下步骤:安装MySQL:首先,你需要在你的系统上安装MySQL。你可以从MySQL的官方网站下载适用于各种操作系统的安装程序。启动MySQL服务:安装完成后,你需要启动MySQL服务。在Linux上,你可以使用以下命令:bashsudoservicemysqlstartsudoservicemysqlstart登录MySQL:......
  • Docker安装MySQL
    Docker安装MySQL和直接安装MySQL的区别如下1:资源开销:Docker方式的资源开销更大。Docker方式需要运行一个MySQL容器,并需要额外运行Docker引擎,所以总体占用更多资源。直接安装方式只需要运行MySQL服务,资源占用更小。隔离性:Docker方式隔离性更好。Docker可以将MySQL完全隔离在容器内,不......
  • mysql8.0全局变量持久化
    在MySQL数据库中,全局变量可以通过SETGLOBAL语句来设置。例如,设置服务器语句超时的限制,可以通过设置系统变量max_execution_time来实现:SETGLOBALMAX_EXECUTION_TIME=2000;使用SETGLOBAL语句设置的变量值只会临时生效,数据库重启后,服务器又会从MySQL配置文件中读取变量的默认值......