数据库基础(6) . DDL
3.2.DDL
数据定义语言 DDL : Data Definition Language
用于创建新的数据库、模式(schema)、表(tables)、视图(views)以及索引(indexes)等。
常见的DDL语句包括SHOW
、CREATE
、DROP
、ALTER
等。
3.2.0.常用关键字
3.2.0.1.操作
-
**SHOW 展示 ** :
SHOW
语句通常用来列出数据库中的各种对象,例如数据库、表、列、索引等。
-
CREATE 创建 :
CREATE
语句用于创建新的数据库对象,如数据库、表、索引、视图等。
-
DROP 移除 :
DROP
语句用于删除已存在的数据库对象。
-
ALTER 调整:
ALTER
语句用于修改现有的数据库对象。它可以用来添加、删除或修改表中的列,改变表的名字,更改存储引擎等。
3.2.0.2.对象
-
Database(数据库):
- 数据库是一个组织化的数据集合,可以包含多个相关的数据表。数据库是最高级别的逻辑容器,在其中可以创建多个表、视图、索引等数据库对象。
-
Table(表):
- 表是数据库中的主要存储单元,用于存储特定类型的数据集。表由行(记录)和列组成,每一行表示一个实体,每一列表示实体的一个属性。
-
Column(列 , 字段):
- 列是表中的一个字段,用于存储某种类型的数据。每个列都有一个名称和一个数据类型。
-
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.字段约束
在创建表时,字段的约束是非常重要的组成部分,它们有助于确保数据的完整性和一致性。以下是常见的字段约束及其含义:
-
NOT NULL
-
定义:该约束确保字段不能存储空值(NULL)。
-
示例:
CREATE TABLE users (id INT NOT NULL,name VARCHAR(50) NOT NULL );
-
-
UNIQUE
-
定义:该约束确保字段中的值在整个表中是唯一的。可以应用于多个字段,形成组合唯一键。
-
示例:
CREATE TABLE users (email VARCHAR(100) UNIQUE );
-
-
PRIMARY KEY
-
定义:作为唯一标识符的字段,表中每一行的数据都可以通过主键唯一确定。主键字段不能包含空值,并且必须是唯一的。
-
示例:
CREATE TABLE users (id INT PRIMARY KEY );
-
-
FOREIGN KEY
-
定义:外键约束用于确保表之间的关系。它引用另一个表的主键。
-
示例:
CREATE TABLE orders (order_id INT PRIMARY KEY,user_id INT,FOREIGN KEY (user_id) REFERENCES users(id) );
-
-
CHECK
-
定义:该约束用于限制字段中的值,以满足某些条件。
-
示例:
CREATE TABLE users (age INT CHECK (age >= 18 AND age <= 120) );
-
-
DEFAULT
-
定义:如果没有给字段赋值,默认值将被自动插入。
-
示例:
CREATE TABLE users (registration_date DATE DEFAULT CURRENT_DATE );
-
-
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 用于创建新的数据库、模式(schema)、表(tables)、视图(views)以及索引(indexes)等。 常见的DDL语句包括SHOW、CREATE、DRO…...
2024 年度分布式电力推进(DEP)系统发展探究
分布式电力推进 (DEP) 的发明是为了尝试和改进现代飞机:我们如何提高飞机的效率?提高它的机动性?缩短它的起飞和着陆距离? DEP 概念有望在提高性能的同时减少燃料消耗,在我们孜孜不倦地努力使航…...
vue通过iframe方式嵌套grafana图表
文章目录 前言一、iframe方式实现xxx.xxx.com拒绝连接登录不跳转Cookie 的SameSite问题解决不显示额外区域(kiosk1) 前言 我们的前端是vue实现的,监控图表是在grafana中的,需要在项目web页面直接显示grafana图表 一、iframe方式实现 xxx.xxx.com拒绝连…...
简单介绍下 Java 中的 @Validated 和 @Valid 注解的区别?
文章目录 Valid:专注单个对象的深度验证适用场景使用示例小结 Validated:聚焦接口分组的批量验证适用场景使用示例小结 主要区别总结如何选择?总结推荐阅读文章 在 Java 开发中,为了确保输入数据符合我们的要求,少不了…...
SpringBoot配置Rabbit中的MessageConverter对象
SpringAMQP默认使用SimpleMessageConverter组件对消息内容进行转换 SimpleMessageConverter: only supports String, byte[] and Serializable payloads仅仅支持String、Byte[]和Serializable对象Jackson2JsonMessageConverter:was expecting (JSON Str…...
C++ 错题本--duplicate symbol问题
顾名思义, duplicate symbol是重复符号的意思! 代码是用来做什么的(问题缘由 & 代码结构) 写排序算法, 提出了一个公共的头文件用来写一些工具方法, 比如打印数组内容. 以便于不同文件代码需要打印数组内容的时候,直接引入相关头文件即可, 但是编译时出现了 duplicate sym…...
Cursor的chat与composer的使用体验分享
经过一段时间的试用,下面对 Composer 与 Chat 的使用差别进行总结: 一、长文本及程序文件处理方面 Composer 在处理长文本时表现较为稳定,可以对长文进行更改而不会出现内容丢失的情况。而 Chat 在更改长的程序文件时,有时会删除…...
【优选算法 — 滑动窗口】最大连续1的个数 将 x 减到0的最小操作数
最大连续1的个数 最大连续1的个数 题目描述 题目解析 给我们一个元素全是0或者1的数组,和一个整数 k ,然后让我们在数组选出最多的 k 个0;这里翻转最多 k 个0的意思,是翻转 0 的个数< k,而不是一定要翻转 k …...
《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址
《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址 《TCP/IP网络编程》学习笔记 | Chapter 8:域名及网络地址域名系统什么是域名?DNS 服务器IP 地址和域名之间的转换使用域名的必要性利用域名获取 IP 地址利用 IP 地址获取域名 基于 Wi…...
FastHTML快速入门:调试模式和 URL中的变量
调试模式 FastHTML基于FastAPI友好的装饰器模式来指定URL,并添加了额外功能: main.py from fasthtml.common import * app, rt fast_app() rt("/") def get():return Titled("FastHTML", P("让我们开始吧!"…...
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)
☞返回总目录 相关总结:服务发现实现策略总结 7.2 服务发现的实现策略 如前面章节所述,ara::com 期望产品供应商实现服务发现的功能。服务发现功能基本上是在 API 级别通过 FindService、OfferService 和 StopOfferService 方法定义的,协议…...
【C++】 C++游戏设计---五子棋小游戏
1. 游戏介绍 一个简单的 C 五子棋小游戏 1.1 游戏规则: 双人轮流输入下入点坐标横竖撇捺先成五子连线者胜同一坐标点不允许重复输入 1.2 初始化与游戏界面 初始化界面 X 输入坐标后 O 输入坐标后 X 先达到胜出条件 2. 源代码 #include <iostream> #i…...
仿RabitMQ 模拟实现消息队列项目开发文档2(个人项目)
项目需求分析 核心概念 现在需要将这个项目梳理清楚了,便于之后的代码实现。项目中具有一个生产消费模型: 其中生产者和消费者的个数是可以灵活改变的,让系统资源更加合理的分配。消息队列的主逻辑和上面的逻辑基本一样,只不过我…...
李佳琦回到巅峰背后,双11成直播电商分水岭
时间倏忽而过,又一年的双11即将宣告结束。 从双11正式开始前的《新所有女生的offer》,到被作为“比价”标杆被其他平台直播间蹭、被与其他渠道品牌比较,再到直播间运营一时手快多发了红包……整个双11周期下来,李佳琦直播间在刷新…...
云计算在教育领域的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 云计算在教育领域的应用 云计算在教育领域的应用 云计算在教育领域的应用 引言 云计算概述 定义与原理 发展历程 云计算的关键技…...
C语言 | Leetcode C语言题解之第543题二叉树的直径
题目: 题解: 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单元测试控制台不能输入数据的问题: https://blog.csdn.net/m0_72900498/article/details/…...
萤石设备视频接入平台EasyCVR多品牌摄像机视频平台海康ehome平台(ISUP)接入EasyCVR不在线如何排查?
随着智慧城市和数字化转型的推进,视频监控系统已成为保障公共安全、提升管理效率的重要工具。特别是在大中型项目中,跨区域的网络化视频监控需求日益增长,这要求视频监控管理平台不仅要具备强大的视频资源管理能力,还要能够适应多…...
【多线程】线程池如何知道一个线程的任务已经完成
目录 1. 说明2. 任务的生命周期3. 状态更新4. 线程间的协作5. 内部数据结构6. 回调与通知7. 线程池的关闭与清理 1. 说明 1.线程池通过一系列内部机制来知道一个线程的任务已经完成。2.这些机制主要涉及任务的生命周期管理、状态更新以及线程间的协作。 2. 任务的生命周期 1…...
Transformer介绍(一)
Transformer是一种特殊的神经网络,一种机器学习模型。 谷歌在2017年推出的原版Transformer,论文《Attention Is All You Need》,专注于将一种语言的文本翻译成另一种。 而我们要关注的Transformer变种,即构建ChatGPT等工具的模型…...
[CKS] TLS Secrets创建与挂载
目前的所有题目为2024年10月后更新的最新题库,考试的k8s版本为1.31.1 BackGround 您必须使用存储在TLS Secret中的SSL文件,来保护Web 服务器的安全访问。 Task 在clever-cactus namespace中为名为clever-cactus的现有Deployment创建名为clever-cactu…...
java双向链表解析实现双向链表的创建含代码
双向链表 一.双向链表二.创建MyListCode类实现双向链表创建一.AddFirst创建(头插法)二.AddLast创建(尾叉法)三.size四.remove(指定任意节点的首位删除)五.removeAll(包含任意属性值的所有删除)六.AddIndex(给任意位置添加一个节点…...
【Kafka-go】golang的kafka应用
网络上关于go的Kafka还是比较少的今天就先出一篇入门级别的,之后再看看能能出一个公司业务场景中的消息流。 一、下载github.com/segmentio/kafka-go包 go get github.com/segmentio/kafka-go二、建立kafka连接 正常来说下面的配置host topic partition 应该写在…...
redis:set集合命令,内部编码,使用场景
个人主页 : 个人主页 个人专栏 : 《数据结构》 《C语言》《C》《Linux》《网络》 《redis学习笔记》 文章目录 前言命令SADDSMEMBERSSISMEMBERSCARDSPOPSMOVESREM集合间操作SINTERSINTERSTORESUNIONSUNIONSTORESDIFFSDIFFSTORE 内部编码使用场景总结 前言…...
45期代码随想录算法营总结
代码随想录训练营总结与收获 在为期60天的代码随想录训练营结束后,我感慨良多。这段时间不仅让我在编程技能上有了明显的提升,更让我在学习习惯和时间管理上有了深刻的反思和改变。 报名参加这个训练营对我来说是一个重要的监督机制。之前我总是拖延&a…...
深入理解Java中的instanceof关键字及接口新特性:方法实现的可能性
目录 引言 1. 什么是instanceof关键字? 1.1 语法结构 1.2 instanceof的用法示例 1.3 instanceof的应用场景 2. Java中的接口能包含方法实现吗? 2.1 默认方法(Default Method) 2.2 静态方法(Static Method&…...
【python中如果class没有self会怎行】
python中如果class没有self会怎样TOC 在Python中,self是一个约定俗成的名称,用于表示类的实例。如果没有使用self,会导致以下问题: 1、无法访问实例属性: 在类的方法中,如果没有self,方法将无…...
【算法】(Python)动态规划
动态规划: dynamic programming。"programming"指的是一种表格法,而非编写计算机程序。通常解决最优化问题(optimization problem)。将问题拆分成若干个子问题,求解各子问题来得到原问题的解。适用于多阶段…...
EasyExcel 学习之 导出 “提示问题”
EasyExcel 学习之 导出 “提示问题” 现象分析解决(伪代码)前端 POST 实现后端实现 现象 EasyExcel 支持导出 xlsx、xls、csv 三种文件格式。在导出过程中可能发生各种异常,当发生异常时应该提示错误信息而非导出一个错误的文件。 分析 首…...
关于网站开发的一些论文/seo关键词是什么意思
springboot 本地访问静态页面,动态页面,其他静态资源,以及默认页面的方式 静态页面访问 (其他静态资源也行) spring boot项目只有src目录,没有webapp目录,会将静态访问(html/图片等)映射到其…...
wordpress手机号码/如何开发网站平台
自我提升,零基础教你学Python,Python数值类型 哈佛大学推荐,2020年最新python教程,全面、丰富而详细的Python学习教程,让你轻轻松松学习Python,让学习也变成是一件容易的事。 如果你处于想学python或者正在…...
用asp做网站需要准备什么软件/推广平台有哪些
本文要提供的类可以为图片加文字水印,以及判断是否是图片文件。经过测试可运行,例子请下载:http://hovertree.com/h/bjaf/5qc5eh6y.htm例子效果图: 以下是HovercWarter类的代码: 1 using System.Drawing;2 using Syste…...
专门做餐饮运营的网站/域名怎么注册
使用PyCharm编辑代码过程中,可能因为复制粘贴操作,导致运行代码报错: TabError: inconsistent use of tabs and spaces in indentation 此报错表达的意思是IDE分不清tab和空格,说明你的代码中混用了tab和空格 【解决办法】 方法一…...
金融交易网站建设/百度首页推广
究竟什么是用户态,什么是内核态,这两个基本概念以前一直理解得不是很清楚,根本原因个人觉得是在于因为大部分时候我们在写程序时关注的重点和着眼的角度放在了实现的功能和代码的逻辑性上,先看一个例子: 1)…...
网站整体地图怎么做/网站运维
方法一:jmap 查看堆内存 1. top出占用资源最高的pid 2. jmap -histo:live pid | more 查看堆内存使用情况 3 .jmap -dump:formatb,fileoutfile 3024可以 将3024进程的内存heap输出出来到outfile文件里,再配合MAT(内存分析工具࿰…...