数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)

news2024/11/13 9:08:42

文章目录

  • DDL数据定义语言
    • 1、创建数据库
    • 2、创建表
    • 3、修改表结构
    • 4、删除
    • 5、数据类型
  • 列的约束
    • 主键约束(`primary key`)
    • 唯一约束(`unique key`)
    • 非空约束
    • 检查约束(`check`)
    • 外键约束(`foreign key`)
  • DCL数据控制语言
    • 1、先创建一个新用户
    • 2、查看用户权限
    • 3、给用户赋予权限
    • 4、回收用户权限
    • 5、MySQL权限分类
      • 数据库/数据表/数据列权限:
      • 全局管理MySQL用户权限:
      • 特别的权限:
    • 6、修改用户密码
    • 7、删除用户
  • TPL事务处理语言
    • 事务理解
    • 事务的四大特性(ACID)
    • 事务操作
    • 事务的隔离级别
    • 隔离级别
  • 常用SQL

MySQL基础知识:DDL、DML、DQL、DCL及TPL的使用
SQL分类
在这里插入图片描述

DDL数据定义语言

针对数据库对象进行操作,如数据库、表、视图等对象

1、创建数据库

create database 数据库名 [default charset utf8] ;

数据库名要求:不区分大小写,英文,见名知义

数据库默认字符集:latin1

2、创建表

create table 表名(
  列名 数据类型(长度),
  ......
  列名 数据类型(长度)
) [character set utf8 collate utf8_general_ci] ;

3、修改表结构

修改表名

alter table 原表名 rename [to] 新表名;

修改表中的列(列名、列类型、列长度)

alter table 表名 change 原列名 新列名 新类型(新长度);

新增一个列

alter table 表名 add 新列名 新类型(新长度);

删除一个列

alter table 表名 drop 原列名;

4、删除

删除table

drop table 表名;

删除数据库

drop database 数据库名;

5、数据类型

在这里插入图片描述

列的约束

表格中列的约束全部都是在创建表格之后做的表格列结构的修改。

