MySQL数据管理(一)

一、列类型

列类型指规定数据库中该列存放的数据类型

列类型分类

  • 数值类型
  • 字符串类型
  • 日期和时间型数值类型

数值类型

字符串类型

日期和时间类型

MySQL允许“不严格”语法,任何标点符号都可以作为日期部分之间的间隔符,如“24-01-03”、“24.01.03”、“24/01/03”都可以写入数据表

二、创建数据表

字段属性

字段注释

三、表类型

MySQL属于关系型数据库管理系统,其他包括数据库以及数据库访问管理的接口系统。数据库负责存储数据,接口系统负责管理数据库

由于不同用户对数据的容量、访问速度、数据安全性有不同的要求,为了满足不同用户的业务需求,MySQL数据库采用多种存储引擎进行数据存储。表的存储引擎也称为表类型

MySQL5.5支持的存储引擎有MyISAMInnoDB HEAPBOBCSV等

MyISAMInnoDB的区别

MyISAM和InnoDB的区别
名称MyISAMInnoDB
事务处理不支持支持
数据行锁定不支持支持
外键约束不支持支持
全文索引支持不支持
表空间大小较小较大,约2倍

四、修改表

五、数据完整性

实体完整性

域完整性

引用完整性

使用约束实现数据完整性

数据库采用多种方法来保证数据完整性,包括约束、规则和触发器

在数据表上添加约束

设置唯一约束

六、主键

数据库主键指的是一个列或多列的组合,其值能唯一的标识表中的每一行,通过它可强制表的实体完整性

数据库主键的作用

  1. 保证实体的完整性
  2. 加快数据库的操作速度
  3. 添加新记录时,DBMS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复
  4. DBMS自动按主键值的顺序显示记录。如果没有定义主键,则按输入记录的顺序显示记录

注意:

  1. 一个表只能有一个主键,并且主键列不允许出现空值
  2. 尽管有的表中允许没有主键,但是通常情况下,建议为表设置主键

数据库主键的选择规则

  1. 最少性是指列数最少的键。如果可以从单个主键和复合主键中选择,应该选择单个主键,这是因为操作一列比操作多列要快。该规则也有例外,例如,两个整数类型的列的组合比一个很大的字符类型的列操作要快
  2. 稳定性是指列中数据的特征。由于主键通常用来在两个表之间建立联系,所以主键的数据不能进场更新。理想情况下,应该永远不变

设置主键约束

综合代码演示

CREATE DATABASE IF NOT EXISTS MYSCHOOL;
USE MYSCHOOL;

#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 '成绩表';

#5.创建课程表,设置表类型为MyIsam
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 '年级编号'
)ENGINE=myisam DEFAULT CHARSET=UTF8MB4 COMMENT '课程表';

#6.删除课程表
DROP TABLE IF EXISTS `SUBJECT`;

#7.把result表改名为studentresult
ALTER TABLE RESULT RENAME AS STUDENTRESULT;
ALTER TABLE STUDENTRESULT RENAME AS RESULT;

#8.给result表添加一个id字段 
ALTER TABLE RESULT ADD ID INT(4) UNSIGNED NOT NULL COMMENT'成绩编号';

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

#11.删除result表中的id字段
ALTER TABLE RESULT DROP RID;

#12、给学生表的联系电话字段设置为唯一约束
ALTER TABLE STUDENT ADD CONSTRAINT UQ_PHONE UNIQUE(PHONE);
ALTER TABLE STUDENT ADD CONSTRAINT UQ_STUDENTNAME UNIQUE(STUDENTNAME);

#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);

#15、删除主键索引,不需要指定名称,因为一个表中只能有一个主键
ALTER TABLE `SUBJECT` DROP PRIMARY KEY;

#16、删除唯一索引,必须指定唯一索引的名称,因为一个表中可以有多个字段的唯一索引
ALTER TABLE `STUDENT` DROP KEY UQ_STUDENTNAME;

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

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

相关文章

This error originates from a subprocess, and is likely not a problem with pip

我遇这个问题是的原因是包名错误 注意检查包名

最新GPT4.0使用教程,AI绘画,ChatFile文档对话总结+GPT语音对话使用,DALL-E3文生图

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

杨中科 ASP.NETCore Rest

什么是Rest RPC 1、Web API两种风格: 面向过程(RPC) 、面向REST (REST) 2、RPC:“控制器/操作方法“的形式把服务器端的代码当成方法去调用。把HTTP当成传输数据的通道,不关心HTTP谓词。通过QueryString请求报文体给服务器传递数据。状态码。比如/Persons/GetAll…

开发实践 | MySQL的Explain工具

📫 作者简介:「子非我鱼」,专注于研究全栈 🔥 三连支持:欢迎 ❤️关注、👍点赞、👉收藏三连,支持一下博主~ 文章目录 引言1,Explain工具介绍2,基本语法3&…

IDAPython详细版(二)

六:操作数 可以使用idc.get_openrand_typed(ea,n)得到操作数的类型。ea是地址,n是索引 这里有8种不同类型的操作数类 0_void 如果一个指令木有任何操作数它将返回0 0_reg 如果一个操作数是一个普通的寄存器将返回此类型。这个值在内部表示为1. o_mem …

