当前位置: 首页 > news >正文

1.数据库概述和三种主要控制语言

我们需要一个数据库管理系统,这个管理系统可以是关系型的,也可以是非关系型的

在管理系统存储数据库,在数据库中存储工作表

1.创建⼀个新的数据库
create database 数据库名 default charset utf8mb4;
其实创建⼀个数据库只需要使⽤ create database 数据库名;
就能够创建⼀个数据库,
但是我们不得不给创建的数据库设置⼀个默认的字符集,那么为什么要设置
utf8mb4?在MySQL8.0以前MySQL使⽤的默认的字符集为latin1,这个latin1连中
⽂都不能保存,所以我们最起码要设置为utf8,但是如果数据库中要存储emoji
号,⼀个emoji符号占4个字节,utf8或者其他字符集不能存储emoji符号,所以要
使⽤utf8mb4来存储,其实MySQL8.0版本开始,默认字符集就是utf8mb4了。
2.如果要删除已创建的数据库,可以使⽤ drop database 数据库名;
如果再次执⾏删除这个数据库的命令,则会报错。我们可以从SQL中添加⼀个存
在性判断。
drop database if exists 数据库名;
这次,如果数据库存在,则删除,不存在则提⽰警告。
3.数据库三种语言
我们将SQL划分为三类:
数据操作语⾔(DML):⽤于添加,删除,更新和查询数据库记录,并检查数据
完整性,常⽤的语句关键字主要包括SELECTUPDATEINSERTDELETE
等。
数据定义语⾔(DDL):主要是⽤在定义或改变表(TABLE)的结构、数据类
型、表之间的链接和约束等初始化⼯作上,它们⼤多在建⽴表和修改表时使⽤。
常⽤的语句关键字主要包括CREATEALTERDROP等。
数据控制语⾔(DCL):主要是⽤来设置或更改数据库⽤户或⾓⾊权限的语句,
常⻅的作⽤是⽤于创建⽤户、给⽤户授权、撤销⽤户授权等,包括GRANT
REVOKE等语句。

### 1. **数据操作语言 (DML) - "日常办公员"**

你可以把它想象成一个**日常在表格里工作的普通员工**。

*   **做什么?** 他们的工作就是每天和表格里的**具体数据**打交道。
*   **例子:**
*   **`SELECT`**:就像你打开表格,用“查找”功能找某个客户的信息,比如“查一下张三的电话号码”。
*   **`INSERT`**:就像你新增一条记录,比如“把新来的员工李四的信息填到表格里”。
*   **`UPDATE`**:就像你修改已有信息,比如“把王五的电话号码更新为新号码”。
*   **`DELETE`**:就像你删掉一条记录,比如“把已经离职的赵六的信息从表格里删掉”。

**总结:** DML 就是处理**数据本身**的增、删、改、查。你不动表格的结构,只操作里面的内容。

---

### 2. **数据定义语言 (DDL) - "表格设计师"**

这就像一个**设计和修改表格结构的工程师**。

*   **做什么?** 他不关心表格里填了什么数据,他关心的是**表格长什么样**——有哪些列?每列是什么类型(文字、数字、日期)?哪个是主键?
*   **例子:**
*   **`CREATE`**:就像你第一次创建一个新表格,比如“新建一个‘员工信息表’,要有姓名、工号、部门、入职日期这几列”。
*   **`ALTER`**:就像你发现表格设计得不够好,要修改结构,比如“给‘员工信息表’加一列‘紧急联系人’”。
*   **`DROP`**:就像你决定这个表格完全没用了,直接把它整个删掉,比如“把旧的‘实习生名单’表彻底删除”。

**总结:** DDL 就是定义和修改**表格的结构**(建表、改表、删表)。它决定了数据能以什么形式存在。

---

### 3. **数据控制语言 (DCL) - "保安队长"**

这就像公司的**门卫或权限管理员**。

*   **做什么?** 他不管你具体填了什么数据,也不管表格怎么设计。他只管**谁能进来,能干什么**。
*   **例子:**
*   **`GRANT`**:就像给某个员工发门禁卡和权限,比如“允许财务部的小红可以查看和修改‘工资表’”。
*   **`REVOKE`**:就像收回权限,比如“小明离职了,收回他对所有数据库的访问权限”。

**总结:** DCL 就是管理**谁有权限**对数据库做什么操作,保证数据安全。

---

**简单一句话总结:**

*   **DML**:**操作数据**(增删改查内容)。
*   **DDL**:**定义结构**(建表改表删表)。
*   **DCL**:**控制权限**(谁可以看、可以改)。

http://www.dtcms.com/a/390060.html

相关文章:

  • 找到nohup启动的程序并杀死
  • 电磁干扰EMI (Electromagnetic Interference)是什么?
  • python提取域名
  • PR工具timing report中setup time的计算过程
  • 低延迟垃圾收集器:挑战“不可能三角”
  • 【测试】发版测试准入准出标准
  • 第一部分:HTML
  • 贪心算法应用:带权任务间隔调度问题详解
  • 视频监控大数据建模分析
  • IP的重要性
  • 远程访问管理爱快路由器
  • 算法 --- 优先级队列(堆)
  • Kindle出现电池感叹号图标和黄灯闪烁怎么办?
  • 摄像头模块在无人机上的应用
  • 深度学习篇GRU---LSTM和RNN的折中方案
  • Doris聚合表和物化视图选型对比
  • 互补色颜色对应的RGB
  • Python定义UDS诊断服务(8):SecurityAccess(0x27)
  • 第1节 工具(剪映剪映小助手)准备及安装(Coze扣子空间剪映小助手教程)
  • 大模型提示词Prompt工程:1-万能公式-完整指南
  • 8.30美团技术岗算法第三题
  • CentOS 7 一键安装 vsftpd 并创建可登录 FTP 用户 test
  • k8s自定义调度器实现路径
  • 服务器数据恢复—RAIDZ硬盘“惹祸”导致服务器崩溃的数据恢复过程
  • 20250917_车辆定位系统aidata-01Apache Doris数据库备份+恢复+清理 流程操作文档
  • Redis 7.0 ACL实战:RBAC模型实现精细化权限控制
  • Lightrag 文档处理不成功(httpx.ReadTimeout 为主)的解决步骤与方法总结
  • Spring Boot + MySQL MCP 集成标准流程
  • 基于RK3588与ZYNQ7045的ARM+FPGA+AI实时系统解决方案
  • 基于Linux,看清C++的动态库和静态库