【MySQL】MySQL数据管理——DDL数据操作语言(数据表)
目录
- 创建数据表
- 语法
- 列类型
- 字段属性
- SQL示例
- 创建学生表
- 查看表和查看表的定义
- 表类型
- 设置表的类型
- 面试题:MyISAM和InnoDB的区别
- 设置表的字符集
- 删除表
- 语法
- 示例
- 修改表
- 修改表名
- 语法
- 示例
- 添加字段
- 语法
- 示例
- 修改字段
- 语法
- 示例
- 删除字段
- 语法
- 示例
- 数据完整性
- 实体完整性
- 域完整性
- 引用完整性
- 解决方案
- 语法
- 唯一约束
- 主键(PRIMARY KEY)
- 数据库主键的作用
- 数据库主键的选择规则
- 语法
- 删除约束
- 语法
- 示例
创建数据表
语法
CREATE TABLE [ IF NOT EXISTS ] `表名` (`字段名1` 列类型 [ 字段属性 | 约束] [ 索引 ] [注释] ,`字段名2` 列类型 [ 字段属性 | 约束] [ 索引 ] [注释] , … … `字段名n` 列类型 [字段属性 | 约束] [ 索引 ] [注释] ) [ 表类型 ] [ 表字符集 ] [注释] ;
- 反引号用于区别MySQL保留字(全部大写)与普通字符而引入的。
- 多个字段(也称为列)之间使用逗号分隔,最后一个字段后无须逗号。
列类型
规定数据库中该列存放的数据类型,包括数值类型、字符串类型、日期和时间型数值类型等



字段属性

SQL示例
创建学生表

#1.创建学生表
CREATE TABLE IF NOT EXISTS STUDENT(STUDENTNO INT(4) UNSIGNED NOT NULL COMMENT '学号',LOGINPWD VARCHAR(20) NOT NULL COMMENT '密码',STUDENTNAME VARCHAR(50) NOT NULL COMMENT '学生姓名',SEX CHAR(1) NOT NULL DEFAULT '男' COMMENT '性别',GRADEID INT(4) UNSIGNED COMMENT '年级编号',PHONE VARCHAR(50) COMMENT '联系电话',ADDRESS VARCHAR(255) DEFAULT '地址不详' COMMENT '家庭住址',BORNDATE DATETIME COMMENT '出生年月',EMAIL VARCHAR(50) COMMENT '邮箱账号',IDENTITYCARD VARCHAR(18) COMMENT '身份证号'
)DEFAULT CHARSET=utf8mb4 COMMENT '学生表';

#2.创建年级表
CREATE TABLE IF NOT EXISTS GRADE(GRADEID INT(4) UNSIGNED NOT NULL COMMENT '年级编号',GRADENAME VARCHAR(50) NOT NULL COMMENT '年级名称'
) DEFAULT CHARSET=UTF8MB4 COMMENT '年级表';

#3.创建课程表
CREATE TABLE IF NOT EXISTS `SUBJECT`(SUBJECTNO INT(4) UNSIGNED NOT NULL COMMENT '课程编号',SUBJECTNAME VARCHAR(50) NOT NULL COMMENT '课程名称',CLASSHOUR INT(4) UNSIGNED COMMENT '学时',GRADEID INT(4) UNSIGNED COMMENT '年级编号'
) DEFAULT CHARSET=UTF8MB4 COMMENT '课程表';

