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

数据库基础(6) . DDL

3.2.DDL

数据定义语言 DDL : Data Definition Language

用于创建新的数据库、模式(schema)、表(tables)、视图(views)以及索引(indexes)等。

常见的DDL语句包括SHOWCREATEDROPALTER等。

3.2.0.常用关键字

3.2.0.1.操作
  1. **SHOW 展示 ** :

    • SHOW语句通常用来列出数据库中的各种对象,例如数据库、表、列、索引等。
  2. CREATE 创建

    • CREATE语句用于创建新的数据库对象,如数据库、表、索引、视图等。
  3. DROP 移除

    • DROP语句用于删除已存在的数据库对象。
  4. ALTER 调整

    • ALTER语句用于修改现有的数据库对象。它可以用来添加、删除或修改表中的列,改变表的名字,更改存储引擎等。
3.2.0.2.对象
  1. Database(数据库)

    • 数据库是一个组织化的数据集合,可以包含多个相关的数据表。数据库是最高级别的逻辑容器,在其中可以创建多个表、视图、索引等数据库对象。
  2. Table(表)

    • 表是数据库中的主要存储单元,用于存储特定类型的数据集。表由行(记录)和列组成,每一行表示一个实体,每一列表示实体的一个属性。
  3. Column(列 , 字段)

    • 列是表中的一个字段,用于存储某种类型的数据。每个列都有一个名称和一个数据类型。
  4. Key(键)

    • 键是一个或一组列,用于唯一标识表中的记录。主要有以下几种类型的键:
      • Primary Key(主键):用于唯一标识表中的每一行记录。一个表只能有一个主键,并且不能包含空值。
      • Foreign Key(外键):用于建立两个表之间的链接,表示这两个表之间的关系。外键必须参照另一个表的主键或唯一键。
      • Unique Key(唯一键):用于保证列中的值是唯一的,但是允许有空值的存在。
      • Index(索引):虽然索引本身不是键,但它可以帮助加速对表中数据的访问速度。

3.2.1.库结构操作

3.2.1.1.创建数据库

语法 : create database 库名

说明 : 库名 可以是英文, 数字, 中文, 下横杠_, 中横杠- , 但 建议使用 英文 , 多个单词用 下横杠连接

​ 库名不能重复

create database a0;
3.2.1.2.先判断存在再创建

如果 a0 库已经存在 会报错

[Err] 1007 - Can't create database 'a0'; database exists

语法 : create database IF NOT EXISTS 库名 如果不存在相同名字的数据库就创建, 否则只提示完成,但并不重新创建

说明 : IF NOT EXISTS 如果不存在

create database IF NOT EXISTS a0 ;
3.2.1.3.查询数据库

语法 : show databases 注意 database 加 s

show databases;

执行后会以表格形式列出数据库名

3.2.1.4.根据名字数据库

语法 : show databases like 条件 条件可以使用通配符 %进行匹配

show databases like 'a%';

执行后会以表格形式列出数据库名是以 'a’开头的数据库

3.2.1.5.指定使用数据库

语法 : use 库名 通过库名选择当前要使用的数据库

use a0;
3.2.1.6.修改数据库

数据库名是不能被修改的

通常只是用来修改数据库的字符编码

语法 : ALTER DATABASE 库名 内容

ALTER DATABASE a0 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3.2.1.7.删除数据库

语法 : drop database 库名

drop database a0;

数据库 a0 及其所有内容将被删除

注意 :

在执行DROP DATABASE操作之前,确保已经备份了重要的数据,并且确认删除是必要的。

如果只是想临时卸载数据库,可以考虑使用其他方法,如导出数据或将数据库设置为不可用状态,而不是直接删除。

3.2.2.表结构操作

3.2.2.1.建立表

在建立表的同时,

要指定表中的字段信息, 当然对字段的信息后期还可以修改

多个 字段信息之间使用 , 间隔

语法 :

create table 表名
(
字段名1 varchar(20),
字段名2 int
)

添加 学生表

create table student
(stu_id int ,stu_name       varchar(50) ,stu_birth        date
);
3.2.2.2.查询表结构

语法 : desc 表名

desc student;
3.2.2.3.修改字段为主键

语法 : alter table 表名 add primary key (字段名)

alter table student add primary key (stu_id);
3.2.2.4.修改主键为自增

语法 : alter table 表名 modify 主键名 int auto_increment

alter table student modify stu_id int auto_increment;
3.2.2.5.创建时指定主键

也可以在创建时 直接指定主键

