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

news2024/12/23 14:42:20

本篇文章,主要对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 创建数据库/表
![在这里插入图片描述](https://img-blog.csdnimg.cn/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之后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/744538.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Overleaf论文投稿

1.Overleaf 具体投稿 一步一步教!!!以Springer Nature为例 2.如何在overleaf上寻找会议或期刊的模板 LaTex期刊模板下载与使用

Mocha Pro 2023 v10.0.2(win/mac)无套路安装教程

Mocha Pro 2023 Mocha Pro是一款世界知名的软件和插件,用于平面运动跟踪、旋转描记、对象移除、图像稳定和PowerMesh有机扭曲跟踪。 Mocha的工具对于视觉效果和后期制作至关重要,在最近每一部获得奥斯卡最佳视觉效果提名的电影中都发挥了重要作用。了解…

天翎MyApps低代码平台案例分享—阿米检测设备管理系统

项目背景:阿米检测技术有限公司(以下简称为“阿米检测”)隶属于中国航天科技集团,是北京航天计量测试技术研究所下属全资公司,2018年由国家财政部正式发文批准成立。司转化航天高端技术,开展测量方法应用、…

【dij变形】牛客练习赛93 C

C-点权_牛客练习赛93 (nowcoder.com) 题意&#xff1a; 思路&#xff1a; 重要的是在松弛的时候要满足什么条件才开始松弛 这里是用两个点来松弛一个点 Code&#xff1a; #include <bits/stdc.h>//#define int long longusing namespace std;const int mxn1e510; co…

Android的内存泄漏分析

目录 1、内存详情 1.1、内存溢出 1.2 、内存泄漏 1.3、内存抖动 2、垃圾回收机制 2.1、垃圾回收算法&#xff08;标记--清除&#xff09; 2.2、垃圾回收算法&#xff08;标记--整理&#xff09; 2.3、复制算法 2.4、分代回收算法 3.GCRoot原理 3.1、可达性分析法…

VSCODE 设置同步network Error 问题

前言 这个问题等解决方法如下&#xff1a; 获取到github以及vscode-auth.github.com的ip&#xff0c;添加到host&#xff0c;随后使用命令行刷新host&#xff0c;重新认证即可 第一步&#xff0c;查看log文件&#xff0c; 打开 vscode&#xff0c;使用快捷指令ctrl(command)…

对象池介绍

对象池介绍 对象池是一种常见的优化技术&#xff0c;用于减少游戏运行时的内存分配和垃圾回收。对象池维护了一组已经创建的对象实例&#xff0c;这些对象可以被多次重复使用&#xff0c;而不需要每次都重新创建和销毁。对象池的主要优点是可以减少内存分配和垃圾回收的次数&a…

第一百零四天学习记录:C++核心:类和对象Ⅶ(五星重要)继承下

继承同名成员处理方式 1、访问子类同名成员&#xff0c;直接访问即可 2、访问父类同名成员&#xff0c;需要加作用域 #include<iostream> using namespace std; class Base { public:Base(){m_A 100;}int m_A;void func(){cout << "Base - func()调用"…

途乐证券-逆市拉升!这一板块超10股涨停

7月12日&#xff0c;A股商场全体走低&#xff0c;个股跌多涨少&#xff0c;厄尔尼诺的冲击波也“搅动”了A股商场&#xff0c;种业、虚拟电厂等概念股纷繁走强。轿车产业链个股继续活泼&#xff0c;超10股涨停。 2023年中期成绩预告仍如火如荼发表中&#xff0c;成绩“预喜”股…

SpringCloud入门实战(十三)Nacos服务注册与发现+配置管理详解

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

电脑网络最基本的常识简介(合集)

电脑网络最基本的常识简介 什么是HTML? HTML(Hyper Text Mark-up Language )即超文本标记语言&#xff0c;是 WWW 的描述语言&#xff0c;由 Tim Berners-lee提出。设计 HTML 语言的目的是为了能把存放在一台电脑中的文本或图形与另一台电脑中的文本或图形方便地联系在一起&a…

蚁群算法—ACA

&#x1f34e;道阻且长&#xff0c;行则将至。&#x1f353; 目录 一、蚁群算法简介&#x1f353;1.ACA基本思想2.ACA基本原理3.ACA基本步骤 二、算法求解TSP问题&#x1f34e;1.导入数据2.计算城市间相互距离3.初始化参数4.迭代寻找最佳路径5.结果显示End 一、蚁群算法简介&a…

软件 - 配置安装 Photoshop 的 RID 独立运行版本

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131673004 Adobe Photoshop 是一款专业的图像处理软件,广泛应用于平面设计、摄影、插画、视频制作等领域,可以对各种格式的图片进行编辑、修饰、合成、优化等操作,创…

SpringBoot + Vue 实现酒店客房管理系统

目录 1 问题的提出 5 2系统开发的可行性研究 6 2.1 技术上可行性分析 6 系统现阶段的发展过程中&#xff0c;利用现有人力和物力是完全具备的能力开发出来 6 2.2 经济的可行性分析 6 2.3 操作可行性分析 6 3 需求分析 7 3.1 需求描述 7 3.2 功能需求分析 7 3.3 非功能需求分析…

JDBC学习笔记

目录 一、JDBC 1&#xff1a;为什么要学习JDBC技术 2、JDBC技术概述与理解 3、JDBC使用步骤分析 3.1、注册驱动 3.2 、获取连接 3.3、创建发送sql语句对象 3.4、发送sql语句 3.5、结果集解析 3.6、资源关闭 一、JDBC 1&#xff1a;为什么要学习JDBC技术 1、Java和数…

【雕爷学编程】Arduino动手做(117)---P10V706LED屏模组3

37款传感器与执行器的提法&#xff0c;在网络上广泛流传&#xff0c;其实Arduino能够兼容的传感器模块肯定是不止这37种的。鉴于本人手头积累了一些传感器和执行器模块&#xff0c;依照实践出真知&#xff08;一定要动手做&#xff09;的理念&#xff0c;以学习和交流为目的&am…

亚马逊买家号如何绑定信用卡

要在亚马逊上绑定信用卡作为买家号的支付方式&#xff0c;请按照以下步骤进行操作&#xff1a; 1、登录亚马逊账户&#xff1a;使用您的亚马逊账户用户名和密码登录到亚马逊网站。 2、导航至"我的账户"&#xff1a;在页面右上角&#xff0c;将鼠标悬停在"你好…

安装使用docker-compose

Docker-Compose项目是Docker官方的开源项目&#xff0c;负责实现对Docker容器集群的快速编排 Docker-Compose将所管理的容器分为三层&#xff0c;分别是工程&#xff08;project&#xff09;&#xff0c;服务&#xff08;service&#xff09;以及容器&#xff08;container&…

【单周期CPU】LoongArch | LA32R | 二选一控制器MUX | 数据通路

前言&#xff1a;本章内容主要是演示在vivado下利用Verilog语言进行单周期简易CPU的设计。一步一步自己实现模型机的设计。本章先介绍单周期简易CPU中数据通路的设计。 &#x1f4bb;环境&#xff1a;一台内存4GB以上&#xff0c;装有64位Windows操作系统和Vivado 2017.4以上版…