MySQL表的基本操作

目录

一、创建表的语法

二、表的物理存储类型

三、数据类型

3.1 文本类型类型:

3.2 数字类型:

3.3 时间\日期类型:

常用数据类型:

四、查看表

五、删除表

六、修改表的结构

八、数据库字典

九、表的约束

9.1 五类完整性约束:

9.2 表的约束实例

9.2.1 非空约束

9.2.2 唯一约束

9.2.3 主键约束

9.2.4 外键约束

9.2.5 检查约束

9.2.6 自动增长

9.2.7 默认值约束


一、创建表的语法

标准的建表(table)语法(列定义之间以英文逗号,隔开):
数据表的每行称为一条记录(record),每一列称为一个字段(field):
主键(字段)列:唯一标识某一行的列:
CREATE TABLE 表名(列名(字段名) 类型,列名(字段名) 类型,列名(字段名) 类型,列名(字段名) 类型,列名(字段名) 类型
) ENGINE = 存储结构;

二、表的物理存储类型

MyISAM   ||   InnoDB(默认)
存储列相关信息,描述表结构文件,字段长度等
如果采用共存储模式的,数据信息和索引信息都存储在ibdata1中,
如果采用分区存储,还会有一个t.par文件(用来存储分区信息)。

三、数据类型

MySQL中常用数据类型有三种:1、文本类型 2、数字类型 3、日期/时间类型

3.1 文本类型类型:

数据类型描述
CHAR(size)保存固定长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的长度。最多 255 个字符。
VARCHAR(size)保存可变长度的字符串(可包含字母、数字以及特殊字 符)。在括号中指定字符串的最大长度。最多 255 个字 符。如果size>255,则类型会自动转换为TEXT类型。
TEXT存放最大长度为 65,535 个字符的字符串。
TINYTEXT存放最大长度为 255 个字符的字符串。
MEDIUMTEXT存放最大长度为 16,777,215 个字符的字符串。
LONGTEXT存放最大长度为 4,294,967,295 个字符的字符串。
BLOB用于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数据。
MEDIUMBLOB用于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节的数据。
LONGBLOB用于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字节的数据。
ENUM枚举类型

3.2 数字类型

数据类型描述
TINYINT(size)-128 到 127 常规。 0 到 255 无符号*。在括号中规定最 大位数
SMALLINT(size)-32768 到 32767 常规。 0 到 65535 无符号*。在括号中 规定最大位数。
MEDIUMINT(size)-8388608 到 8388607 普通。 0 到 16777215 无符号*。在 括号中规定最大位数。
INT(size)-2147483648 到 2147483647 常规。 0 到 4294967295 无 符号*。在括号中规定最大位数。
BIGINT(size)-9223372036854775808 到 9223372036854775807 常规。
FLOAT(size,d)带有浮动小数点的小数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DOUBLE(size,d)带有浮动小数点的大数字。在括号中规定最大位数。在 d 参数中规定小数点右侧的最大位数。
DECIMAL(size,d)作为字符串存储的 DOUBLE 类型,允许固定的小数点。

3.3 时间\日期类型

数据类型描述
DATE()日期。格式:YYYY-MM-DD 取值范围 '1000-01-01' <<<>>> '9999-12-31'
DATETIME()日期和时间的组合。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是'1000-01-01 00:00:00' <<<>>> '9999-12- 31 23:59:59'
TIMESTAMP()时间戳。 TIMESTAMP 值使用 Unix 纪元('1970-01-01 00:00:00' UTC) 至今的描述来存储。格式: YYYY-MM-DD HH:MM:SS 注释:支持的范围是从 '1970-01-01 00:00:01' UTC 到 '2038-01-09 03:14:07' UTC
TIME()时间。格式: HH:MM:SS 注释:支持的范围是从 '-838:59:59' 到 '838:59:59'
YEAR()2 位或 4 位格式的年。 注释: 4 位格式所允许的值: 1901 到 2155。 2 位格式所允许 的值: 70 到69,表示从 1970 到 2069

常用数据类型:

四、查看表

SHOW命令
语法:
SHOW TABLES [FROM 数据库名] [LIKE wild];
查看表结构:
SHOW COLUMNS FROM 表名

五、删除表

DROP TABLE [IF EXISTS] 表名

让我们举一个例子理解一下:

#创建学生表
CREATE TABLE Students(studentNo INT(5),studentName VARCHAR(50),	studentBirth  DATE,	studentAddress VARCHAR(100),	studentTel VARCHAR(11),	studentEmail VARCHAR(50)	
) ENGINE = InnoDB;
#查看表结构
SHOW COLUMNS FROM Student
#删除表
DROP TABLE [IF EXISTS] Student

六、修改表的结构