空间域图像增强之直方图均衡的python代码实现——冈萨雷斯数字图像处理

原理 直方图: 图像的直方图是一个图像中像素强度值分布的图表。 对于灰度图像,直方图展示了每个灰度级出现的频率。 直方图均衡步骤: 计算累积分布函数(CDF):首先,计算图像的直方图&#xff0…

案例分析——如何优化跨境直播网络

跨境直播 风口已至 这些年越来越多商家加入直播带货行列,各种玩法日渐成熟。而TikTok作为当前国外最火爆的直播平台,不少卖家都会定期做TikTok直播引流,但时常会面临着远程访问导致直播画面模糊、卡顿掉线、延迟高,甚至可能限流黑…

如何使用 Python、Node.js 和 Go 创建基于 YOLOv8 的对象检测 Web 服务

1. 介绍 这是有关 YOLOv8 系列文章的第二篇。在上一篇文章中我们介绍了YOLOv8以及如何使用它,然后展示了如何使用 Python 和基于 PyTorch 的官方 YOLOv8 库创建一个 Web 服务来检测图像上的对象。 在本文中,将展示如何在不需要PyTorch和官方API的情况下…

LeetCode(38)外观数列⭐⭐

「外观数列」是一个整数序列,从数字 1 开始,序列中的每一项都是对前一项的描述。 你可以将其视作是由递归公式定义的数字字符串序列: countAndSay(1) "1"countAndSay(n) 是对 countAndSay(n-1) 的描述,然后转换成另一…

【LeetCode】20. 有效的括号(Deque的Stack用法)

今日学习的文章链接和视频链接 leetcode题目地址:20. 有效的括号 代码随想录题解地址:代码随想录 题目简介 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效…

阿里云服务器 使用Certbot申请免费 HTTPS 证书及自动续期

前言 Certbot是一款免费且开源的自动化安全证书管理工具,由电子前沿基金会(EFF)开发和维护,是在Linux、Apache和Nginx服务器上配置和管理SSL/TLS证书的一种机制。Certbot可以自动完成域名的认证并安装证书。 一、 安装软件 1.1…

C语言编译器(C语言编程软件)完全攻略(第一部分:什么是编译器?)

介绍常用C语言编译器的安装、配置和使用。 一、什么是编译器? 我们平时所说的程序,是指双击后就可以直接运行的程序,这样的程序被称为可执行程序(Executable Program)。在 Windows 下,可执行程序的后缀有…

时代变革,亿发进销存引领批发业转型:从‘瞎盲’到高效盈利

2024年,许多传统批发老板们忙得不可开交。抱怨生意难做、年关难熬。 有些老板为了降低成本,开除了一两个店员,结果却发现自己要同时盯着店,又得亲自开单,一天中至少有10个小时被拴在店里,就是为了减少支出…

准博士生教你如何阅读论文

AI方向如何阅读论文 绪论会议整理一篇论文的主要结构AbstractIntroductionRelated WorkApproach(framework名称亦可)ExperimentsImplementation detailsResultsAblation StudyDiscussion Conclusion 如何阅读多篇论文怎样读/写related work怎样读approach结语 绪论 作为一位工…

Linux系统安全

作为一种开放源代码的操作系统,linux服务器以其安全、高效和稳定的显著优势而得以广泛应用。 账号安全控制 用户账号是计算机使用者的身份凭证或标识,每个要访问系统资源的人,必须凭借其用户账号 才能进入计算机.在Linux系统中,提…

Unity之摄像机

一、摄像机类型 1.1 透视摄像机 透视摄像机有近大远小的效果,与我们在现实中看到的效果相同。所以当两个同样大小的物体到摄像机的距离不同时我们看到的大小也会不同。Unity的3D项目中默认使用的就是透视摄像机。 1.2 正交摄像机 正交摄像机没有近大远小的效果&am…

Linux 修改主机名称并通过主机名称访问服务器

一、命令提示符简介 当我们打开终端的时候,我们要输入命令的左边就是命令提示符,如下图,接下来介绍下他们分别代表什么含义 1、root 和 xhf 表示的是当前登录的用户名称。 2、node2 表示的当前的主机名称。 3、~ 表示的是当前的目录 4、# 表示…

BIND DNS 自定义zabbix监控

一、DNS统计计数器 Bind9可以使用rndc stats 命令将相关DNS统计信息存储到工作目录下,默认位置在: statistics-file "/var/named/data/named_stats.txt"; 每当名称服务器执行rndc stats命令,都会统计在统计信息文件最后附加一…

paddlehub 文本检测使用

PaddleHub负责模型的管理、获取和预训练模型的使用。 参考:https://github.com/PaddlePaddle/PaddleHub/tree/develop/modules/image/text_recognition/chinese_text_detection_db_server import paddlehub as hub import cv2 # from utils import cv_show import…

Charles的基础使用教程【Mac】

目录 1.安装 2.抓取https请求的前置操作 2.1安装证书: 2.2、SSL代理设置 3.Charles初识 1.安装 官网Charles下载安装即可,没有什么需要注意的地方 2.抓取https请求的前置操作 2.1安装证书: 未安装证书是这样的: 上述我们可…