create table emp
(emp_id              int  primary key  ,emp_name        varchar(50),emp_age           int 
);

指定主键时也可以指定 自增长

create table person
(    per_id int  primary key  auto_increment ,per_name varchar(50)
);

也可以单独指定

create table team
(team_id       int not null auto_increment ,team_title    varchar(50) ,stu_count    int ,primary key (team_id)
);
3.2.2.6.字段约束

在创建表时,字段的约束是非常重要的组成部分,它们有助于确保数据的完整性和一致性。以下是常见的字段约束及其含义:

  1. NOT NULL

    • 定义:该约束确保字段不能存储空值(NULL)。

    • 示例

      CREATE TABLE users (id INT NOT NULL,name VARCHAR(50) NOT NULL
      );
      
  2. UNIQUE

    • 定义:该约束确保字段中的值在整个表中是唯一的。可以应用于多个字段,形成组合唯一键。

    • 示例

      CREATE TABLE users (email VARCHAR(100) UNIQUE
      );
      
  3. PRIMARY KEY

    • 定义:作为唯一标识符的字段,表中每一行的数据都可以通过主键唯一确定。主键字段不能包含空值,并且必须是唯一的。

    • 示例

      CREATE TABLE users (id INT PRIMARY KEY
      );
      
  4. FOREIGN KEY

    • 定义:外键约束用于确保表之间的关系。它引用另一个表的主键。

    • 示例

      CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id)
      );
      
  5. CHECK

    • 定义:该约束用于限制字段中的值,以满足某些条件。

    • 示例

      CREATE TABLE users (age INT CHECK (age >= 18 AND age <= 120)
      );
      
  6. DEFAULT

    • 定义:如果没有给字段赋值,默认值将被自动插入。

    • 示例

      CREATE TABLE users (registration_date DATE DEFAULT CURRENT_DATE
      );
      
  7. AUTO_INCREMENT

    • 定义:此属性用于自动生成一个唯一的整数值,通常用于主键字段。

    • 示例

      CREATE TABLE users (id INT AUTO_INCREMENT PRIMARY KEY
      );
      
3.2.2.7.查询表
show tables;
3.2.2.8.修改表 增加字段

语法 : alter table 表名 add 字段 字段类型

给 学生 增加 体重 字段

alter table student add weight int;
3.2.2.9.修改表 修改字段类型

语法 : alter table 表名 modify 字段名 改后类型

将 体重 字段类型修改成 浮点数

alter table student modify weight  double;
3.2.2.10.修改表 修改字段名称

语法 : alter table 表名 rename column 原名 to 现名

alter table student rename column weight to stu_weight;
3.2.2.11.修改表 删除一个字段

语法 : alter table 表名 drop column 字段名

删除 体重 字段

alter table student drop column stu_weight;
3.2.2.12.修改表名

语法 : rename table 原名 to 新名

rename table person to people;
3.2.2.13.删除表

语法 : drop table 表名

drop table emp;
3.2.2.14.先判断存在再删除

如果不存在的表 删除会报错

[SQL]drop table emp;
[Err] 1051 - Unknown table 'a0.emp'

可以先判断 再删除

drop table if exists person;
3.2.2.15.添加表同时附带注释

在创建表时 可以使用 comment 关键字来 设置注释

drop table if exists teacher;create table teacher (tea_id int(11) not null  auto_increment comment '教师主键',tea_name varchar(50)  comment '教师姓名',primary key (tea_id)
) comment = 'teacher 教师表';
3.2.2.16.修改增加注释

通过 alter table

-- 修改字段的注释
alter table student 
modify column stu_name varchar(50) comment '学生姓名';-- 修改表的注释
alter table student comment 'student 学生';
3.2.2.17. 学生表增加外键
-- 增加外键字段 team_id
alter table student add team_id int;-- 将 team_id 与 team关联,  外键 起名FK_Reference_1
alter table student add constraint FK_Reference_1 foreign key (team_id)references team (team_id) on delete restrict on update restrict;

相关文章:

数据库基础(6) . DDL

3.2.DDL 数据定义语言 DDL : Data Definition Language 用于创建新的数据库、模式&#xff08;schema&#xff09;、表&#xff08;tables&#xff09;、视图&#xff08;views&#xff09;以及索引&#xff08;indexes&#xff09;等。 常见的DDL语句包括SHOW、CREATE、DRO…...

2024 年度分布式电力推进(DEP)系统发展探究

