辽宁住房和城乡建设厅网站首页/网站搜索排名靠前
文章目录
- 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语句进行操作(alter
、drop
)
主键约束(primary key
)
- 每一个表格内只能有一个列被设置为主键约束
- 主键约束通常是用来标记表格中数据的唯一存在
- 主键约束要求当前的列 不能为
null
值 - 主键约束要求当前的列 值是唯一存在的 不能重复
添加主键约束:
语法: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
)
- 可以为表格中的某一个列添加唯一约束,唯一约束在表格中可以存在多个列
- 唯一约束表示的是列的值不能重复,但可以为空
添加唯一约束:
语法:alter table 表名 add constraint 约束名 约束类型 (列);
例:alter table myclass add constraint uk_myclass unique [key] (loc);
简写:alter table 表名 add unique key(字段); 约束名为默认的列名
删除唯一约束:alter table 表名 drop index 约束名;
非空约束
- 在表格中的某一个列上添加非空约束
- 当前列的值不能为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
)
- 约束自己表格内的信息不能随意填写
- 受到另外一个表格某一个列的影响,当前列的值要去另外一张表格内寻找(另外一张表格的列是唯一的【主键、唯一】)
- 表格中可以有多个列被设置为外键约束
- 当前列的值可以为空,可以重复
添加外键约束:
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、修改用户密码
- 查看用户密码
select u.User, u.Host,u.authentication_string from mysql.user u where u.User = 'Lizi';
-
修改用户密码
update mysql.user set authentication_string = password('新密码') where user = '用户名';
刷新:
flush privileges;
7、删除用户
语法:drop user '用户名'@'IP';
TPL事务处理语言
事务理解
SQL语句是我们给数据库发送指令,让数据库帮我们做事情。
事务:可以理解为是让数据库做的事情,可能存在多个 SQL 操作。
所有的操作应该是统一的,要么都成功,要么都失败。
事务的本质可以理解成:多线程并发操作同一张表格可能带来的安全问题。
事务的四大特性(ACID)
-
Atomicity 原子性
一个事务中的所有操作是一个整体,不可再分。事务中的所有操作要么都成功,要么都失败。 -
Consistency 一致性
一个用户操作了数据,提交以后,另一个用户看到的数据效果是一致。 -
Isolation 隔离性
-
多个用户并发访问数据库时,一个用户操作数据库,另一个用户不能有所干扰。
-
多个用户之间的数据事务操作要互相隔离。
-
-
Durability 持久性
一个用户操作数据的事务一旦被提交(缓存–>文件),对数据库底层真实的改变是永久性的。
事务操作
-
开启一个事务
每一次执行的一条sql语句之前,mysql数据库都会默认的开启
begin;
或start transaction;
-
执行操作(执行SQL)
-
事务处理
mysql
数据库会默认的执行提交事务
提交commit
回滚rollback
保存还原点save point xx
事务的隔离级别
事务的隔离性可能会产生多线程并发操作同一个数据库表格的问题,会带来数据的安全隐患。
-
脏读:一个人读到了另外一个人还没有提交的数据。
A、B在操作同一张表格
A修改了数据,还没有提交,B读取到了
A不提交了,回滚回来,B刚刚读取到的那些数据就是无用的----脏数据 -
不可重复读
A、B在操作同一个表格
A先读取了一些数据,读完之后B此时将数据做了修改/删除
A再按照之前的条件重新读一遍,与第一次读取的不一致 -
幻读(虚读)
A、B在操作同一个表格
A先读取了一些数据,读完之后B此时将数据做了新增
A再按照之前的条件重新读一遍,与第一次读取的不一致
隔离级别
-
Serializable
级别最高,可以避免所有出现的问题,性能很慢 -
Repeatable Read
可重复读 (避免脏读、不可重复读) -
Read Committed
读已提交 (避免脏读) -
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的实战应用(下:数据操作与查询》)
相关文章:

