数据库(表的基本操作)

news2024/11/21 0:19:32

目录

1.1 表的基本操作

1.1.1 创建表

1.1.2 表物理存储结构

1.1.3 数据类型

文本类型:

数字类型:

时间/日期类型:

常用的数据类型:

1.1.4 查看表

SHOW 命令

查看表结构:

1.1.5 删除表

查看表结构:

删除表:

1.1.6 修改表

修改列类型:

添加列:

删除列:

改列名:

改表名:

1.1.7 复制表的结构(考虑到数据问题)

复制表的结构手段如下:

1.1.8 数据库字典

1.1.9 表的约束

加入约束的三种时机:

创建约束是时机:

定义约束的语法:

约束名的取名规则:

表的约束示例

        1、非空约束(NOT NULL)

        2、唯一约束

        3、主键约束

        4、外键约束

        5、检查约束

        6、自动增长

        7、默认值


1.1 表的基本操作

1.1.1 创建表

语法如下:

        标准的建表(table)语法(列定义之间以英文逗号 , 隔开):

        数据表的每行称为一条记录(record),每一列称为一个字段(field):

        主键(字段)列:唯一标识某一行的列:

CREATE TABLE 表名(
    列名(字段名) 类型,
    列名(字段名) 类型,
    列名(字段名) 类型,
    列名(字段名) 类型,
    列名(字段名) 类型,
) ENGINE = 存储结构;

        表名采用大驼峰命名如 >>> Students        Subject        StudentResult

        表名采用小驼峰命名如 >>> studentName        subjectName        resultDate

1.1.2 表物理存储结构

MyISAM    ||    InnoDB(默认)

         存储列相关信息,描述表结构文件,字段长度等

        如果采用共存储模式的,数据信息和索引信息都存储在 ibdata1 中

        如果采用分区存储,还会有一个 t.par 文件(用来存储分区信息)

1.1.3 数据类型

在MySQL中,常用的数据类型有三种

        文本类型、数字类型、日期/时间类型

文本类型:

数据类型描述
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,294 字节的数据

ENUM枚举类型

数字类型:

数据类型描述
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 类型,允许固定的小数点

时间/日期类型:

数据类型描述
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

常用的数据类型:

1.1.4 查看表

SHOW 命令

语法如下:
    SHOW TABLES [FROM 数据库名] [LIKE wild];

查看表结构:

SHOW COLUMNS FROM 表名

1.1.5 删除表

语法如下:
    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 Students;

删除表:

DROP TABLE [IF EXISTS] Student;

1.1.6 修改表

修改列类型:

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 新表名;

ALTER TABEL 表名 TO 新表名;

1.1.7 复制表的结构(考虑到数据问题)

复制表的结构手段如下:

        方式一:

在 CREATE TABLE 语句的末尾加入 LIKE 源表;
示例:
    CREATE TABLE Students1 LIKE Students;

        方式二:

在 CREATE TABLE 语句末尾添加 SELECT 关键字;
示例:
    CREATE TABLE Students2 SELECT * FROM Students;

        方式三:

如果已经有了一张表(结构一定要和源表一样)
语法:
    INSERT INTO 表名 SELECT * FROM 源表;

1.1.8 数据库字典

information_schema  数据库负责维护

tables存放数据库里所有的数据表、以及每个表所在数据库
schemata存放数据库里所有的数据库信息
views

存放数据库里所有的视图信息

columns存放数据库里所有的列信息
triggers存放数据库里所有的触发器
routines存放数据库里所有存储过程和函数
key_column_usage存放数据库所有的主外键
table_constraints存放数据库全部约束
statistics存放了数据表的索引

1.1.9 表的约束

是在表上强制执行的数据校验规则,约束主要用于保护数据库的完整性。当表中的数据有相互依赖性时,可以保护相关的数据不被删除

大部分数据库支持以下完整性约束:

非空约束NOT NULL
唯一性约束

UNIQUE KEY

主键约束(非空 + 唯一)PRIMARY KEY
外键约束FOREIGN KEY
检查约束CHECK 检查语法
默认值约束DEFAULT
............

加入约束的三种时机:

        1、建表时期加入,直接符在声明的列后

        2、建表时期加入,所有列声明完成后,单独去重新声明列的约束性

        3、建表后加入,语法参考修改列类型语法完成约束的添加

约束作为数据库对象,存放在系统表中,也有自己的名字

创建约束是时机:

        1、在建表的同时创建

        2、建表后创建(修改表)

可定义列级或表级约束

有单列约束和多列约束

定义约束的语法:

方式一

列级约束:在定义列的同时定义约束

语法:

        列定义 约束类型

方式二

表级约束:在定义了所有列之后定义的约束

语法:

        列定义

        [CONSTRAINT 约束名] 约束类型(列名)

约束名的取名规则:

推荐采用:表名_列名_约束类型简介

方式三

约束可以在创建表时就定义,也可以在创建完成后再添加