修改列类型
ALTER TABLE 表名 MODIFY 列名 列类型;
>>> ALTER TABLE Students MODIFY studentEmail TEXT;添加列
ALTER TABLE 表名 ADD 列名 列类型;
>>> ALTER TABLE Students ADD studentGender CHAR(2);删除列
ALTER TABLE 表名 DROP 列名;    删除时注意数据完整性
>>> ALTER TABLE Students DROP studentGender;改列名
ALTER TABLE 表名 CHANGE 旧列名 新列名 列类型;
>>> ALTER TABLE Students CHANGE studentEmail studentEma VARCHAR(50);改表名
ALTER TABLE 表名 RENAME 新表名;
RENAME TABLE 表名 TO 新表名;

七、复制表的结构

复制表的结构有两种手段方式1:在 CREATE TABLE 语句的末尾加入 LIKE 源表;>>>  CREATE TABLE Students1 LIKE Students;//只有结构没有数据方式2:在 CREATE TABLE 语句末尾添加 SELECT 关键字;>>> CREATE TABLE Students2 SELECT * FROM Students;//有结构又有数据方法3:如果已经有一张表了(结构一定要和源表一样)>>> INSERT INTO 表名 SELECT * FROM 源表;//结构已经一致单纯复制数据

八、数据库字典

tables-存放数据库里所有的数据表、以及每个表所在数据库
schemata-存放数据库里所有的数据库信息
views-存放数据库里所有的视图信息
columns-存放数据库里所有的列信息
triggers-存放数据库里所有的触发器
routines-存放数据库里所有存储过程和函数
key_column_usage-存放数据库所有的主外键
table_constraints-存放数据库全部约束
statistics-存放了数据表的索引

(备注:由 information_schema 数据库负责维护)

九、表的约束

表的约束是在表上强制执行的数据校验规则

约束主要用于保证数据库的完整性,当表中数据有相互依赖性时,可以保护相关的数据不被删除

9.1 五类完整性约束:

1,非空约束   NOT NULL
2,唯一性约束 UNIQUE KEY >>>主键约束(非空+唯一)   PRIMARY KEY
3,外键约束   FOREIGN KEY
4,检查约束   CHECK 检查语法
5,默认值约束  DEFAULT

加入约束的三种时机
1,建表时期加入,直接符在声明的列后。
2,建表时期加入,所有列声明完成后,单独去重新声明列的约束性。
3,建表后加入,语法参考修改列类型语法完成约束的添加。约束作为数据库对象,存放在系统表中,也有自己的名字
创建约束的时机在建表的同时创建建表后创建(修改表)
可定义列级或表级约束
有单列约束和多列约束定义约束的语法方式1:列级约束:在定义列的同时定义约束语法:列定义 约束类型,方式2:表级约束:在定义了所有列之后定义的约束语法:列定义[CONSTRAINT 约束名] 约束类型(列名)约束名的取名规则推荐采用:表名_列名_约束类型简介
方式3:约束可以在创建表时就定义,也可以在创建完后再添加语法:ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型(要约束的列名)

9.2 表的约束实例

9.2.1 非空约束

列级约束,只能使用列级约束语法定义

可以确保字段值不允许为空,只能在字段级定义

	CREATE TABLE Students(studentNo INT PRIMARY KEY AUTO_INCREMENT,studentName VARCHAR(50) NOT NULL);

9.2.2 唯一约束

唯一性约束条件确保所在的字段或者字段组合不出现重复值
唯一性约束条件的字段允许出现多个NULL
同一张表内可建多个唯一约束
唯一约束可由多列组合而成
建唯一约束时MySQL会为之建立对应的索引
如果不给唯一约束起名,该唯一约束默认与列名相同

CREATE TABLE Students(studentNo INT PRIMARY KEY AUTO_INCREMENT,studentName VARCHAR(18) UNIQUE NOT NULL
);

9.2.3 主键约束

主键从功能上看相当于非空且唯一
一个表中只允许一个主键
主键是表中唯一确定一行数据的字段
主键字段可以是单字段或者是多字段的组合
当建立主键约束时,MySQL为主键创建对应的索引

CREATE TABLE tb_student(studentNo INT PRIMARY KEY AUTO_INCREMENT,studentName VARCHAR(18)
);

9.2.4 外键约束

外键是构建于一个表的两个字段或者两个表的两个字段之间的关系
外键确保了相关的两个字段的两个关系
从表外键列的值必须在主表参照列值的范围内,或者为空(也可以加非空约束,强制不允许为空)
当主表的记录被子表参照时,主表记录不允许被删除
外键参照的只能是主表主键或者唯一键,保证子表记录可以准确定位到被参照的记录

