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

news2025/2/25 9:55:46

目录

  • 创建数据表
    • 语法
    • 列类型
    • 字段属性
    • 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;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1477703.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Window系统部署Z-blog并结合内网穿透实现远程访问本地博客站点

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

基于光流法以及背景减除法的降雪检测项目知识点总结

项目总结目录 一、算法部分1.光流法部分知识点2.python代码与大华摄像头之间的实时调用3.两个方法的代码 一、算法部分 1.光流法部分知识点 像素坐标系与直角坐标系之间的转换,之后计算角度。 其中光流法通过判断运动目标的角度来识别是否为降雪,通过…

VS2019 - 未启用调试

在昨天的工作中,遇到了下面的报错,提示的我感觉很莫名其妙,最后找到了解法,记录一下。 弹窗提示 原因 修改了Web.config文件,并且没有保存,也没关闭已经打开的Web.config文件。 解决方案 保存并没关闭已…

部分卷积与FasterNet模型详解

简介 论文原址:2023CVPR:https://arxiv.org/pdf/2303.03667.pdf 代码仓库:GitHub - JierunChen/FasterNet: [CVPR 2023] Code for PConv and FasterNet 为了设计快速神经网络,很多工作都集中于减少浮点运算(FLOPs&a…

(libusb) usb口自动刷新

文章目录 libusb自动刷新程序Code目录结构Code项目文件usb包code包 效果描述重置reset热拔插使用 END libusb 在操作USB相关内容时,有一个比较著名的库就是libusb。 官方网址:libusb 下载: 下载源码官方编好的库github:Release…

Mysql REGEXP正则运算符

# 邮箱h开头 mysql> select email form xxx where email REGEXP ^h;

就业班 2401--2.28 Linux Day7--存储管理1

一 .存储管理 主要知识点: 基本分区、逻辑卷LVM、EXT3/4/XFS文件系统、RAID 初识硬盘 机械 HDD 固态 SSD SSD的优势 SSD采用电子存储介质进行数据存储和读取的一种技术,拥有极高的存储性能,被认为是存储技术发展的未来新星。 与传统硬盘相比&#…

单点登录的三种方式

前言 在B/S系统中,登录功能通常都是基于Cookie 来实现的。当用户登录成功后,一般会将登录状态记录到Session中,或者是给用户签发一个 Token,无论哪一种方式,都需要在客户端保存一些信息(Session ID或Token)&#xff0…

服务器数据恢复-异常断电导致服务器硬盘离线的数据恢复案例

服务器数据恢复环境: dell某型号服务器中有一组通过raid卡组建的raid10,该raid阵列中一共有4块磁盘。上层部署XenServer虚拟化平台,作为网站服务器使用。 服务器故障: 服务器异常断电导致服务器上的一台虚拟机不可用。需要恢复这…

优维全面可观测产品能力分解④:故障可观测

《优维全面可观测产品能力分解》系列文章的第一篇,介绍了「架构可观测」是从系统架构的视角来呈现链路与服务的状态数据;第二篇介绍了「变更可观测」是从变更的角度看系统状态的变化,及与事件的关联关系;第三篇介绍了「应用服务可…

配置资源管理Secret

目录 一、什么是Secret? 二、secret的三种类型 三、pod适用secret的三种方式 四、secret实例 1、创建secret 2、使用Secret方式 一、什么是Secret? Secret 是用来保存密码、token、密钥等敏感数据的 k8s 资源,目的是为了更方便的控制使用数据,并…

MWC 2024丨移远通信全新Wi-Fi 7和蓝牙5.4模组组合,为PC提供巅峰无线连接体验

2月26日,在MWC 2024展会期间,全球领先的物联网整体解决方案供应商移远通信对外宣布,其已正式推出新型Wi-Fi 7和蓝牙5.4二合一模组NCM8x5系列。该系列产品专为个人电脑(PC)无线连接场景设计,具有低延时、超高…

python 中常用的热门库介绍

阅读本文之前请参阅-----如何系统的自学python Python 是一种非常流行的编程语言,它的一个主要优势是拥有一个庞大的生态系统,其中包括许多强大的库。这些库为各种任务提供了解决方案,从数据分析到机器学习,从网络爬虫到图像处理。…

【ArcPy】验证是否存在

实例展示 代码 import arcpy def script_tool(param0, param1,param2):if arcpy.Exists(param0):arcpy.AddMessage("图层存在");if arcpy.Exists(param0):arcpy.AddMessage("工作空间存在");if arcpy.Exists(param0):arcpy.AddMessage("要素存在&quo…

蓝桥杯-灌溉

参考了大佬的解题思路&#xff0c;先遍历一次花园&#xff0c;找到所有的水源坐标&#xff0c;把它们存入 “水源坐标清单” 数组内&#xff0c;再读取数组里的水源坐标进行扩散。 #include <iostream> using namespace std; int main() {int n,m,t,r,c,k,ans0,list_i0;…

编写科技项目验收测试报告需要注意什么?第三方验收测试多少钱?

科技项目验收测试是一个非常重要的环节&#xff0c;它对于确保科技项目的质量和可用性起着至关重要的作用。在项目完成后&#xff0c;进行科技项目验收测试可以评估项目的功能、性能和可靠性等方面&#xff0c;并生成科技项目验收测试报告&#xff0c;以提供给项目的相关方参考…

C语言数据结构基础-单链表

1.链表概念 在前面的学习中&#xff0c;我们知道了线性表&#xff0c;其中逻辑结构与物理结构都连续的叫顺序表&#xff0c;那么&#xff1a; 链表是⼀种物理存储结构上⾮连续、⾮顺序的存储结构&#xff0c;数据元素的逻辑顺序是通过链表 中的指针链接次序实现的 。 2.链表组…

力扣550 游戏玩法分析 IV

目录 题目描述 思路整理 1. 首次登录日期 2. 第二天登录 3. 计算比率 实现思路 完整代码及解释 题目描述 Table: Activity ----------------------- | Column Name | Type | ----------------------- | player_id | int | | device_id | int | | ev…

ICVQUANTUMCHINA报告:《2024全球量子计算产业发展展望》

2月20日&#xff0c;《2024量子计算产业发展展望》的中文版报告通过光子盒官方平台发布&#xff0c;英文版报告通过ICV官方平台发布。 英文版报告获取地址&#xff1a; https://www.icvtank.com/newsinfo/897610.html 在过去的一年里&#xff0c;光子盒与您一同见证了全球量子…

改进的yolo交通标志tt100k数据集目标检测(代码+原理+毕设可用)

YOLO TT100K: 基于YOLO训练的交通标志检测模型 在原始代码基础上&#xff1a; 修改数据加载类&#xff0c;支持CoCo格式&#xff08;使用cocoapi&#xff09;&#xff1b;修改数据增强&#xff1b;validation增加mAP计算&#xff1b;修改anchor&#xff1b; 注: 实验开启weig…