语法:

        ALTER TABLE 表名 ADD CONSTRAINT 约束名 约束类型(要约束的列名)

表的约束示例

        1、非空约束(NOT NULL)

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

                确保字段值不允许为空

                只能在字段级定义

CREATE TABLE Students(
    	studentNo INT PRIMARY KEY AUTO_INCREMENT,
    	studentName VARCHAR(50) NOT NULL
);
        2、唯一约束

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

CREATE TABLE Students(
    studentNo INT PRIMARY KEY AUTO_INCREMENT,
    studentName VARCHAR(18) UNIQUE NOT NULL
);
        3、主键约束

                主键从功能上看相当于非空且唯一
                一个表中只允许一个主键
                主键是表中唯一确定一行数据的字段
                删除表的约束
                自动增长和默认值
                存储引擎
                主键字段可以是单字段或者是多字段的组合
                当建立主键约束时,MySQL为主键创建对应的索引
                主键约束名总为PRIMARY

CREATE TABLE tb_student(
    studentNo INT PRIMARY KEY AUTO_INCREMENT,
    studentName VARCHAR(18)
);
        4、外键约束

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

格式:
    FOREIGN KEY (外键列名)REFERENCES 主表(参照列)
        5、检查约束

                检查约束在8.0之前,MySQL默认但不会强制的遵循check约束(写不报错,但是不生效,需要通触发器完成)

                8之后就开始正式支持这个约束了

create table t3(
    id int, 
    age int check(age > 18),
    gender char(1) check(gender in ('M','F'))
);
        6、自动增长
auto_increment :自动增长

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

        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.coloradmin.cn/o/1401897.html

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

相关文章

一份关于Chrome插件开发指北

目前开发v2版本开发教程可看这里 但目前谷歌浏览器强制要v3&#xff0c;本文主要是总结一些v3跟v2的不同。 为什么迁移到清单V3? 正如Chrome的文档所说: 使用MV3的扩展程序将在安全性、隐私性和性能方面得到增强;它们还可以使用MV3中采用的更现代的开放网络技术,如服务人员和…

三、Flask学习之BootSrap

三、Flask学习之BootSrap Bootstrap 是一款由Twitter团队开发的开源前端框架&#xff0c;它以响应式设计、移动端友好和丰富的组件为特色&#xff0c;为开发者提供了快速构建现代化网站和Web应用的工具。借助其灵活的栅格系统、丰富的UI组件和可定制的样式&#xff0c;Bootstr…

实现自己的mini-react

实现自己的mini-react 创建运行环境实现最简单mini-react渲染dom封装创建虚拟dom节点封装函数封装render函数对齐react 调用方式使用 jsx 任务调度器&fiber架构封装一个workLoop方法 统一提交&实现 function component统一提交实现支持 function component 进军 vdom 的…

Python语法进阶——类

Python中的数据类型都属于类。int、str、list都是Python定义好的数据类型类。 print(type(list))#<class type> print(type(list()))#<class list> 一、自定义数据类型 一、语法 class 类名():pass #类名 要求首字母大写 #()可写可省略。 #pass在这里只是用来保证…

一文详解 Berachain 测试网:全面介绍与教程,bitget wallet教程

什么是Berachain&#xff1f; Berachain&#xff08;web3.bitget.com/zh-CN/assets/berachain-wallet&#xff09;是一种尖端区块链技术&#xff0c;使用 Cosmos SDK 构建的 Layer-1&#xff0c;兼容以太坊虚拟机&#xff08;EVM&#xff09;。它基于一种独特的概念&#xff0c…

Docker(九)Docker Buildx

作者主页&#xff1a; 正函数的个人主页 文章收录专栏&#xff1a; Docker 欢迎大家点赞 &#x1f44d; 收藏 ⭐ 加关注哦&#xff01; Docker Buildx Docker Buildx 是一个 docker CLI 插件&#xff0c;其扩展了 docker 命令&#xff0c;支持 [Moby BuildKit] 提供的功能。提…

用于垃圾回收的运行时配置选项

反馈 本文内容 指定配置的方法垃圾回收的风格管理资源使用情况大型页面 显示另外 4 个 此页面包含有关 .NET 运行时垃圾回收器 (GC) 设置的信息。 如果你要尝试让正在运行的应用达到最佳性能&#xff0c;请考虑使用这些设置。 然而&#xff0c;在特定情况下&#xff0c;默认…

Linux指令补充和权限简单介绍

一.tar指令 形式&#xff1a;tar [-cxtzjvf] 文件与目录 ....
 参数&#xff1a;
 -c &#xff1a;建立一个压缩文件的参数指令(create 的意思)&#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xff01; -t &#xff1a;查看 tarfile 里面的文件&#xff01; -…

Kafka常见指令及监控程序介绍

