前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >N天爆肝数据库——MySQL(3)

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

作者头像
学编程的小程
发布2023-10-11 15:41:32
1820
发布2023-10-11 15:41:32
举报
文章被收录于专栏:学习笔记ol
N天爆肝数据库——MySQL(3)

这是专栏链接,大家可以看一看,提提意见

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

代码语言:javascript
复制
期待和大家一起学习进步。
在这里插入图片描述
在这里插入图片描述

DCL

DCL-介绍
代码语言:javascript
复制
数据控制语言,用来管理数据库用户、控制数据库的访问权限。
DCL-管理用户
查询用户

USE mysql; SELECT * FROM user;

在这里插入图片描述
在这里插入图片描述
创建用户
代码语言:javascript
复制
CREATE USER ‘用户名’@’主机名’IDENTIFIED BY ’密码’;
修改用户密码
代码语言:javascript
复制
ALTER USER ’用户名’@’主机名’ IDENTIFIED WITH mysql_password BY ‘新密码’;
删除密码
代码语言:javascript
复制
DROP USER ‘用户名’@’主机名’;
注意:
代码语言:javascript
复制
本机名可以使用%统配
这类SQL开发人员操作较少,主要是数据库管理人员使用。
DCL-权限控制
MySQL常用
代码语言:javascript
复制
ALL,ALL PRIVILEGES 所有权限
SELECT 查询
INSERT 插入
UPDATE 修改
DELETE 删除
ALTER 修改表
DROP 删除数据库/表/视图
CREATE 创建数据库/表
![在这里插入图片描述](https://img-blog.csdnimg.cn/dd8da57d2b434e9285b643dde136af36.png)
查询权限
代码语言:javascript
复制
SHOW CRANTS FOR‘用户名’@’主机名’;
授予权限
代码语言:javascript
复制
CREATE 权限列表 ON 数据库名.表名 TO ‘用户名’@’主机名’;
撤销权限
代码语言:javascript
复制
REVOKE 权限列表 ON 数据库名.表名 FROM‘用户名’@’主机名’;
注意:
代码语言:javascript
复制
多个权限之间,使用逗号分割
授权时,数据库名和表名可以使用*进行通配,代表所有。
在这里插入图片描述
在这里插入图片描述

函数

代码语言:javascript
复制
是指一段可以直被另一段程序调用的程序或代码
分类
代码语言:javascript
复制
字符串函数、数值函数、日期函数、流程函数
常用字符串函数
代码语言:javascript
复制
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个长度的字符串
常用的数值函数
代码语言:javascript
复制
CEIL(x)向上取整
FLOOR(x)向下取整
MOD(x,y)返回x/y的模
RAND()返回0~1内的随机数
ROUND(x,y)求参数x的四舍五入的值,保留y位小数
常用的日期函数
代码语言:javascript
复制
CURDATE() 返回当前日期
CURTIME() 返回当前时间
NOW()返回当前日期和时间
YEAR(date)获取指定date的年份
MONTH(date)获取指定date的月份
DAY(date)获取指定date的日期
DATE_ADD(date,INTERVAL expr type)返回一个日期/时间值加上一个时间
	间隔expr后的时间值
DATEDIFF(date1,date2)返回起始日期date1和结束时间date2之间的天数
流程函数
代码语言:javascript
复制
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默认值
在这里插入图片描述
在这里插入图片描述

约束:

概念
代码语言:javascript
复制
约束是作用于表中字段上的规则,用于限制存储在表中的数据。
目的
代码语言:javascript
复制
保证数据库中数据的正确,有效性和完整性。
分类:
代码语言:javascript
复制
非空约束:NOT NULL 限制该字段的数据不能为null
唯一约束: UNIQUE 保证该字段的所有数据都是唯一、不重复的
主键约束:PRRIMARY KEY 主键是一行数据的唯一标识,要求非空且唯一
默认约束:DEFAULT 保存数据时,如果未指定该字段的值,则采用默认值
检查约束:CHECK 保证字段值满足某一个条件
外键约束:FOREIGN KEY 用来让两张表的数据之间建立连接,保证数据的一致性
		和完整性

外键约束:

概念
代码语言:javascript
复制
外键用来让两张表中的数据之间建立连接,从而保证数据的一致性和完整性。
语法:

添加外键

代码语言:javascript
复制
	CREATE TABLE 表名(
	字段名 数据类型,
	...
	[CONSTRAINT][外键名称]FOREIGN(外键字段名)REFERENCES 主表(主表列名)
);

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

删除外键

代码语言:javascript
复制
ALTER TABLE 表名DROP FOREIGN  KEY 外键名称;
删除/更新行为
代码语言:javascript
复制
NO ACTION
RESTRICT
CASCADE
SET NULL
SET DEFAULT
代码语言:javascript
复制
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREING KEY (外键名称)REFERNCES 主表名(主表名段名)ON UPDATE CASCADE ON DELETE CASCADE;

多表关系

概述
代码语言:javascript
复制
各个表结构之间相互存在联系有:一对多,多对多,一对一
一对多(多对一)
代码语言:javascript
复制
实现:在多的一方建立外键,指向一的一方的主键
举例:员工和部门
多对多
代码语言:javascript
复制
实现:建立第三张中间表,中间表至少包含两个外键,费别关联两方的主键
案例:学生于课程
一对一
代码语言:javascript
复制
实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的(UNIQUE)
案例:用户与用户详细信息的关系

多表查询

概述:指从多张表中查询数据
代码语言:javascript
复制
笛卡尔积:在多表查询时,需要消除无效的笛卡尔积
分类
连接查询
代码语言:javascript
复制
  	内连接:相当于查询A,B交集部分数据
	外连接
		左外连接:查询左表所有数据,以及两张表交集部分数据
		右外连接:查询游标所有数据,以及两张表交集部分数据
	自连接:当前表与自身的连接查询,自连接必须使用表别名
	子查询

多表查询-内连接

隐式内连接
代码语言:javascript
复制
SELECT 字段列表 FROM 表1,表2 WHERE 条件...;
显示内连接
代码语言:javascript
复制
SELECT 字段列表 FROM 表1[INNER]JOIN表2 ON连接条件...;
注意
代码语言:javascript
复制
内连接查询时两张表交集的部分

多表查询-外连接

左外连接
代码语言:javascript
复制
 SELECT 字段列表 FROM 表1 LEFT [OUTER]JOIN表2 ON条件...;
	相当于查找表1(左表)的所有数据,包含表1和表2交集部分的数据
右外连接
代码语言:javascript
复制
SELECT 字段列表 FROM 表1 RIGHT [OUTER]JOIN表2 ON条件...;
	 相当于查找表2(右表)的所有数据,包含表1和表2交集部分的数据

多表查询-自连接

语法
代码语言:javascript
复制
SELECT 字段列表 FROM 表A 别名A JOIN 表A 别名B ON条件...;
自连接查询,可以是内连接查询,也可以是外连接查询。

联合查询-union,union all

代码语言:javascript
复制
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集
语法:
代码语言:javascript
复制
SELECT 字段列表 FROM 表A...
UNION[ALL]
SELECT 字段列表 FROM 表B...;
注意:
代码语言:javascript
复制
 对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
  union all 会将全部的数据直接合并在一起,union 会对合并之后的数据去重。
在这里插入图片描述
在这里插入图片描述

子查询

概念
代码语言:javascript
复制
SQL语句中嵌套SELECT语句,称为嵌套查询,又称子查询。
 SELECT * FROM t1 WHERE column1=(SELECT column1 FROM t2);
  子查询外部的语句可以是INSERT/UPDATE/DELETE/SELECT的任何一个。
根据子查询结果不同,分为:
代码语言:javascript
复制
标量子查询(子查询结果为单个值)
列子查询(子查询结果为一列)
行子查询(子查询结果为一行)
表子查询(子查询结果为多行多列)
根据子查询位置,分为
代码语言:javascript
复制
WHERE之后
FROM之后
SELECT之后
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-09-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • N天爆肝数据库——MySQL(3)
  • 这是专栏链接,大家可以看一看,提提意见
    • 本篇文章,主要对DCL、 函数、 约束和多表查询进行知识总结和学习。
      • DCL
        • DCL-介绍
        • DCL-管理用户
        • DCL-权限控制
      • 函数
        • 分类
        • 常用字符串函数
        • 常用的数值函数
        • 常用的日期函数
        • 流程函数
      • 约束:
        • 概念
        • 目的
        • 分类:
      • 外键约束:
        • 概念
        • 语法:
      • 多表关系
        • 概述
      • 多表查询
        • 概述:指从多张表中查询数据
        • 分类
      • 多表查询-内连接
        • 隐式内连接
        • 显示内连接
        • 注意
      • 多表查询-外连接
        • 左外连接
        • 右外连接
      • 多表查询-自连接
        • 语法
      • 联合查询-union,union all
        • 语法:
        • 注意:
      • 子查询
        • 概念
        • 根据子查询结果不同,分为:
        • 根据子查询位置,分为
    相关产品与服务
    云数据库 MySQL
    腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档