分布式电力推进 &#xff08;DEP&#xff09; 的发明是为了尝试和改进现代飞机&#xff1a;我们如何提高飞机的效率&#xff1f;提高它的机动性&#xff1f;缩短它的起飞和着陆距离&#xff1f; DEP 概念有望在提高性能的同时减少燃料消耗&#xff0c;在我们孜孜不倦地努力使航…...

vue通过iframe方式嵌套grafana图表

文章目录 前言一、iframe方式实现xxx.xxx.com拒绝连接登录不跳转Cookie 的SameSite问题解决不显示额外区域(kiosk1) 前言 我们的前端是vue实现的&#xff0c;监控图表是在grafana中的&#xff0c;需要在项目web页面直接显示grafana图表 一、iframe方式实现 xxx.xxx.com拒绝连…...

简单介绍下 Java 中的 @Validated 和 @Valid 注解的区别?

文章目录 Valid&#xff1a;专注单个对象的深度验证适用场景使用示例小结 Validated&#xff1a;聚焦接口分组的批量验证适用场景使用示例小结 主要区别总结如何选择&#xff1f;总结推荐阅读文章 在 Java 开发中&#xff0c;为了确保输入数据符合我们的要求&#xff0c;少不了…...

SpringBoot配置Rabbit中的MessageConverter对象

SpringAMQP默认使用SimpleMessageConverter组件对消息内容进行转换 SimpleMessageConverter&#xff1a; only supports String, byte[] and Serializable payloads仅仅支持String、Byte[]和Serializable对象Jackson2JsonMessageConverter&#xff1a;was expecting (JSON Str…...

C++ 错题本--duplicate symbol问题

顾名思义, duplicate symbol是重复符号的意思! 代码是用来做什么的(问题缘由 & 代码结构) 写排序算法, 提出了一个公共的头文件用来写一些工具方法, 比如打印数组内容. 以便于不同文件代码需要打印数组内容的时候,直接引入相关头文件即可, 但是编译时出现了 duplicate sym…...

Cursor的chat与composer的使用体验分享

经过一段时间的试用&#xff0c;下面对 Composer 与 Chat 的使用差别进行总结&#xff1a; 一、长文本及程序文件处理方面 Composer 在处理长文本时表现较为稳定&#xff0c;可以对长文进行更改而不会出现内容丢失的情况。而 Chat 在更改长的程序文件时&#xff0c;有时会删除…...

【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数

最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组&#xff0c;和一个整数 k &#xff0c;然后让我们在数组选出最多的 k 个0&#xff1b;这里翻转最多 k 个0的意思&#xff0c;是翻转 0 的个数< k&#xff0c;而不是一定要翻转 k …...

《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址

《TCP/IP网络编程》学习笔记 | Chapter 8&#xff1a;域名及网络地址 《TCP/IP网络编程》学习笔记 | Chapter 8&#xff1a;域名及网络地址域名系统什么是域名&#xff1f;DNS 服务器IP 地址和域名之间的转换使用域名的必要性利用域名获取 IP 地址利用 IP 地址获取域名 基于 Wi…...

FastHTML快速入门:调试模式和 URL中的变量

调试模式 FastHTML基于FastAPI友好的装饰器模式来指定URL&#xff0c;并添加了额外功能&#xff1a; main.py from fasthtml.common import * app, rt fast_app() rt("/") def get():return Titled("FastHTML", P("让我们开始吧&#xff01;"…...

C++高级编程(8)

八、标准IO库 1.输入输出流类 1)非格式化输入输出 2)put #include <iostream> #include <string> ​ using namespace std; int main() {string str "123456789";for (int i str.length() - 1; i > 0; i--) {cout.put(str[i]); //从最后一个字符开…...

AUTOSAR_EXP_ARAComAPI的7章笔记(2)

☞返回总目录 相关总结&#xff1a;服务发现实现策略总结 7.2 服务发现的实现策略 如前面章节所述&#xff0c;ara::com 期望产品供应商实现服务发现的功能。服务发现功能基本上是在 API 级别通过 FindService、OfferService 和 StopOfferService 方法定义的&#xff0c;协议…...

【C++】 C++游戏设计---五子棋小游戏

1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则&#xff1a; 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…...

仿RabitMQ 模拟实现消息队列项目开发文档2(个人项目)

项目需求分析 核心概念 现在需要将这个项目梳理清楚了&#xff0c;便于之后的代码实现。项目中具有一个生产消费模型&#xff1a; 其中生产者和消费者的个数是可以灵活改变的&#xff0c;让系统资源更加合理的分配。消息队列的主逻辑和上面的逻辑基本一样&#xff0c;只不过我…...