kafka在流数据、IO削峰上非常有用&#xff0c;以下对于这款程序&#xff0c;做一些常见指令介绍。 下文使用–bootstrap-server 10.0.0.102:9092,10.0.0.103:9092,10.0.0.104:9092 需自行填写各自对应的集群IP和kafka的端口。 该写法 等同 –bootstrap-server localhost:9092 …

2024 前端高频面试题之 JS 篇

JS 篇&#xff08;持续更新中&#xff09; 1、什么是原型、原型链&#xff1f;2、什么是继承&#xff1f;说一说有哪些&#xff1f;继承组合的原理及优点&#xff1f;3、new 操作符具体干了什么&#xff1f;4、js 有哪些方法改变 this 指向&#xff1f;5、bind 有哪些实现的注意…

【C++ | 数据结构】从哈希的概念 到封装C++STL中的unordered系列容器

文章目录 一、unordered系列容器的底层结构 - 哈希1. 哈希概念2. 哈希冲突 二、解决哈希冲突方法一&#xff1a;合理设计哈希函数&#x1f6a9;哈希函数设计原则&#x1f6a9;常见哈希函数 方法二&#xff1a;开闭散列&#x1f6a9;闭散列线性探测法&#xff08;实现&#xff0…

利用Anaconda安装pytorch和paddle深度学习环境+pycharm安装后不能调用pytorch和paddlepaddle框架

问题现象&#xff1a; 之前安装后不能在添加pytorch和paddlepaddle框架 原因&#xff08;疑似&#xff09;&#xff1a; 在终端中显示pytorch和paddle在C盘但是安装是安装在J盘 解决办法&#xff1a; 卸载、删除文件重新安装后可以看到文件位置在J盘中 但是选择时还是显示C…

Tomcat的maxParameterCountmaxPostSize参数

Tomcat的maxParameterCount&maxPostSize参数 Tomcat的maxParameterCount&maxPostSize参数1.问题1.1问题现象1.2 参数总结1.3 问题总结 2 Tomcat官网的解释2.1 到https://tomcat.apache.org/找到文档入口2.2 找到文档的Reference2.3 查看配置文件的参数 3 文档看不明白&…

用的到的linux-Day1

前言&#xff1a; 从入门IT开始我们知道Linux操作系统与其他操作系统不同&#xff0c;Linux因为其独特的优势&#xff0c;被广泛应用在服务器领域&#xff0c;而且是一个近乎完美的操作系统&#xff0c;运行稳定、功能强大、安全性高、开源、可定制等等。 因此我打算从24年开始…

Rocky Linux 9. 3安装图解

风险告知 本人及本篇博文不为任何人及任何行为的任何风险承担责任&#xff0c;图解仅供参考&#xff0c;请悉知&#xff01;本次安装图解是在一个全新的演示环境下进行的&#xff0c;演示环境中没有任何有价值的数据&#xff0c;但这并不代表摆在你面前的环境也是如此。生产环境…

Proxmox VE 8 试装Oracle 23c

作者&#xff1a;田逸&#xff08;formyz&#xff09; Oracle 当前的最新版本是23c&#xff0c;虽然官方网站下载不了它的正式版本&#xff0c;但是却提供了一个性能受限的免费版本“Oracle Database 23.3 Free”&#xff08;存储容量受限、内存使用受限&#xff09;。这里就只…

PLC-IoT 网关开发札记(5):将本地数据库作为资产打包发布到 App

App需求&#xff1a;保存物模型 什么是物模型 在项目开发中&#xff0c;用到了本地数据库&#xff0c;这个本地数据库记录了系统的物模型。所谓物模型就是对某一个设备的可操纵属性的定义&#xff0c;每一个设备包括了一个或者多个属性&#xff0c;通过获取这些属性的当前值可…

【Web实操11】定位实操_照片墙(无序摆放)

设置一个板块&#xff0c;将照片随意无序摆放在墙上&#xff0c;从而形成照片墙。本来效果应该是很唯美好看的&#xff0c;就像这种&#xff0c;但是奈何本人手太笨&#xff0c;只好设置能达到照片墙的效果就可。 代码如下&#xff1a; <!DOCTYPE html> <html lang&…

2023 年,我患上了 AI 焦虑症!

【作者有话说】2023 年对我来说是神奇的一年&#xff0c;我意外地从一个程序员变成了一个 AI 资讯届的“网红”&#xff0c;到年底时我在 X 平台的阅读量超过 1 亿&#xff0c;微博上的阅读量则超过 10 亿&#xff0c;很多人通过我的微博或者 X 了解最新的 AI 资讯、教程和 Pro…

快速排序(三)——hoare法

目录 ​一.前言 二.快速排序 hoare排法​ 三.结语 一.前言 本文给大家带来的是快速排序&#xff0c;快速排序是一种很强大的排序方法&#xff0c;相信大家在学习完后一定会有所收获。 码字不易&#xff0c;希望大家多多支持我呀&#xff01;&#xff08;三连&#xff0b;关…