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

【MySQL】MySQL数据管理——DDL数据操作语言(数据表)

目录

  • 创建数据表
    • 语法
    • 列类型
    • 字段属性
    • SQL示例
      • 创建学生表
    • 查看表和查看表的定义
    • 表类型
      • 设置表的类型
    • 面试题:MyISAM和InnoDB的区别
    • 设置表的字符集
    • 删除表
      • 语法
      • 示例
    • 修改表
      • 修改表名
        • 语法
        • 示例
      • 添加字段
        • 语法
        • 示例
      • 修改字段
        • 语法
        • 示例
      • 删除字段
        • 语法
        • 示例
  • 数据完整性
    • 实体完整性
    • 域完整性
    • 引用完整性
    • 解决方案
      • 语法
        • 唯一约束
        • 主键(PRIMARY KEY)
          • 数据库主键的作用
          • 数据库主键的选择规则
          • 语法
      • 删除约束
        • 语法
        • 示例

创建数据表

语法

 CREATE   TABLE [ IF NOT EXISTS ]    `表名`   (`字段名1`   列类型 [ 字段属性 | 约束]  [ 索引 ] [注释] ,`字段名2`   列类型 [ 字段属性 | 约束]  [ 索引 ] [注释] , … …    `字段名n`   列类型 [字段属性 | 约束]  [ 索引 ] [注释] )  [  表类型 ] [ 表字符集 ] [注释] ;
  1. 反引号用于区别MySQL保留字(全部大写)与普通字符而引入的。
  2. 多个字段(也称为列)之间使用逗号分隔,最后一个字段后无须逗号。

列类型

规定数据库中该列存放的数据类型,包括数值类型、字符串类型、日期和时间型数值类型等
在这里插入图片描述在这里插入图片描述在这里插入图片描述

字段属性

在这里插入图片描述

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 表名

表类型

  1. MySQL属于关系型数据库管理系统,其他包括数据库以及用于数据库访问管理的接口系统。数据库负责存储数据,接口系统负责管理数据库。
  2. 由于不同用户对数据的容量、访问速度、数据安全性有不同的要求,为了满足不同用户的业务需求,MySQL数据库采用多种存储引擎进行数据存储。
  3. 表的存储引擎也称为表类型。
  4. MySQL5.5支持的存储引擎有MyISAM、InnoDB 、HEAP、BOB、CSV等。
  5. SHOW ENGINES;#查看系统所支持的存储引擎
  6. 常用的存储引擎:MyISAM和InnoDB 。MySQL5.5以上版本默认的存储引擎是InnoDB。

设置表的类型

CREATE TABLE `student`(
……) ENGINE =  InnoDB
CREATE TABLE `student`(
……) ENGINE =  MyISAM

面试题:MyISAM和InnoDB的区别

在这里插入图片描述
适用场合

  • 使用MyISAM: 节约空间及相应速度,适合以访问为主的应用。
  • 使用InnoDB: 安全性,事务处理及多用户操作数据表。

设置表的字符集

  1. 创建时通过命令来设置
CREATE TABLE  表名(#省略一些代码
)CHARSET  =  utf8;
  1. 修改配置文件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)
  • 数据库主键:指的是一个列或多列的组合,其值能唯一地标识表中的每一行,通过它可强制表的实体完整性
  • 一个表只能有一个主键,并且主键列不允许出现空值。
  • 尽管有的表中允许没有主键,但是通常情况下,建议为表设置主键。
数据库主键的作用
  1. 保证实体的完整性;
  2. 加快数据库的操作速度;
  3. 添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
  4. DBMS自动按主键值的顺序显示记录。如果没有定义主键,则按输入记录的顺序显示记录。
数据库主键的选择规则
  1. 最少性是指列数最少的键。如果可以从单个主键和复合主键中选择,应该选择单个主键,这是因为操作一列比操作多列要快。当然该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列操作要快。
  2. 稳定性是指列中数据的特征。由于主键通常用来在两个表之间建立联系,所以主键的数据不能经常更新。理想情况下,应该永远不变

如果两列或多列组合起来唯一地标识表中的每个行,则该主键叫做“复合主键”。