需要用到DDL语句进行操作(alterdrop

主键约束(primary key

  1. 每一个表格内只能有一个列被设置为主键约束
  2. 主键约束通常是用来标记表格中数据的唯一存在
  3. 主键约束要求当前的列 不能为null
  4. 主键约束要求当前的列 值是唯一存在的 不能重复

添加主键约束:

语法:alter table 表名 add constraint 约束名字 约束类型 (列);

例:alter table myclass add constraint pk_myclass primary key (classid);

简写:alter table 表名 add primary key (列);

主键自增:

语法1:alter table 表名 modify 列名 字段类型 auto_increment;

例:alter table myclass modify classid int(4) auto_increment;

语法2:alter table 表名 change 列名 字段类型 auto_increment;

例:alter table myclass change classid int(4) auto_increment;

没有做起始值的说明,主键列的值会从1开始。

设置自增起始值:alter table 表名 auto_increment = 起始值;

删除主键约束:alter table 表名 drop primary key;

注意:删除主键约束以后,不重复的特性取消了,但非空特性还在。

需要手动取消非空:alter table 表名 modify 字段名 字段类型 null;

唯一约束(unique key

  1. 可以为表格中的某一个列添加唯一约束,唯一约束在表格中可以存在多个列
  2. 唯一约束表示的是列的值不能重复,但可以为空

添加唯一约束:

语法:alter table 表名 add constraint 约束名 约束类型 (列);

例:alter table myclass add constraint uk_myclass unique [key] (loc);

简写:alter table 表名 add unique key(字段); 约束名为默认的列名

删除唯一约束:alter table 表名 drop index 约束名;

非空约束

  1. 在表格中的某一个列上添加非空约束
  2. 当前列的值不能为null

添加非空约束:
语法1:alter table 表名 modify 原列名 原类型 原长度 [not] null default xxx;

语法2:alter table 表名 change 原列名 原列名 原类型 原长度 [not] null default xxx;

删除非空约束:

alter table 表名字 modify 列 类型 长度 null;

alter table 表名字 change 列 列 类型 长度 null;

检查约束(check

列在存值的时候做一个细致的检查

例如:范围是否合理

alter table student add constraint ck_sage check( sage>15 and sage<30);

外键约束(foreign key

  1. 约束自己表格内的信息不能随意填写
  2. 受到另外一个表格某一个列的影响,当前列的值要去另外一张表格内寻找(另外一张表格的列是唯一的【主键、唯一】)
  3. 表格中可以有多个列被设置为外键约束
  4. 当前列的值可以为空,可以重复

添加外键约束:
alter table 表名字 add constraint fk_当前表_关联表 foreign key(列) references 另一个表(列);

简写:
alter table student add foreign key(列) references 另一个表(列);

注意: 如果是简写的形式添加外键,外键的名字不是默认列名

查看外键约束:

通过show keys from 表; desc 表;show create table 表名;

PRI UNI MUL---->multiple(多样 并联)

删除外键约束
alter table 表名字 drop foreign key 约束名字;

注意:通过上述语句其实已经将外键约束删掉了

但会自动在当前表格内添加一个新的key

需要再次手动将这个生成的key删掉,外键约束才真的删除干净

alter table 表名字 drop key 约束名字;

DCL数据控制语言

数据控制语言Data Control Language:控制用户的权限

1、先创建一个新用户

语法:create user '用户名'@'IP' identified by '密码';
在这里插入图片描述

2、查看用户权限

语法:show grants for '用户名'@'IP';
在这里插入图片描述
用户被创建成功 (只有一个默认的权限 Usage 只允许登录 不允许做其他事情)

3、给用户赋予权限

语法:grant 权限 on 数据库名.表名 to '用户'@'IP';

赋予权限之后最好做一个刷新flush privileges;
在这里插入图片描述

在这里插入图片描述

4、回收用户权限

语法:revoke 权限 on 数据库名.表名 from '用户名'@'IP';
在这里插入图片描述

在这里插入图片描述
上述回收了用户删除数据表或数据库的权限。

5、MySQL权限分类

数据库/数据表/数据列权限:

Create: 建立新的数据库或数据表

Alter : 修改已存在的数据表(例如增加/删除列)

Drop : 删除数据表或数据库

Insert: 增加表的记录

Delete: 删除表的记录

Update: 修改表中已存在的记录

Select: 显示/搜索表的记录

References: 允许创建外键

Index : 建立或删除索引

Create View: 允许创建视图

Create Routine: 允许创建存储过程和包

Execute: 允许执行存储过程和包

Trigger: 允许操作触发器

Create User: 允许更改、创建、删除、重命名用户和收回所有权限

全局管理MySQL用户权限:

Grant Option: 允许向其他用户授予或移除权限

Show View: 允许执行SHOW CREATE VIEW语句

Show Databases: 允许账户执行SHOW DATABASE语句来查看数据库

Lock Table: 允许执行LOCK TABLES语句来锁定表

File: 在MySQL服务器上读写文件

Process: 显示或杀死属于其它用户的服务线程

Reload: 重载访问控制表,刷新日志等

ShutDown: 关闭MySQL服务

特别的权限:

All: 允许做任何事(和root一样)

Usage: 只允许登录,其它什么也不允许做

6、修改用户密码

  1. 查看用户密码
    select u.User, u.Host,u.authentication_string from mysql.user u where u.User = 'Lizi';

MySQL10.jpg

  1. 修改用户密码

    update mysql.user set authentication_string = password('新密码') where user = '用户名';

    刷新:flush privileges;

在这里插入图片描述
在这里插入图片描述

7、删除用户

语法:drop user '用户名'@'IP';
在这里插入图片描述

在这里插入图片描述

TPL事务处理语言

事务理解

SQL语句是我们给数据库发送指令,让数据库帮我们做事情。

事务:可以理解为是让数据库做的事情,可能存在多个 SQL 操作。

所有的操作应该是统一的,要么都成功,要么都失败。

事务的本质可以理解成:多线程并发操作同一张表格可能带来的安全问题。

事务的四大特性(ACID)

  1. Atomicity 原子性
    一个事务中的所有操作是一个整体,不可再分。事务中的所有操作要么都成功,要么都失败。

  2. Consistency 一致性
    一个用户操作了数据,提交以后,另一个用户看到的数据效果是一致。

  3. Isolation 隔离性

    • 多个用户并发访问数据库时,一个用户操作数据库,另一个用户不能有所干扰。

    • 多个用户之间的数据事务操作要互相隔离。

  4. Durability 持久性
    一个用户操作数据的事务一旦被提交(缓存–>文件),对数据库底层真实的改变是永久性的。

事务操作

  1. 开启一个事务
    每一次执行的一条sql语句之前,mysql数据库都会默认的开启
    begin;start transaction;

  2. 执行操作(执行SQL)

  3. 事务处理
    mysql数据库会默认的执行提交事务
    提交 commit
    回滚 rollback
    保存还原点 save point xx

事务的隔离级别

事务的隔离性可能会产生多线程并发操作同一个数据库表格的问题,会带来数据的安全隐患。

  1. 脏读:一个人读到了另外一个人还没有提交的数据。
    A、B在操作同一张表格
    A修改了数据,还没有提交,B读取到了
    A不提交了,回滚回来,B刚刚读取到的那些数据就是无用的----脏数据

  2. 不可重复读
    A、B在操作同一个表格
    A先读取了一些数据,读完之后B此时将数据做了修改/删除
    A再按照之前的条件重新读一遍,与第一次读取的不一致

  3. 幻读(虚读)
    A、B在操作同一个表格
    A先读取了一些数据,读完之后B此时将数据做了新增
    A再按照之前的条件重新读一遍,与第一次读取的不一致

隔离级别

  1. Serializable 级别最高,可以避免所有出现的问题,性能很慢

  2. Repeatable Read 可重复读 (避免脏读、不可重复读)

  3. Read Committed 读已提交 (避免脏读)

  4. Read UnCommitted 读未提交 (所有效果均无法保证)

MySQL数据库提供默认隔离级别 Repeatable Read
Oracle数据库提供默认隔离级别 Read Committed
查看数据库隔离级别:select @@tx_isolation;

在这里插入图片描述
修改隔离级别:set session transaction isolation level xxx;
一般情况下不需要改动。

常用SQL

# 显示有哪些database
show databases; 

#使用哪个数据库
use database名字;

# 显示当前数据库有哪些table
show tables;

# 查询数据库的字符集
select schema_name, default_character_set_name from information_schema.schemata where schema_name = `查询的数据库名`;

# 查询表格信息
show table status from 数据库名 like `表名`;

#查看表有什么约束
desc 表名;
show keys from 表名;
show create table 表名;

相关文章:
《数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(下:数据操作与查询》)

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

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

相关文章

顶顶通呼叫中心中间件-被叫路由、目的地绑定(mod_cti基于FreeSWITCH)

顶顶通呼叫中心中间件-被叫路由、目的地绑定(mod_cti基于FreeSWITCH) 1、配置分机 点击分机 -> 找到你需要设置的分机 ->呼叫路由设置为external&#xff0c;这里需要设置的分机是呼叫的并不是坐席的分机呼叫路由 2、配置拨号方案 点击拨号方案 -> 输入目的地绑定 …

C#实战 | 求解《丘建算经》百鸡问题

谈起古代数学&#xff0c;总会想起古希腊欧几里得的名著《几何原本》。而实际上&#xff0c;中国的《周髀算经》《九章算术》《缉古算经》等同样经典&#xff0c;尤其是《九章算术》&#xff0c;更以其算法实用性闻名世界。 中国古代数学的一些发展成果可谓惊艳&#xff0c;足…

不入耳耳机哪个牌子好用?五款卓越精品,小白必看!

怎么选到一款自己满意的开放式耳机&#xff1f;对于刚接触开放式耳机的朋友们来说&#xff0c;耳机的音质、续航、佩戴舒适度都是需要考虑到的&#xff0c;但是普通人往往很难去全面的了解分析耳机的这些性能配置。不入耳耳机哪个牌子好用&#xff1f;为了帮助大家解决这个难题…

Redis三种常用的缓存读写策略

Cache Aside Pattern&#xff08;旁路缓存模式&#xff09; 现在基本都用这个模式 Cache Aside Pattern 中服务端需要同时维系 db 和 cache&#xff0c;并且是以 db 的结果为准。 读写步骤&#xff1a; 写&#xff1a; 先更新 db&#xff0c;然后直接删除 cache 。 读 : …

PGCCC|【PostgreSQL】PG考证对工作上有什么好处# PG证书

认证 PostgreSQL 考证&#xff08;PostgreSQL Certification&#xff09;在工作上有以下几个好处&#xff1a; 增强专业能力&#xff1a;通过考证&#xff0c;可以系统地学习和掌握 PostgreSQL 数据库的知识和技能&#xff0c;提高自己的专业水平。 提升职业竞争力&#xff1…

Vue.js 生命周期详解:从创建到销毁的全过程

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 非常期待和您一起在这个小…

leetcode_189. 轮转数组

leetcode_189. 轮转数组 题目描述: 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 示例 1: 输入: nums [1,2,3,4,5,6,7], k 3 输出: [5,6,7,1,2,3,4] 解释: 向右轮转 1 步: [7,1,2,3,4,5,6] 向右轮转 2 步: [6,7,1,2,…

炎炎夏日 凉凉机房

夏季高温即将到来&#xff0c;温度过高&#xff0c;电梯故障频发。机房温控方式除了加装空调之外&#xff0c;您还知道其他的方式吗&#xff1f; 小伍告诉您一个小妙招&#xff1a;为电梯加装节能设备&#xff0c;小小机器大大能量。 通常电梯在轻载上行&#xff0c;重载下行和…

全国数据智能与智慧政务行业产教融合共同体学术年会暨广东行政职业学院(广东青年职业学院)第一届“求是论坛”成功举办

为进一步深化现代职业教育体系建设理论研究&#xff0c;丰富行业产教融合共同体实践探索&#xff0c;7月13日&#xff0c;全国数据智能与智慧政务行业产教融合共同体学术年会暨广东行政职业学院&#xff08;广东青年职业学院&#xff09;第一届“求是论坛”在广东行政职业学院&…

Apache Paimon 在蚂蚁的应用

摘要 &#xff1a;本文整理自 Apache Paimon Committer 闵文俊老师在5月16日 Streaming Lakehouse Meetup Online 上的分享。内容主要分为以下四个部分&#xff1a; 什么是 Paimon蚂蚁 Paimon 应用场景蚂蚁 Paimon 功能改进未来规划 一、什么是 Paimon 1. 实时更新 Paimon 是…

U盘文件夹失踪?两大数据恢复策略全解析

在数字化信息爆炸的今天&#xff0c;U盘作为我们日常工作中不可或缺的存储工具&#xff0c;承载着大量重要数据和文件。然而&#xff0c;当您突然发现U盘中的一个重要文件夹神秘消失时&#xff0c;那份焦急与无助感油然而生。本文旨在深入探讨U盘文件夹失踪的原因&#xff0c;并…

Linux安装mysql(超详细版)

步骤1&#xff1a;新建一个文件夹&#xff0c;专放从网络下载的文件 [rootiZ2zeh6vyxsq620zifz8jaZ home]#mkdir soft #在根目录下创建也可以 步骤2&#xff1a;切换目录&#xff0c;进入soft文件中 [rootiZ2zeh6vyxsq620zifz8jaZ /]# cd home/ #若第一步文件建在根目…

15- 微分方程

对三角函数不敏感

24暑假算法刷题 | Day15 | LeetCode 110. 平衡二叉树,257. 二叉树的所有路径,404. 左叶子之和,222. 完全二叉树的节点个数

目录 110. 平衡二叉树题目描述题解 257. 二叉树的所有路径题目描述题解 404. 左叶子之和题目描述题解 222. 完全二叉树的节点个数题目描述题解 110. 平衡二叉树 点此跳转题目链接 题目描述 给定一个二叉树&#xff0c;判断它是否是平衡二叉树 平衡二叉树 是指该树所有节点的…

AI算法16-贝叶斯线性回归算法Bayesian Linear Regression | BLR

贝叶斯线性回归算法简介 频率主义线性回归概述 线性回归的频率主义观点可能你已经学过了&#xff1a;该模型假定因变量&#xff08;y&#xff09;是权重乘以一组自变量&#xff08;x&#xff09;的线性组合。完整的公式还包含一个误差项以解释随机采样噪声。如有两个自变量时…

原码、补码、反码、移码是什么?

计算机很多术语翻译成中文之后&#xff0c;不知道是译者出于什么目的&#xff0c;往往将其翻译成一个很难懂的名词。 奇怪的数学定义 下面是关于原码的“吐槽”&#xff0c;可以当作扩展。你可以不看&#xff0c;直接去下一章&#xff0c;没有任何影响。 原码的吐槽放在前面是…

【元器件】二极管、三极管、MOS管

二极管 D 二极管是一种具有两个电极&#xff08;即正极和负极&#xff09;的电子器件。它是一种非线性元件&#xff0c;具有许多重要的功能和应用 三极管 Q 概述 一种控制电流的半导体器件&#xff0c;其作用是把微弱信号放大成幅度值较大的电信号&#xff0c;也用作无触点开…

代理IP服务中的代理池大小有何影响?

在当今数字化时代&#xff0c;网络爬虫已经成为获取各类信息必不可少的工具。在大规模数据抓取中&#xff0c;使用单一 IP 地址或同一 IP 代理往往会面临抓取可靠性降低、地理位置受限、请求次数受限等一系列问题。为了克服这些问题&#xff0c;构建代理池成为一种有效的解决方…

TikTok账号矩阵运营怎么做?

这几年&#xff0c;聊到出海避不过海外抖音&#xff0c;也就是TikTok&#xff0c;聊到TikTok电商直播就离不开账号矩阵&#xff1b; 在TikTok上&#xff0c;矩阵养号已经成为了出海电商人的流行策略&#xff0c;归根结底还是因为矩阵养号可以用最小的力&#xff0c;获得更大的…

沧穹科技助力杭州东站网约车服务全面升级

沧穹科技助力杭州东站完成网约车智能化服务全面革新升级&#xff0c;这一举措显著提升了杭州东站网约车服务的效率与乘客体验。以下是对这一革新升级的详细解析&#xff1a; 一、革新背景 随着网约车行业的快速发展&#xff0c;杭州东站作为华东地区重要的交通枢纽&#xff0c;…