格式FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
#部门
CREATE TABLE tb_dept(dept_id INT PRIMARY KEY,NAME VARCHAR(18),description VARCHAR(255)
);
#员工
CREATE TABLE tb_employee(employee_id INT PRIMARY KEY,NAME VARCHAR(18),gender VARCHAR(10),dept_id INT REFERENCES tb_dept(dept_id),address VARCHAR(255)
);

9.2.5 检查约束

create table t3(id int, age int check(age > 18),gender char(1) check(gender in ('M','F'))
);

需要注意的是检查约束在8.0版本之前,MySQL默认但不会强制的遵循check约束(写不报错,但是不生效,需要通触发器完成),8.0版本之后就开始正式支持这个约束了

9.2.6 自动增长

auto_increment :自动增长
为新的行产生唯一的标识,一个表只能有一个auto_increment,且该属性必须为主键的一部分。auto_increment的属性可以是任何整数类型

9.2.7 默认值约束

default : 默认值

可以使用default关键字设置每一个字段的默认值

-- 创建一张user表
CREATE TABLE User(  id INT(11) NOT NULL AUTO_INCREMENT COMMENT 'id',name VARCHAR(225) COMMENT '姓名',sex TINYINT(1) DEFAULT 1 COMMENT '性别 1男 0女',PRIMARY KEY (id)
) ENGINE=INNODB CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;

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

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

相关文章

Unity 常见的图像压缩格式优缺点

在Unity中&#xff0c;将图像压缩至更小的大小&#xff0c;既可以加快加载速度&#xff0c;也可以减少内存的占用。根据不同的目标平台&#xff0c;Unity提供了以下几种常见的图像压缩格式&#xff1a; 1. RGBA Compressed: 是一种通过压缩的方式来存储RGBA&#xff08;红色、…

中国的茶文化:现代生活中的茶文化

中国的茶文化&#xff1a;现代生活中的茶文化 引言 在现代社会的快节奏生活中&#xff0c;茶文化并未随时间流逝而褪色&#xff0c;反而以其独特的方式融入了全球各地人们的日常生活。它超越了饮品本身的范畴&#xff0c;成为一种连接历史、人文与现代生活方式的艺术形式。本文…

Python算法题集_滑动窗口最大值

本文为Python算法题集之一的代码示例 题目239&#xff1a;滑动窗口最大值 说明&#xff1a;给你一个整数数组 nums&#xff0c;有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗…

DevExpress WinForms中文教程 - 如何创建可访问的WinForms应用?(一)

为用户创建易访问的Windows Forms应用程序不仅是最佳实践的体现&#xff0c;还是对包容性和以用户为中心的设计承诺。在应用程序开发生命周期的早期考虑与可访问性相关的需求可以节省长期运行的时间(因为它将决定设计决策和代码实现)。 一个可访问的WinForms应用程序提供了各种…

Python中类的相关术语(附带案例)

目录 1、面向对象 2、类 3、实例 4、初始化方法 5、魔法方法 6、字符串方法 7、self 8、数据、属性、操作、行为 9、父类、基类、超类 or 子类、派生类 10、多态 11、重载多态 and 重写多态 12、名称解释 1、面向对象 在Python中&#xff0c;面向对象编程&…

Qt关于qss文件的添加使用

把ui设计得更加的养眼&#xff0c;肯定需要对控件的属性进行设置&#xff0c;qt中就是关于qss文件的使用。 那么如何创建和添加qss文件呢 1.新建一个文本文件的txt 2.将文本文件的后缀改为qss&#xff08;类比html&#xff09; 3.放置到项目的资源文件夹下 4.添加资源文件 5.在…

代码随想录算法训练营第二二天| 二叉搜索树的最近公共祖先、二叉搜索树中的插入操作、删除二叉搜索树中的节点

目录 二叉搜索树的最近公共祖先二叉搜索树中的插入操作删除二叉搜索树中的节点普通二叉树的删除方式 LeetCode 235. 二叉搜索树的最近公共祖先 LeetCode 701.二叉搜索树中的插入操作 LeetCode 450.删除二叉搜索树中的节点 二叉搜索树的最近公共祖先 给定一个二叉搜索树, 找到…

windows安装oracle之后怎么连接使用

目录 1.打开SQl Developer 2.选择JDK 3.登录 4.创建表空间,用户 安装oracle的详细教程 WINDOWS安装Oracle11.2.0.4-CSDN博客 1.打开SQl Developer 找到 SQl Developer 2.选择JDK 根据你安装的oracle版本,因为我的oracle是安装的32位的,所以这里jdk也要选择32位 选择到ja…

1.迭代与递归 - JS