语法

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中&#xff0c;可以使用QSettings类来读写ini文件。QSettings提供了一个简单的接口&#xff0c;用于访问和修改ini文件中的键值对。 下面是使用QSettings类来写入ini文件的示例代码&#xff1a; #include <QCoreApplication> #include <QSettings>int main(i…...

嵌入式软件bug从哪里来,到哪里去

摘要&#xff1a;软件从来不是一次就能完美的&#xff0c;需要以包容的眼光看待它的残缺。那问题究竟为何产生&#xff0c;如何去除呢&#xff1f; 1、软件问题从哪来 软件缺陷问题千千万万&#xff0c;主要是需求、实现、和运行环境三方面。 1.1 需求描述偏差 客户角度的描…...

去掉WordPress网页图片默认链接功能

既然是wordpress自动添加的&#xff0c;那么我们在上传图片到wordpress后台多媒体的时候&#xff0c;就可以手动改变链接指向或者删除掉&#xff0c;问题是每次都要这么做很麻烦&#xff0c;更别说有忘记的时候。一次性解决这个问题有两种方法&#xff0c;一种是No Image Link插…...

UE学习笔记--解决滚轮无法放大蓝图、Panel等

我们发现有时候创建蓝图之后&#xff0c;右上角的缩放是1&#xff1a;1 但是有时候我们可能需要放的更大一点。 发现一直用鼠标滚轮像上滚动&#xff0c;都没有效果。 好像最大只能 1&#xff1a;1. 那是因为 UE 做了限制。如果希望继续放大&#xff0c;我们可以按住 Ctrl 再去…...

GO结构体

1. 结构体 Go语言可以通过自定义的方式形成新的类型&#xff0c;结构体就是这些类型中的一种复合类型&#xff0c;结构体是由零个或多个任意类型的值聚合成的实体&#xff0c;每个值都可以称为结构体的成员。 结构体成员也可以称为“字段”&#xff0c;这些字段有以下特性&am…...

芯科科技为全球首批原生支持Matter-over-Thread的智能锁提供强大助力,推动Matter加速成为主流技术

智能锁领域的先锋企业U-tec和Nuki选择芯科科技解决方案&#xff0c;成为Matter-over-Thread应用的领先者 致力于以安全、智能无线连接技术&#xff0c;建立更互联世界的全球领导厂商Silicon Labs&#xff08;亦称“芯科科技”&#xff0c;NASDAQ&#xff1a;SLAB&#xff09;今…...

面试数据库篇(mysql)- 06覆盖索引

原理 覆盖索引是指查询使用了索引,并且需要返回的列,在该索引中已经全部能够找到 。 id name gender createdate 2 Arm...

[伴学笔记]01-操作系统概述 [南京大学2024操作系统]

文章目录 前言jyy:01-操作系统概述 [南京大学2024操作系统]为什么要学操作系统?学习操作系统能得到什么? 什么是操作系统?想要明白什么是操作系统:时间线:1940s1950s-1960s1960-1970s年代. 信息来源: 前言 督促自己,同时分享所得,阅读完本篇大约需要10分钟,希望为朋友的技术…...

c++二叉树

二叉树进阶 1.二叉搜索树(binary search tree) ​ 二叉搜索树天然就适合查找&#xff0c;对于满二叉树或者完全二叉树&#xff0c;最多搜索lgn次(就像是有序数组二分查找&#xff0c;每次搜索都会减少范围)&#xff0c;极端情况简化成单链表就要走n次&#xff0c;即要走高度次…...

第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开发的解决方案

随着企业竞争加剧&#xff0c;高效、精准地招聘人才成为企业持续发展的关键。人才招聘系统能够简化招聘流程&#xff0c;提高效率&#xff0c;确保企业快速找到合适人才。同时&#xff0c;通过智能匹配和数据分析&#xff0c;提升招聘质量&#xff0c;优化候选人体验。因此&…...

大语言模型LLM推理加速:Hugging Face Transformers优化LLM推理技术(LLM系列12)

文章目录 大语言模型LLM推理加速:Hugging Face Transformers优化LLM推理技术(LLM系列12)引言Hugging Face Transformers库的推理优化基础模型级别的推理加速策略高级推理技术探索硬件加速与基础设施适配案例研究与性能提升效果展示结论与未来展望大语言模型LLM推理加速:Hug…...

JVM 第四部分—垃圾回收相关概念 2

