【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;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

petalinux烧写image.ub报错

xinlinx SDK烧写petalinux生成的BOOT.BIN和image.ub时,BOOT.BIN烧写正常,image.ub烧写报错如下 Erase Operation failed. INFO: [Xicom 50-44] Elapsed time 0 sec.ERROR: Flash Operation Failed串口助手操作擦除flash如图: 解决方法&am…

JVM内存分配与垃圾收集流程

3.8 实战:内存分配与回收策略 3.8.1 对象优先在Eden分配 大多数情况下,对象在新生代Eden区中分配。当Eden区没有足够空间进行分配时,虚拟机将发起一次Minor GC。 3.8.2 大对象直接进入老年代 HotSpot虚拟机提供了-XX:Prete…

西软云XMS futurehotel/operate XXE漏洞复现

0x01 产品简介 西软云XMS是基于云平台数据中心开发的支持多酒店、多语言、多平台的酒店管理系统。致力于以新一代云架构为国内四,五星级中高端酒店提供灵活、高度整合酒店业务,助力酒店智能转型升级。 0x02 漏洞复现 西软云XMS /XopServerRS/rest/futurehotel/operate接口…

Spring事务模板及afterCommit存在的坑

大家好,我是墨哥(隐墨星辰)。今天的内容来源于两个线上问题,主要和大家聊聊为什么支付系统中基本只使用事务模板方法,而不使用声明式事务Transaction注解,以及使用afterCommit()出现连接未按预期释放导致的…

Smuggler:一款功能强大的HTTP请求走私和去同步安全测试工具

关于Smuggler Smuggler是一款功能强大的HTTP请求走私和去同步安全测试工具,该工具基于纯Python 3开发,可以帮助广大研究人员针对应用程序的HTTP协议执行安全分析和测试。 工具安装 由于该工具基于Python 3开发,因此我们首先需要在本地设备上…

【学习记录】HC32F460USB——U盘IAP升级app

从头开始,万物从解压开始 直奔猪蹄,找到usb下的工程文件 开始移植 主要移植IAP的boot和fatfs的文件系统,fatfs官网去下载ff15.0版本,目前用这个 放到项目里 添加到工程文件中 改引脚,给USB放电 编译,可以…

GCC如何产生core dump

先决条件 1.安装apport(automatically generate crash reports for debugging) 2.修改/etc/security/limits.conf文件,使允许core dump,或者用ulimit -c unlimited设置core dump文件的大小为unlimited(临时方案&#x…

生成voc格式数据集

数据集存放格式:(Annotations文件夹放标注的xml文件,JPEGImages文件夹放标注的图片) 运行代码: import os import random import xml.etree.ElementTree as ETimport numpy as npdef get_classes(classes_path):with …

Java中的时间API:Date、Calendar到Java.time的演变

引言 在软件开发中,处理时间和日期是一项基本且不可或缺的任务。无论是日志记录、用户信息管理还是复杂的定时任务,准确地处理时间都显得至关重要。然而,时间的处理并不像它看起来那么简单,尤其是当我们考虑到时区、夏令时等因素…

计算机组成原理-第一/二章 概述和数据的表示和运算【期末复习|考研复习】

文章目录 前言第一章 计算机组成原理 概述及各种码1.1 计算机硬件的基本组成1.1.1 存储器1.1.2 运算器1.1.3 控制器 1.2 计算机的工作过程1.3 计算机的性能指标1.4 各个字长区别与联系 第二章 数据的表示与运算2.1 ASCII码2.2 各种码2.3 浮点数 总结 前言 给大家整理了一下计算…

域控操作七:让某人不执行某策略/单独放行某人

比如我设置的是禁用移动热点,我在这里对某人拒绝,那他就能用移动热点

Qt6内嵌CEF

一、下载CEF CEF下载地址:https://cef-builds.spotifycdn.com/index.html 或https://bitbucket.org/chromiumembedded/cef/src/master/ 选择对应系统的版本(本教程选择的是116.0.19) CMake下载地址:https://cmake.org/download…

大数据界面:客户又又又要求科技感了,如何破?

如果你问客户想要什么风格,大部分脱口而出科技感,不仅要求静态页,而且还要求动态效果,炫酷动画,贝格前端工场结合多个项目经历,帮助友友们梳理如何让界面科技动感。 一、没有科技感背后的潜台词 客户说大数…

SI523 替代CLRC522/RC523,软硬件开发资料

​si523是一个 13.56MHz 的非接触式读写器芯片,支持 ISO/IEC 14443 A/B/MIFARE协议。内部集成低功耗自动寻卡与定时唤醒功能,可编程寻卡时间间隔,寻卡过程无需 MCU 操作,寻卡成功中断唤醒或定时唤醒 MCU 以实现低功耗。 产品特性…

笑营宝高校选修课报名考勤系统源码开发方案

一、项目背景与目标 (一)项目背景 随着高等教育的普及和教学模式的不断创新,高校选修课程体系日趋复杂多变。学生对课程选择的自由度提高,使得传统的选课和考勤管理方式变得繁琐且效率低下。目前,许多高校仍然采用纸…

金三银四,自动化测试面试题精选【美团二面】

面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…

Nginx之rewrite重写功能

目录 一、rewrite概述 1、rewrite功能 2、跳转场景 二、标准配置指令 1、rewrite日志记录指令 2、未初始化变量告警日志记录指令 3、rewrite 指令 3.1 正则表达式 三、rewrite模块使用实例 1.基于域名的跳转 2.基于客户端 IP 访问跳转 3. 基于旧域名跳转到新域名后面…

Spring Cloud2022之OpenFeign使用以及部分源码分析

OpenFeign使用 Feign和OpenFeign Feign是Netflix开发的⼀个轻量级RESTful的HTTP服务客户端,可以使用⽤它来发起请求,进行远程调用。Fegin是以Java接口注解的⽅式调⽤Http请求,而不是像RestTemplate那样,在Java中通过封装HTTP请求…

【茶话数据结构】查找最短路径——Dijkstra算法详解(保姆式详细图解,步步紧逼,保你学会)

💯 博客内容:【茶话数据结构】查找最短路径——Dijkstra算法详解 😀 作  者:陈大大陈 🦉所属专栏:数据结构笔记 🚀 个人简介:一个正在努力学技术的准前端,专注基础和实…

d3dcompiler_47.dll丢失的解决方法

d3dcompiler_47.dll 是一个属于 Microsoft DirectX 软件组件的动态链接库 (DLL) 文件。DirectX 是微软开发的一套广泛应用于 Windows 操作系统上的应用程序接口 (API),主要用于处理多媒体、特别是与游戏和高级图形相关的任务,例如二维 (2D) 和三维 (3D) …