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

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

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

相关文章

使用Fragments(片段)提升你的Vue.js开发体验

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》 🍚 蓝桥云课签约作者、上架课程《Vue.js 和 E…

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络

HCIA-Datacom实验指导手册:6 构建基础 WLAN 网络 一、实验介绍:二、实验拓扑:三、实验目的:四、配置步骤:1.掌握ap上线的配置方式和上线过程。ac配置验证 步骤 2 掌握隧道模式和旁挂模式下ac的配置。步骤 3 掌握查看ap…

【Vue3】回顾watch,学习watchEffect

💗💗💗欢迎来到我的博客,你将找到有关如何使用技术解决问题的文章,也会找到某个技术的学习路线。无论你是何种职业,我都希望我的博客对你有所帮助。最后不要忘记订阅我的博客以获取最新文章,也欢…

mount命令最新详细教程

背景 需要在设备上面,自动化运行u盘里面的脚本,并且进入一个产测模式。因此实际使用了这个mount命令,所以,写了这么一篇供大家参考。 一. 定义 mount命令在Linux和类Unix系统中用于挂载文件系统,即将存储设备…

数仓模型设计方法论

在当今大数据时代,数据已经成为企业最重要的资产之一。而数据仓库作为企业数据管理和分析的核心基础设施,其设计方法论对于企业的数据治理和决策分析至关重要。本文将探索数仓模型设计的方法论,帮助读者更好地理解和应用数仓模型设计。 一、…

从零开始手写RPC框架(1)

学习java后端也有一段时间了,在网上寻一些教程和github上的开源库,学习从零开始手写一个RPC,学习各位大牛的代码适当修改,并贴上自己的一些见解和注释。 目录 RPC简介RPC和HttpClient的区别和共同点常见RPC框架 RPC框架设计常见序…

ISP代理是什么?怎么用?

在跨境出海业务中,代理IP对于您的在线任务至关重要,尤其是对于那些运行多个帐户的人来说。为您的帐户选择正确类型的代理对于确保帐户安全非常重要,劣质的IP容易使账号遭受封号风险。IPFoxy的多种代理IP类型应用范围各有侧重,其中…

html5移动端开发面试,2024年Android开发者常见面试题

Java相关 无论什么级别的Android从业者,Java作为Android开发基础语言。不管是工作还是面试中,Java都是必考题。如果不懂Java的话,薪酬会非常吃亏(美团尤为重视Java基础) 详细介绍了Java泛型、注解、并发编程、数据传…

“智农”-数字乡村可视化

“智农”打造数字乡村可视化,结合乡村区域实际情况,以规划完善乡村机制体系和更好服务乡村振兴为目标,坚持可持续、可复制、可扩展的建设原则,着力解决农村信息孤岛,提高农村种植技术,加快农村信息化和产业…

Tomcat安装,配置文件、组件

一、Tomcat的基本功能 1.1.Tomcat是什么? Tomcat服务器是一个免费的开放源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。一般来说,T…

《Redis 设计与实现》读书概要

注: 《Redis 设计与实现》一书基于 Redis 2.9 版本编写,部分内容已过时,过时之处本文会有所说明。本文为读书笔记,部分简单和日常使用较少的知识点未记录。原书网页版地址 https://redisbook.com/ 一、底层数据结构 SDS(Simple Dy…

动态规划总结

参考来源:代码随想录 文章目录 基础概念具体应用的问题基础问题背包问题0-1背包完全背包 打家劫舍问题股票买卖问题子序列问题 基础概念 状态推导:动态规划中每一个状态一定是由上一个状态推导出来的。 动规五部曲: 确定dp[i]或者dp[i][j]…

吴恩达机器学习全课程笔记第四篇

目录 前言 P61-P68 激活函数 Softmax算法 P69-P73 Adam算法 更多类型的层 模型评估 P74-P79 偏差和方差 建立表现基准 学习曲线 偏差和方差与神经网络 前言 这是吴恩达机器学习笔记的第四篇,第三篇笔记请见: 吴恩达机器学习全课程笔记第…

react使用@reduxjs/toolkit和react-redux实现store状态管理

一、概述 reduxjs/toolkit和react-redux是用于在React应用中管理全局状态的工具库 1、reduxjs/toolkit: reduxjs/toolkit是Redux官方推荐的工具库,是对 Redux 的二次封装,它提供了一些便捷的API和工具,帮助开发者更快速地编写R…

上海雷卯推出USB4接口的静电浪涌保护方案

一、 USB4技术性能特点 USB4是USB3.2 的后继版本,是最新的USB规范。USB4是通信协议,采用的硬件接口是USB Type-C 接口,USB Type-C 端口根据 USB3.x 和 USB4 协议传输数据。它的接口标准是由 USB Promoter Group 制定的,主要规范了USB4 接口的…

基于x86架构的OpenHarmony应用生态挑战赛等你来战!

为了更快速推进OpenHarmony在PC领域的进一步落地,加快x86架构下基于OpenHarmony的应用生态的繁荣,为北向应用开发者提供一个更加便捷的开发环境,推动OpenHarmony北向应用开发者的增加,助力OpenHarmony在PC领域实现新的突破&#x…

【c语言】探索结构体---解锁更多选择

前言 结构体属于自定义类型的一种,这增加了我们写代码的选择,跟着我的脚步一起来探索结构体吧~ 欢迎关注个人主页:逸狼 创造不易,可以点点赞吗~ 如有错误,欢迎指出~ 认识结构体 结构是⼀些值的集合,这些值…

iMazing3安全吗?好不好用?值不值得下载

一、安全性 iMazing在设计和开发过程中,始终把用户数据的安全性放在首位。它采用了多种先进的安全技术来确保用户数据在传输、备份和存储过程中的安全。 iMazing3Mac-最新绿色安装包下载如下: https://wm.makeding.com/iclk/?zoneid49816 iMazing3Wi…

深度学习 精选笔记(6)模型选择与正则化

学习参考: 动手学深度学习2.0Deep-Learning-with-TensorFlow-bookpytorchlightning ①如有冒犯、请联系侵删。 ②已写完的笔记文章会不定时一直修订修改(删、改、增),以达到集多方教程的精华于一文的目的。 ③非常推荐上面(学习参考&#x…

vue3基础教程(1)——nodejs环境搭建

博主个人小程序已经上线:【中二少年工具箱】 小程序二维如下: 正文开始 专栏简介1. 环境菜单2.为什么下载node3. nodejs简介4. nodejs安装5. 编辑器选择 专栏简介 本系列文章由浅入深,从基础知识到实战开发,非常适合入门同学。…