#4.创建成绩表
CREATE TABLE IF NOT EXISTS `RESULT`(STUDENTNO INT(4) UNSIGNED NOT NULL COMMENT '学号',SUBJECTNO INT(4) UNSIGNED NOT NULL COMMENT '课程编号',EXAMDATE DATETIME NOT NULL DEFAULT NOW() COMMENT '考试日期',STUDENTRESULT INT(4) UNSIGNED NOT NULL COMMENT '考试成绩'
) DEFAULT CHARSET=UTF8MB4 COMMENT '成绩表';
查看表和查看表的定义
- 创建表之后,如果需要查看一下该表是否存在,可以使用查看表的SQL命令。
SHOW TABLES; - 创建表之后,如果需要查看一下该表是否存在,可以使用查看表的SQL命令。
DESCRIBE 表名或DESC 表名
表类型
- MySQL属于关系型数据库管理系统,其他包括数据库以及用于数据库访问管理的接口系统。数据库负责存储数据,接口系统负责管理数据库。
- 由于不同用户对数据的容量、访问速度、数据安全性有不同的要求,为了满足不同用户的业务需求,MySQL数据库采用多种存储引擎进行数据存储。
- 表的存储引擎也称为表类型。
- MySQL5.5支持的存储引擎有MyISAM、InnoDB 、HEAP、BOB、CSV等。
- SHOW ENGINES;#查看系统所支持的存储引擎
- 常用的存储引擎:MyISAM和InnoDB 。MySQL5.5以上版本默认的存储引擎是InnoDB。
设置表的类型
CREATE TABLE `student`(
……) ENGINE = InnoDB
CREATE TABLE `student`(
……) ENGINE = MyISAM
面试题:MyISAM和InnoDB的区别

适用场合:
- 使用MyISAM: 节约空间及相应速度,适合以访问为主的应用。
- 使用InnoDB: 安全性,事务处理及多用户操作数据表。
设置表的字符集
- 创建时通过命令来设置
CREATE TABLE 表名(#省略一些代码
)CHARSET = utf8;
- 修改配置文件my.ini(Windows系统)中的参数
character-set-sever = utf8
删除表
语法
DROP TABLE [IF EXISTS] 表名
示例
#6.删除课程表
DROP TABLE IF EXISTS `SUBJECT`;
修改表
修改表名
语法
ALTER TABLE 旧表名 RENAME AS 新表名
示例
#7.把result表改名为studentresult
ALTER TABLE RESULT RENAME AS STUDENTRESULT;
ALTER TABLE STUDENTRESULT RENAME AS RESULT;
添加字段
语法
ALTER TABLE 表名 ADD 字段名 列类型 [ 属性 ]
示例
#8.给result表添加一个id字段
ALTER TABLE RESULT ADD ID INT(4) UNSIGNED NOT NULL COMMENT'成绩编号';
修改字段
语法
1. ALTER TABLE 表名 MODIFY 字段名 列类型 [ 属性 ] #修改列的数据类型
2. ALTER TABLE 表名 CHANGE 旧字段名 新字段名 列类型 [ 属性 ]#修改列的数据类型及名称
示例
#9.修改result表中的id字段,改为字符串类型,允许有符号,允许为空,注释改为成绩编码
ALTER TABLE RESULT MODIFY ID VARCHAR(16) COMMENT '成绩编码';#10.修改result表中的ID字段,ID名称改为rid,类型为int(4),零填充,默认值1
ALTER TABLE RESULT CHANGE ID RID INT(4) ZEROFILL DEFAULT 1;
删除字段
语法
ALTER TABLE 表名 DROP 字段名
示例
#11.删除result表中的id字段
ALTER TABLE RESULT DROP RID;
数据完整性
- 数据库中的数据是从外界输入的,而数据的输入由于种种原因,会发生输入无效或错误信息。保证输入的数据符合规定,成为了数据库系统,尤其是多用户的关系数据库系统首要关注的问题。
- 它是应防止数据库中存在不符合语义规定的数据和防止因错误信息的输入输出造成无效操作或错误信息而提出的。
- 数据完整性主要分为三类:实体完整性、域完整性、引用完整性。
实体完整性
实体完整性是指保证表中所有的行唯一。

域完整性
域完整性是指数据库表中的列必须满足某种特定的数据类型或约束。其中约束又包括取值范围、精度等规定。

引用完整性
引用完整性是指保证主关键字(被引用表)和外部关键字(引用表)之间的参照关系。它涉及两个或两个以上表数据的一致性维护。

解决方案
使用约束实现数据完整性。数据库采用多种方法来保证数据完整性,包括约束、规则和触发器。