数据库管理的艺术(MySQL):DDL、DML、DQL、DCL及TPL的实战应用(上:数据定义与控制)
文章目录 DDL数据定义语言1、创建数据库2、创建表3、修改表结构4、删除5、数据类型 列的约束主键约束(primary key)唯一约束(unique key)非空约束检查约束(check)外键约束(foreign keyÿ…...

成为CMake砖家(5): VSCode CMake Tools 插件基本使用
大家好,我是白鱼。 之前提到过,白鱼的主力 编辑器/IDE 是 VSCode, 也提到过使用 CMake Language Support 搭配 dotnet 执行 CMakeLists.txt 语法高亮。 对于阅读 CMakeLists.txt 脚本, 这足够了。 而在 C/C 开发过程中ÿ…...

【简洁明了】调节大模型的prompt的方法【带案例】
简明调节大模型的prompt的方法【简洁明了带案例】 1. 明确任务目标2. 提供上下文3. 指定格式4. 限制输出长度5. 使用示例6. 逐步引导7. 提供反面例子8. 使用CoT思维链9. 反复试验和调整方法九解释:乔哈里窗检视 最后 因为网上给出的调节prompt都 过于详细ÿ…...

【操作系统】文件管理——文件存储空间管理(个人笔记)
学习日期:2024.7.17 内容摘要:文件存储空间管理、文件的基本操作 在上一章中,我们学习了文件物理结构的管理,重点学习了操作系统是如何实现逻辑结构到物理结构的映射,这显然是针对已经存储了文件的磁盘块的࿰…...

微软GraphRAG +本地模型+Gradio 简单测试笔记
安装 pip install graphragmkdir -p ./ragtest/input#将文档拷贝至 ./ragtest/input/ 下python -m graphrag.index --init --root ./ragtest修改settings.yaml encoding_model: cl100k_base skip_workflows: [] llm:api_key: ${GRAPHRAG_API_KEY}type: openai_chat # or azu…...

数学建模-Topsis(优劣解距离法)
介绍 TOPSIS法(Technique for Order Preference by Similarity to Ideal Solution) 可翻译为逼近理想解排序法,国内常简称为优劣解距离法 TOPSIS 法是一种常用的综合评价方法,其能充分利用原始数据的信息, 其结果能精…...

嵌入式linux相机 转换模块
convert_manager.c #include <config.h> #include <convert_manager.h> #include <string.h>static PT_VideoConvert g_ptVideoConvertHead NULL;/*********************************************************************** 函数名称: Register…...

【自学安全防御】二、防火墙NAT智能选路综合实验
任务要求: (衔接上一个实验所以从第七点开始,但与上一个实验关系不大) 7,办公区设备可以通过电信链路和移动链路上网(多对多的NAT,并且需要保留一个公网IP不能用来转换) 8,分公司设备可以通过总…...

【Android】传给后端的Url地址被转码问题处理
一、问题 为什么使用Gson().toJson的时候,字符串中的会被转成\u003d 在 Gson 中,默认情况下会对某些特殊字符进行 HTML 转义,以确保生成的 JSON 字符串在 HTML 中是安全的。因此,字符 会被转义为 \u003d。你可以通过禁用 HTML 转…...

1.厦门面试
1.Vue的生命周期阶段 vue生命周期分为四个阶段 第一阶段(创建阶段):beforeCreate,created 第二阶段(挂载阶段):beforeMount(render),mounted 第三阶段&#…...

设计模式使用场景实现示例及优缺点(行为型模式——状态模式)
在一个遥远的国度中,有一个被称为“变幻之城”的神奇城堡。这座城堡有一种特殊的魔法,能够随着王国的需求改变自己的形态和功能。这种神奇的变化是由一个古老的机制控制的,那就是传说中的“状态宝石”。 在变幻之城中,有四颗宝石&…...

抖音短视频seo矩阵系统源码(搭建技术开发分享)
#抖音矩阵系统源码开发 #短视频矩阵系统源码开发 #短视频seo源码开发 一、 抖音短视频seo矩阵系统源码开发,需要掌握以下技术: 网络编程:能够使用Python、Java或其他编程语言进行网络编程,比如使用爬虫技术从抖音平台获取数据。…...

基于 asp.net家庭财务管理系统设计与实现
博主介绍:专注于Java .net php phython 小程序 等诸多技术领域和毕业项目实战、企业信息化系统建设,从业十五余年开发设计教学工作 ☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟 我的博客空间发布了1000毕设题目 方便大家学习使用感兴趣的可以先…...

allure_pytest:AttributeError: ‘str‘ object has no attribute ‘iter_parents‘
踩坑记录 问题描述: 接口自动化测试时出现报错,报错文件是allure_pytest库 问题分析: 自动化测试框架是比较成熟的代码,报错也不是自己写的文件,而是第三方库,首先推测是allure_pytest和某些库有版本不兼…...

C语言 反转链表
题目链接:https://leetcode.cn/problems/reverse-linked-list/description/?envTypestudy-plan-v2&envIdselected-coding-interview 完整代码: /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* };*/// 反转链表…...

MFC CRectTracker 类用法详解
CRectTracker 类并非 Microsoft Foundation Class (MFC) 库中应用很广泛的一个类,一般教科书中很少有提到。在编程中如果需编写选择框绘制以及选择框大小调整、移动等程序时,用CRectTracker 类就会做到事半而功倍。下面详细介绍MFC CRectTracker 类。 M…...

好玩的调度技术-场景编辑器
好玩的调度技术-场景编辑器 文章目录 好玩的调度技术-场景编辑器前言一、演示一、代码总结好玩系列 前言 这两天写前端写上瘾了,顺手做了个好玩的东西,好玩系列也好久没更新,正好作为素材写一篇文章,我真的觉得蛮好玩的ÿ…...

提高自动化测试脚本编写效率 5大关键注意事项
提高自动化测试脚本编写效率能加速测试周期,减少人工错误,提升软件质量,促进项目按时交付,增强团队生产力和项目成功率。而自动化测试脚本编写效率低下,往往会导致测试周期延长,增加项目成本,延…...

护眼落地灯哪个更护眼?2024年度最值得入手的5款护眼大路灯推荐
落地灯和台灯哪个更护眼?之所以我们眼睛经常酸痛,很大部分的原因是因为我们长时间在不良光线下,将注意力集中在屏幕或书本上会导致眼睛肌肉过度使用,引发疲劳和酸痛。但也不排除不正确的坐姿或者工作环境缺乏适当的照明引起的&…...

DP讨论——适配器、桥接、代理、装饰器模式通用理解
学而时习之,温故而知新。 共性 适配器、桥接、代理和装饰器模式,实现上基本没啥区别,怎么区分?只能从上下文理解,看目的是啥。 它们,我左看上看下看右看,发现理解可以这么简单:都是A类调用B/…...

Apache AGE的MATCH子句
MATCH子句允许您在数据库中指定查询将搜索的模式。这是检索数据以在查询中使用的主要方法。 通常在MATCH子句之后会跟随一个WHERE子句,以添加用户定义的限制条件到匹配的模式中,以操纵返回的数据集。谓词是模式描述的一部分,不应被视为仅在匹…...

Netty Websocket
一、WebSocket 协议概述 WebSocket 是一种在单个 TCP 连接上进行全双工通信的协议。它允许服务端主动向客户端推送数据,从而实现了实时通信。WebSocket 建立在 HTTP 之上,但与 HTTP 的轮询(Polling)和长轮询(Long Pol…...

用户注册业务逻辑、接口设计和实现、前端逻辑
一、用户注册业务逻辑分析 二、用户注册接口设计和定义 2.1. 设计接口基本思路 对于接口的设计,我们要根据具体的业务逻辑,设计出适合业务逻辑的接口。设计接口的思路: 分析要实现的业务逻辑: 明确在这个业务中涉及到几个相关子…...

ubuntu搭建harbor私仓
1、环境准备 链接: https://pan.baidu.com/s/1q4XBWPd8WdyEn4l253mpUw 提取码: 7ekx --来自百度网盘超级会员v2的分享 准备一台Ubuntu 机器:192.168.124.165 将上面两个文件考入Ubuntu上面 2、安装harbor 安装Docker Harbor仓库以容器方式运行,需要先安装好docker,参考:…...

深层神经网络示例
维度说明: A[L]、Z[L]:(本层神经元个数、样本数) W[L]:(本层神经元个数、上层神经元个数) b[L]:(本层神经元个数、1) dZ[L]:dA[L] * g’A…...

vue中获取剪切板中的内容
目录 1.说明 2.示例 3.总结 1.说明 在系统中的画面或者时外部文件中进行拷贝处理后,在页面中可以获取剪切板的内容。 2.示例 方式①(直接获取) // 异步函数获取剪切板内容 async function getClipboardContent(ev: any) {try {ev.preventDefault()const clip…...

十五、【机器学习】【监督学习】- 神经网络回归
系列文章目录 第一章 【机器学习】初识机器学习 第二章 【机器学习】【监督学习】- 逻辑回归算法 (Logistic Regression) 第三章 【机器学习】【监督学习】- 支持向量机 (SVM) 第四章【机器学习】【监督学习】- K-近邻算法 (K-NN) 第五章【机器学习】【监督学习】- 决策树…...

知识图谱和 LLM:利用Neo4j驾驭大型语言模型(探索真实用例)
这是关于 Neo4j 的 NaLLM 项目的一篇博客文章。这个项目是为了探索、开发和展示这些 LLM 与 Neo4j 结合的实际用途。 2023 年,ChatGPT 等大型语言模型 (LLM) 因其理解和生成类似人类的文本的能力而风靡全球。它们能够适应不同的对话环境、回答各种主题的问题,甚至模拟创意写…...

目标检测入门:4.目标检测中的一阶段模型和两阶段模型
在前面几章里,都只做了目标检测中的目标定位任务,并未做目标分类任务。目标检测作为计算机视觉领域的核心人物之一,旨在从图像中识别出所有感兴趣的目标,并确定它们的类别和位置。现在目标检测以一阶段模型和两阶段模型为代表的。…...

zookeeper+kafka消息队列群集部署
kafka拓扑架构 zookeeper拓扑架构...