迭代与递归是函数进阶的第一个门槛。迭代就是对已知变量反复赋值变换&#xff1b;递归就是函数体内调用自身。 迭代 一个迭代是就是一个循环&#xff0c;根据迭代式对变量反复赋值。 求近似根&#xff08;切线法&#xff09;&#xff1b; 迭代描述&#xff1a; x 0 x_0 x0…

Docker核心教程

1. 概述 官网&#xff1a;https://docs.docker.com/ Docker Hub 网站&#xff1a;https://hub.docker.com/ 容器较为官方的解释&#xff1a; 一句话概括容器&#xff1a;容器就是将软件打包成标准化单元&#xff0c;以用于开发、交付和部署。 容器镜像是轻量的、可执行的独立…

Java项目要不要部署在Docker里?

部署Java项目有很多种方式&#xff0c;传统的方式是直接在物理机或虚拟机上部署应用&#xff0c;但为什么现在容器化部署变得越来越流行&#xff0c; 个人觉得原因有以下几个&#xff1a; 1、 环境一致性&#xff1a;使用Docker可以确保开发、测试和生产环境的一致性&#xff…

传感器类总结(一)MPU9250 3-2程序关于IIC的底层程序

关于IIC的逻辑和底层协议可以看之前总结的 #IIC 通信协议 1、读写数据 1.1、写数据 发送N个字节程序的流程: 1、发送起始信号 2、发送从机地址和写 3、等待从机发回应答信号 4、发送第一字节数据 等待应答 5、发送下一字节数据 等带应答或非应答信号 6、发送停止信号停止发送…

D365:Debug

文章目录 前言一、附加进程二、选择进程三、DebugDebug进ApplicationSuite文件方法一方法二 前言 使用 Visual Studio 调试 D365 一、附加进程 点击路径 Debug > Attach to Process 二、选择进程 勾选下面的Show processes from all users,选择w3wp.exe&#xff0c;点击At…

HCIA学习第六天:OSPF:开放式最短路径优先协议

OSPF&#xff1a;开放式最短路径优先协议 无类别链路状态IGP动态路由协议 1.距离矢量协议&#xff1a;运行距离矢量协议的路由器会周期性的泛洪自己的路由表。通过路由的交互&#xff0c;每台路由器从相邻的路由器学习到路由&#xff0c;并且加载进自己的路由表中&#xff1b…

电视盒子哪款好?年货节必看电视盒子排名

电视盒子哪款好&#xff1f;电视盒子是每天都会使用到的&#xff0c;和电视机是好搭档&#xff0c;但很多朋友买电视盒子的时候会踩雷&#xff0c;像虚标配置、偷工减料、无售后等&#xff0c;近来年货节大促购入电视盒子的消费者增多&#xff0c;小编这次要来分享的是好评度最…

centos搭建ftp踩坑记录

ftp服务器搭建参考b站视频 第1坑&#xff0c;开放端口后仍然无法连接&#xff1a; 这里不仅需要在防火墙打开20和21端口&#xff0c;还需要打开被动访问所使用的端口&#xff0c;也就是在配置文件vsftpd.conf中指定的被动访问接收端口。 pasv_enableYES pasv_min_port40000 p…

【Java】Springboot入门

学习目标 基于SpringBoot框架的程序开发步骤 熟练使用SpringBoot配置信息修改服务器配置 基于SpringBoot的完成SSM整合项目开发 一、SpringBoot简介 1. 入门案例 问题导入 SpringMVC的HelloWord程序大家还记得吗&#xff1f; SpringBoot是由Pivotal团队提供的全新框架&…

了解维特比算法:通信系统和自然语言处理中解码的基石

一、介绍 在数字通信和信号处理领域&#xff0c;维特比算法是一种革命性的纠错和解码方法。该算法以 1967 年推出的 Andrew Viterbi 的名字命名&#xff0c;已成为数字通信和自然语言处理领域的基础。本文旨在深入研究维特比算法的复杂性&#xff0c;探讨其理论基础、实际应用以…

跨境电商展-2024广州跨境电商展览会(ICBE China 2024)

ICBE2024第11届广州国际跨境电商交易博览会&#xff0c;作为华南地区最具影响力的跨境电商展览会&#xff0c;将再次于2024年5月15-17日在广州保利世贸展览馆盛大举行。此次展会以“创新、合作、共赢”为主题&#xff0c;汇聚了来自全球各地的跨境电商企业、平台、服务商等&…

(2024,定性评估、定量评估、人类评估)神经风格转移评估:综述

Evaluation in Neural Style Transfer: A Review 公和众和号&#xff1a;EDPJ&#xff08;进 Q 交流群&#xff1a;922230617 或加 VX&#xff1a;CV_EDPJ 进 V 交流群&#xff09; 目录 0. 摘要 1. 简介 2. 神经风格转移方法 0. 摘要 神经风格转移&#xff08;Neural St…