语法
ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束关键字 具体的约束说明
约束名的取名推荐采用:约束类型_约束字段
- 主键(Primary Key)约束:如 PK_stuNo
- 唯一(Unique )约束:如 UQ_stuID
- 外键(Foreign Key)约束:如 FK_stuNo
唯一约束
ALTER TABLE 表名 ADD CONSTRAINT 约束名 UNIQUE(列名)
#12、给学生表的联系电话字段设置为唯一约束
ALTER TABLE STUDENT ADD CONSTRAINT UQ_PHONE UNIQUE(PHONE);
ALTER TABLE STUDENT ADD CONSTRAINT UQ_STUDENTNAME UNIQUE(STUDENTNAME);
主键(PRIMARY KEY)
- 数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性
- 一个表只能有一个主键,并且主键列不允许出现空值。
- 尽管有的表中允许没有主键,但是通常情况下,建议为表设置主键。
数据库主键的作用
- 保证实体的完整性;
- 加快数据库的操作速度;
- 添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
- DBMS自动按主键值的顺序显示记录。如果没有定义主键,则按输入记录的顺序显示记录。
数据库主键的选择规则
- 最少性是指列数最少的键。如果可以从单个主键和复合主键中选择,应该选择单个主键,这是因为操作一列比操作多列要快。当然该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列操作要快。
- 稳定性是指列中数据的特征。由于主键通常用来在两个表之间建立联系,所以主键的数据不能经常更新。理想情况下,应该永远不变
如果两列或多列组合起来唯一地标识表中的每个行,则该主键叫做“复合主键”。
语法
ALTER TABLE 表名
ADD CONSTRAINT 约束名 PRIMARY KEY(列名1,列名2,…列名n)
#13、给学生表设置主键,主键列为studentno
ALTER TABLE STUDENT ADD CONSTRAINT PK_STUDENTNO PRIMARY KEY(STUDENTNO);#14、设置组合主键案例:设置课程表中的课程编号和年级编号为组合主键
ALTER TABLE `SUBJECT` ADD CONSTRAINT PK_SUBJECTNO_GRADEID PRIMARY KEY(SUBJECTNO,GRADEID);
删除约束
语法
ALTER TABLE 表名 DROP PRIMARY KEY; #删除主键约束
ALTER TABLE 表名 DROP KEY 唯一约束名; #删除唯一约束
ALTER TABLE 表名 DROP FOREIGN KEY 外键约束名; #删除外键约束
示例
#15、删除主键索引,不需要指定名称,因为一个表中只能有一个主键
ALTER TABLE `SUBJECT` DROP PRIMARY KEY;#16、删除唯一索引,必须指定唯一索引的名称,因为一个表中可以有多个字段的唯一索引
ALTER TABLE `STUDENT` DROP KEY UQ_STUDENTNAME;
相关文章:
【MySQL】MySQL数据管理——DDL数据操作语言(数据表)
目录 创建数据表语法列类型字段属性SQL示例创建学生表 查看表和查看表的定义表类型设置表的类型 面试题:MyISAM和InnoDB的区别设置表的字符集删除表语法示例 修改表修改表名语法示例 添加字段语法示例 修改字段语法示例 删除字段语法示例 数据完整性实体完整性域完整…...
Qt使用QSettings类来读写ini
在Qt中,可以使用QSettings类来读写ini文件。QSettings提供了一个简单的接口,用于访问和修改ini文件中的键值对。 下面是使用QSettings类来写入ini文件的示例代码: #include <QCoreApplication> #include <QSettings>int main(i…...
嵌入式软件bug从哪里来,到哪里去
摘要:软件从来不是一次就能完美的,需要以包容的眼光看待它的残缺。那问题究竟为何产生,如何去除呢? 1、软件问题从哪来 软件缺陷问题千千万万,主要是需求、实现、和运行环境三方面。 1.1 需求描述偏差 客户角度的描…...
去掉WordPress网页图片默认链接功能
既然是wordpress自动添加的,那么我们在上传图片到wordpress后台多媒体的时候,就可以手动改变链接指向或者删除掉,问题是每次都要这么做很麻烦,更别说有忘记的时候。一次性解决这个问题有两种方法,一种是No Image Link插…...
UE学习笔记--解决滚轮无法放大蓝图、Panel等
我们发现有时候创建蓝图之后,右上角的缩放是1:1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动,都没有效果。 好像最大只能 1:1. 那是因为 UE 做了限制。如果希望继续放大,我们可以按住 Ctrl 再去…...
GO结构体
1. 结构体 Go语言可以通过自定义的方式形成新的类型,结构体就是这些类型中的一种复合类型,结构体是由零个或多个任意类型的值聚合成的实体,每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”,这些字段有以下特性&am…...
芯科科技为全球首批原生支持Matter-over-Thread的智能锁提供强大助力,推动Matter加速成为主流技术
智能锁领域的先锋企业U-tec和Nuki选择芯科科技解决方案,成为Matter-over-Thread应用的领先者 致力于以安全、智能无线连接技术,建立更互联世界的全球领导厂商Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)今…...
面试数据库篇(mysql)- 06覆盖索引
原理 覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到 。 id name gender createdate 2 Arm...
[伴学笔记]01-操作系统概述 [南京大学2024操作系统]
文章目录 前言jyy:01-操作系统概述 [南京大学2024操作系统]为什么要学操作系统?学习操作系统能得到什么? 什么是操作系统?想要明白什么是操作系统:时间线:1940s1950s-1960s1960-1970s年代. 信息来源: 前言 督促自己,同时分享所得,阅读完本篇大约需要10分钟,希望为朋友的技术…...
c++二叉树
二叉树进阶 1.二叉搜索树(binary search tree) 二叉搜索树天然就适合查找,对于满二叉树或者完全二叉树,最多搜索lgn次(就像是有序数组二分查找,每次搜索都会减少范围),极端情况简化成单链表就要走n次,即要走高度次…...
第19章-IPv6基础
1. IPv4的缺陷 2. IPv6的优势 3. 地址格式 3.1 格式 3.2 长度 4. 地址书写压缩 4.1 段内前导0压缩 4.2 全0段压缩 4.3 例子1 4.4 例子 5. 网段划分 5.1 前缀 5.2 接口标识符 5.3 前缀长度 5.4 地址规模分类 6. 地址分类 6.1 单播地址 6.2 组播地址 6.3 任播地址 6.4 例子 …...
浅谈人才招聘APP开发的解决方案
随着企业竞争加剧,高效、精准地招聘人才成为企业持续发展的关键。人才招聘系统能够简化招聘流程,提高效率,确保企业快速找到合适人才。同时,通过智能匹配和数据分析,提升招聘质量,优化候选人体验。因此&…...
大语言模型LLM推理加速:Hugging Face Transformers优化LLM推理技术(LLM系列12)
文章目录 大语言模型LLM推理加速:Hugging Face Transformers优化LLM推理技术(LLM系列12)引言Hugging Face Transformers库的推理优化基础模型级别的推理加速策略高级推理技术探索硬件加速与基础设施适配案例研究与性能提升效果展示结论与未来展望大语言模型LLM推理加速:Hug…...
JVM 第四部分—垃圾回收相关概念 2
System.gc() 在默认情况下,通过System.gc()或者Runtime.getRuntime().gc()的调用,会显式触发Full GC,同时对老年代和新生代进行回收,尝试释放被丢弃对象占用的内存 然而System.gc()调用附带一个免责声明,无法保证对垃…...
tritonserver学习之八:redis_caches实践
tritonserver学习之一:triton使用流程 tritonserver学习之二:tritonserver编译 tritonserver学习之三:tritonserver运行流程 tritonserver学习之四:命令行解析 tritonserver学习之五:backend实现机制 tritonserv…...
2024有哪些免费的mac苹果电脑深度清理工具?CleanMyMac X
苹果电脑用户们,你们是否经常感到你们的Mac变得不再像刚拆封时那样迅速、流畅?可能是时候对你的苹果电脑进行一次深度清理了。在这个时刻,拥有一些高效的深度清理工具就显得尤为重要。今天,我将介绍几款优秀的苹果电脑深度清理工具…...
UE5中实现后处理深度描边
后处理深度描边可以通过取得边缘深度变化大的区域进行描边,一方面可以用来做角色的等距内描边,避免了菲尼尔边缘光不整齐的问题,另一方面可以结合场景扫描等特效使用,达到更丰富的效果: 后来解决了开启TAA十字线和锯齿…...
Java面试值之集合
集合 1.HashMap底层?扩容机制?1.7-1.8的升级?2.HashMap的长度为什么是2的幂次方?3.HashMap 插入1.7和1.8的区别?4.什么是红黑树?O(logn)5.HashMap为什么会使用红黑树?6.ArrayList底层?扩容机制?7.LinkedList底层?扩容机制?8.ArrayList可以序列化,但是为什么不直接序…...
React之组件定义和事件处理
一、组件的分类 在react中,组件分为函数组件和class组件,也就是无状态组件和有状态组件。 * 更过时候我们应该区别使用无状态组件,因为如果有状态组件会触发生命周期所对应的一些函数 * 一旦触发他生命周期的函数,它就会影响当前项…...
LeetCode -55 跳跃游戏
LeetCode -55 跳跃游戏 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。…...
挑战杯推荐项目
“人工智能”创意赛 - 智能艺术创作助手:借助大模型技术,开发能根据用户输入的主题、风格等要求,生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用,帮助艺术家和创意爱好者激发创意、提高创作效率。 - 个性化梦境…...
国防科技大学计算机基础课程笔记02信息编码
1.机内码和国标码 国标码就是我们非常熟悉的这个GB2312,但是因为都是16进制,因此这个了16进制的数据既可以翻译成为这个机器码,也可以翻译成为这个国标码,所以这个时候很容易会出现这个歧义的情况; 因此,我们的这个国…...
idea大量爆红问题解决
问题描述 在学习和工作中,idea是程序员不可缺少的一个工具,但是突然在有些时候就会出现大量爆红的问题,发现无法跳转,无论是关机重启或者是替换root都无法解决 就是如上所展示的问题,但是程序依然可以启动。 问题解决…...
Spark 之 入门讲解详细版(1)
1、简介 1.1 Spark简介 Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行计算框架。Spark在2013年6月进入Apache成为孵化项目,8个月后成为Apache顶级项目,速度之快足见过人之处&…...
【Linux】C语言执行shell指令
在C语言中执行Shell指令 在C语言中,有几种方法可以执行Shell指令: 1. 使用system()函数 这是最简单的方法,包含在stdlib.h头文件中: #include <stdlib.h>int main() {system("ls -l"); // 执行ls -l命令retu…...
家政维修平台实战20:权限设计
目录 1 获取工人信息2 搭建工人入口3 权限判断总结 目前我们已经搭建好了基础的用户体系,主要是分成几个表,用户表我们是记录用户的基础信息,包括手机、昵称、头像。而工人和员工各有各的表。那么就有一个问题,不同的角色…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
在Ubuntu中设置开机自动运行(sudo)指令的指南
在Ubuntu系统中,有时需要在系统启动时自动执行某些命令,特别是需要 sudo权限的指令。为了实现这一功能,可以使用多种方法,包括编写Systemd服务、配置 rc.local文件或使用 cron任务计划。本文将详细介绍这些方法,并提供…...
论文笔记——相干体技术在裂缝预测中的应用研究
目录 相关地震知识补充地震数据的认识地震几何属性 相干体算法定义基本原理第一代相干体技术:基于互相关的相干体技术(Correlation)第二代相干体技术:基于相似的相干体技术(Semblance)基于多道相似的相干体…...
关于easyexcel动态下拉选问题处理
前些日子突然碰到一个问题,说是客户的导入文件模版想支持部分导入内容的下拉选,于是我就找了easyexcel官网寻找解决方案,并没有找到合适的方案,没办法只能自己动手并分享出来,针对Java生成Excel下拉菜单时因选项过多导…...