李佳琦回到巅峰背后,双11成直播电商分水岭

时间倏忽而过&#xff0c;又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》&#xff0c;到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较&#xff0c;再到直播间运营一时手快多发了红包……整个双11周期下来&#xff0c;李佳琦直播间在刷新…...

云计算在教育领域的应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 云计算在教育领域的应用 云计算在教育领域的应用 云计算在教育领域的应用 引言 云计算概述 定义与原理 发展历程 云计算的关键技…...

C语言 | Leetcode C语言题解之第543题二叉树的直径

题目&#xff1a; 题解&#xff1a; typedef struct TreeNode Node;int method (Node* root, int* max) {if (root NULL) return 0;int left method (root->left, max);int right method (root->right, max);*max *max > (left right) ? *max : (left right);…...

6、If、While、For、Switch

6、If、While、For、Switch 一、If 1、if-else if (boolean) {代码块 } else if (boolean) {代码块 } else if (boolean) {代码块 } else { // 默认情况代码块 }关于IDEA单元测试控制台不能输入数据的问题&#xff1a; https://blog.csdn.net/m0_72900498/article/details/…...

萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?

随着智慧城市和数字化转型的推进&#xff0c;视频监控系统已成为保障公共安全、提升管理效率的重要工具。特别是在大中型项目中&#xff0c;跨区域的网络化视频监控需求日益增长&#xff0c;这要求视频监控管理平台不仅要具备强大的视频资源管理能力&#xff0c;还要能够适应多…...

【多线程】线程池如何知道一个线程的任务已经完成

目录 1. 说明2. 任务的生命周期3. 状态更新4. 线程间的协作5. 内部数据结构6. 回调与通知7. 线程池的关闭与清理 1. 说明 1.线程池通过一系列内部机制来知道一个线程的任务已经完成。2.这些机制主要涉及任务的生命周期管理、状态更新以及线程间的协作。 2. 任务的生命周期 1…...

浅谈 React Hooks

React Hooks 是 React 16.8 引入的一组 API&#xff0c;用于在函数组件中使用 state 和其他 React 特性&#xff08;例如生命周期方法、context 等&#xff09;。Hooks 通过简洁的函数接口&#xff0c;解决了状态与 UI 的高度解耦&#xff0c;通过函数式编程范式实现更灵活 Rea…...

无法与IP建立连接,未能下载VSCode服务器

如题&#xff0c;在远程连接服务器的时候突然遇到了这个提示。 查阅了一圈&#xff0c;发现是VSCode版本自动更新惹的祸&#xff01;&#xff01;&#xff01; 在VSCode的帮助->关于这里发现前几天VSCode自动更新了&#xff0c;我的版本号变成了1.100.3 才导致了远程连接出…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

Qt Http Server模块功能及架构

Qt Http Server 是 Qt 6.0 中引入的一个新模块&#xff0c;它提供了一个轻量级的 HTTP 服务器实现&#xff0c;主要用于构建基于 HTTP 的应用程序和服务。 功能介绍&#xff1a; 主要功能 HTTP服务器功能&#xff1a; 支持 HTTP/1.1 协议 简单的请求/响应处理模型 支持 GET…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

Mysql中select查询语句的执行过程

目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析&#xff08;Parser&#xff09; 2.4、执行sql 1. 预处理&#xff08;Preprocessor&#xff09; 2. 查询优化器&#xff08;Optimizer&#xff09; 3. 执行器…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...

免费数学几何作图web平台

光锐软件免费数学工具&#xff0c;maths,数学制图&#xff0c;数学作图&#xff0c;几何作图&#xff0c;几何&#xff0c;AR开发,AR教育,增强现实,软件公司,XR,MR,VR,虚拟仿真,虚拟现实,混合现实,教育科技产品,职业模拟培训,高保真VR场景,结构互动课件,元宇宙http://xaglare.c…...

论文阅读笔记——Muffin: Testing Deep Learning Libraries via Neural Architecture Fuzzing

Muffin 论文 现有方法 CRADLE 和 LEMON&#xff0c;依赖模型推理阶段输出进行差分测试&#xff0c;但在训练阶段是不可行的&#xff0c;因为训练阶段直到最后才有固定输出&#xff0c;中间过程是不断变化的。API 库覆盖低&#xff0c;因为各个 API 都是在各种具体场景下使用。…...