System.gc() 在默认情况下&#xff0c;通过System.gc()或者Runtime.getRuntime().gc()的调用&#xff0c;会显式触发Full GC&#xff0c;同时对老年代和新生代进行回收&#xff0c;尝试释放被丢弃对象占用的内存 然而System.gc()调用附带一个免责声明&#xff0c;无法保证对垃…...

tritonserver学习之八:redis_caches实践

tritonserver学习之一&#xff1a;triton使用流程 tritonserver学习之二&#xff1a;tritonserver编译 tritonserver学习之三&#xff1a;tritonserver运行流程 tritonserver学习之四&#xff1a;命令行解析 tritonserver学习之五&#xff1a;backend实现机制 tritonserv…...

2024有哪些免费的mac苹果电脑深度清理工具?CleanMyMac X

苹果电脑用户们&#xff0c;你们是否经常感到你们的Mac变得不再像刚拆封时那样迅速、流畅&#xff1f;可能是时候对你的苹果电脑进行一次深度清理了。在这个时刻&#xff0c;拥有一些高效的深度清理工具就显得尤为重要。今天&#xff0c;我将介绍几款优秀的苹果电脑深度清理工具…...

UE5中实现后处理深度描边

后处理深度描边可以通过取得边缘深度变化大的区域进行描边&#xff0c;一方面可以用来做角色的等距内描边&#xff0c;避免了菲尼尔边缘光不整齐的问题&#xff0c;另一方面可以结合场景扫描等特效使用&#xff0c;达到更丰富的效果&#xff1a; 后来解决了开启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中&#xff0c;组件分为函数组件和class组件&#xff0c;也就是无状态组件和有状态组件。 * 更过时候我们应该区别使用无状态组件&#xff0c;因为如果有状态组件会触发生命周期所对应的一些函数 * 一旦触发他生命周期的函数&#xff0c;它就会影响当前项…...

LeetCode -55 跳跃游戏

LeetCode -55 跳跃游戏 给你一个非负整数数组 nums &#xff0c;你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标&#xff0c;如果可以&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。…...

Docker 运行 Kafka 带 SASL 认证教程

Docker 运行 Kafka 带 SASL 认证教程 Docker 运行 Kafka 带 SASL 认证教程一、说明二、环境准备三、编写 Docker Compose 和 jaas文件docker-compose.yml代码说明&#xff1a;server_jaas.conf 四、启动服务五、验证服务六、连接kafka服务七、总结 Docker 运行 Kafka 带 SASL 认…...

iPhone密码忘记了办?iPhoneUnlocker,iPhone解锁工具Aiseesoft iPhone Unlocker 高级注册版​分享

平时用 iPhone 的时候&#xff0c;难免会碰到解锁的麻烦事。比如密码忘了、人脸识别 / 指纹识别突然不灵&#xff0c;或者买了二手 iPhone 却被原来的 iCloud 账号锁住&#xff0c;这时候就需要靠谱的解锁工具来帮忙了。Aiseesoft iPhone Unlocker 就是专门解决这些问题的软件&…...

376. Wiggle Subsequence

376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...

Linux云原生安全:零信任架构与机密计算

Linux云原生安全&#xff1a;零信任架构与机密计算 构建坚不可摧的云原生防御体系 引言&#xff1a;云原生安全的范式革命 随着云原生技术的普及&#xff0c;安全边界正在从传统的网络边界向工作负载内部转移。Gartner预测&#xff0c;到2025年&#xff0c;零信任架构将成为超…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...

JAVA后端开发——多租户

数据隔离是多租户系统中的核心概念&#xff0c;确保一个租户&#xff08;在这个系统中可能是一个公司或一个独立的客户&#xff09;的数据对其他租户是不可见的。在 RuoYi 框架&#xff08;您当前项目所使用的基础框架&#xff09;中&#xff0c;这通常是通过在数据表中增加一个…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

推荐 github 项目:GeminiImageApp(图片生成方向,可以做一定的素材)

推荐 github 项目:GeminiImageApp(图片生成方向&#xff0c;可以做一定的素材) 这个项目能干嘛? 使用 gemini 2.0 的 api 和 google 其他的 api 来做衍生处理 简化和优化了文生图和图生图的行为(我的最主要) 并且有一些目标检测和切割(我用不到) 视频和 imagefx 因为没 a…...