MySQL数据表操作

目录

常用数据类型

数值类型

整型

浮点型

字符串类型

日期类型

数据表的操作

查看表结构

创建表

约束

删除表

修改表

添加列

删除列

修改列的定义

重命名列

重命名表

总结


在学习了数据库操作之后,我们接着来看数据表的相关操作

我们首先来学习 MySQL 中的常用数据类型

常用数据类型

数值类型

数值类型分为 整型 和 浮点型,我们先看整型:

整型

数据类型大小说明对应Java类型
BIT(M)M指定位数,默认为1二进制数,M的范围从1到64,存储的数值范围为 0 - 2^M - 1当 M 取值为1 时,即只能存储 0 和 1,常用 Boolean 对应 BIT(1)
TINYINT1字节Byte
SMALLINT2字节Short
INT4字节Integer
BIGINT8字节存储大整数Long

浮点型

数据类型大小说明对应Java类型
FLOAT(M, D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失Float
DOUBLE(M, D)8字节Double
DECIMAL(M, D)M/D最大值 + 2双精度,M指定长度,D指定小数点位数,精确数值BigDecimal
NUMERIC(M, D)M/D最大值 + 2和 DECIMAL 一样BigDecimal

数值类型可以指定为无符号(unsigned),表示不取负数

1 字节(bytes) = 8 bit

对于整型类型的范围:

有符号范围: -2^(类型字节数*8 - 1) ~ 2^(类型字节数*8 - 1)

无符号范围:0 ~ 2^(类型字节数*8) - 1

字符串类型

数据类型大小说明对应Java类型
VARCHAR(SIZE)0-65 535字节可变长字符串String
CHAR0-255字节定长字符String
TEXT0-65 535字节长文本数据String
MEDIUMTEXT0-16 777 215字节中等长度文本数据String
BLOB0-65 535字节二进制形式的长文本数据byte[]

 其中,VARCHAR 是我们较为常用的类型,SIZE 表示最大字符长度,假设 size 为 1000,表明这一列最多能够存储 1000 个字符,若当前字符串比较短,可能只有2个字符,那么 varchar 会根据存储的内容动态扩容

日期类型

数据类型大小说明对应Java类型
DATETIME8字节范围从1000到9999年,不会进行时区的检索和转换

java.util.Date、

java.sql.Timestamp

TIMESTAMP4字节范围从1970 到 2038 年,自动检索当前时区并进行转换

java.util.Date、

java.sql.Timestamp

 

数据表的操作

需要操作数据库中表时,需要先使用该数据库:

use 数据库名;

查看表结构

语法: 

desc table_name;

示例:

创建表

语法: 

CREATE TABLE table_name (
    column1 datatype constraints COMMENT '注释',
    column2 datatype constraints,
    ...
    PRIMARY KEY (primary_key_column),
    FOREIGN KEY (foreign_key_column) REFERENCES other_table(other_column)
);

column1:列名(字段名)

datatype:字段数据类型

constraints:约束

COMMENT:可选的,可以添加字段说明(注释)

PRIMARY KEY (primary_key_column):指定表的主键一张表中只能存在一个主键

FOREIGN KEY (foreign_key_column) REFERENCES other_table(other_column):指定 foreign_key_column 为外键,并与 other_table 表中的 other_column 相关联 

 

 在 MySQL 中会使用到 单引号(')、双引号(")以及 反引号(`)

单引号('):用于表示字符串文字

双引号("):也用于表示字符串文字

反引号(`):用于引用数据库对象的名称(如 表名、列名),特别是当名称中包含空格或与SQL关键字冲突时

例如,现在需要创建一个 订单表,并将表名命名为 order,但是 order 是关键字,此时,我们就可以使用 反引号(`)

create table `order`(

order_id,

nums int

);

 

接下来,我们通过一个具体的例子来继续学习:

创建一张员工表:

CREATE TABLE employees (
    employee_id INT AUTO_INCREMENT COMMENT '员工编号',
    first_name VARCHAR(50) NOT NULL,
    last_name VARCHAR(50) NOT NULL,
    hire_date DATE,
    salary DECIMAL(10, 2),
    PRIMARY KEY (employee_id)
); 

employee_id:自增的整数,作为主键

first_name、last_name:不允许为空的字符串

hire_date:日期字段

salary:具有两位小数的十进制数

 AUTO_INCREMENT:MySQL 中用于自动生成唯一数字的属性,通常用于主键列,当插入新的记录时,数据库会自动为这个列生成一个递增的数字值,这样,就不需要我们手动指定这个值,它会确保每条记录都有一个唯一的标识符

NOT NULL:MySQL 中的一个列约束,用于确保这一列在插入数据时不能有 NULL 值,也就是在插入或更新记录时,若不提供该列的值,就会报错,这个约束确保了数据的完整性和有效性

那么,什么是 约束 呢?

约束

 MySQL 中的约束,相当于限定条件,用于确保数据库中数据的 完整性 和 有效性,主要的约束有:

主键约束PRIMARY KEY

确保列的值唯一且非空每个表只能有一个主键

CREATE TABLE students (
    student_id INT PRIMARY KEY,
    name VARCHAR(50)
);

 

唯一约束(UNIQUE)

 确保列中的每个值唯一,可以包含 NULL 值

CREATE TABLE users (
    user_id INT,
    email VARCHAR(255) UNIQUE
);

 

非空约束(NOT NULL)

确保列不能为 NULL 值

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL
);

 

外键约束(FOREIGN KEY)

确保列中的值在另一个表的列中存在,维护表之间的关系

CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
);

 

默认值约束(DEFAULT)

 提供列的默认值,若插入时没有提供该列的值,则使用默认值

CREATE TABLE products (
    product_id INT PRIMARY KEY,
    stock INT DEFAULT 0
);

 

检查约束(CHECK)

确保列中的数据符合特定条件

CREATE TABLE employees (
    employee_id INT PRIMARY KEY,
    salary DECIMAL(10, 2),
    CHECK (salary > 0)
);

删除表

DROP TABLE [IF EXISTS] table_name1, table_name2... ;

示例:

删除名为 employees 的表

DROP TABLE employees;

 若 student 表存在,则删除

DROP TABLE IF EXISTS student;

一次性删除多张表

 DROP TABLE table1, table2, table3; 

注意:删除表会同时删除表结构和数据,因此,删除需要谨慎操作

 

修改表

修改表结构使用 ALTER TABLE 语句,可以对表进行多种修改,如添加列、删除列 或是 修改列

添加列

ALTER TABLE table_name ADD COLUMN column_name column_definition;

示例:

ALTER TABLE employees ADD COLUMN date_of_birth DATE;

删除列

ALTER TABLE table_name DROP COLUMN column_name;

示例:

ALTER TABLE employees DROP COLUMN date_of_birth;

修改列的定义

ALTER TABLE table_name MODIFY COLUMN column_name new_column_definition;

示例:

ALTER TABLE employees MODIFY COLUMN last_name VARCHAR(100);

重命名列

ALTER TABLE table_name CHANGE COLUMN old_column_name new_column_name column_definition;

 示例:

ALTER TABLE employees CHANGE COLUMN last_name surname VARCHAR(100);

重命名表

 ALTER TABLE old_table_name RENAME TO new_table_name;

示例:

 ALTER TABLE employees RENAME TO staff; 

注意:修改表结构可能会影响数据的完整性,因此,在进行相关操作之前,需要确保已经备份了相关数据

 

总结

常用数据类型:

INT:整型

DECIMAL(M, D):浮点型

VARCHAR(SIZE):字符串类型

TIMESTAMP:日期类型

 

操作数据表:

查看表结构:

desc 表名;

创建表:

create table 表名(

字段1 类型1,

字段2 类型2,

...

);

 

删除表:

drop table 表名;

 

修改表:

添加列:

alter table 表名 add column 列名 类型;

删除列:

alter table 表名 drop column 列名;

修改列的定义:

alter table 表名 modify column 列名 新数据类型;

重命名列:

alter table 表名 change column 旧列名 新列名 数据类型;

重命名表:

alter table 旧表名 rename to 新表名;

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

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

相关文章

农产品管理与推荐系统Python+Django网页界面+计算机毕设项目+推荐算法

一、介绍 农产品管理与推荐系统。本系统使用Python作为主要开发语言,前端使用HTML,CSS,BootStrap等技术和框架搭建前端界面,后端使用Django框架处理应用请求,使用Ajax等技术实现前后端的数据通信。实现了一个综合性的…

乡村旅游指标-最美乡村数、旅游示范县数、旅行社数、景区数、农家乐数2007-2021年

2007-2021年乡村旅游指标-最美乡村数、旅游示范县数、旅行社数、景区数、农家乐数.zip资源-CSDN文库https://download.csdn.net/download/2401_84585615/89504677 本文分析的数据集涵盖了中国31个省区市的乡村旅游相关指标,包括从业人数、美丽乡村数量、乡村旅游示…

MPLAB V8.92烧写hex

打开hex文件 File\Import … *.hex文件2. 选择烧录器 Programmer\Select programmer -PICKit3/MPLAB ICD2 3.烧录程序 Programmer\program

ES6标准---【三】【学习ES6看这一篇就够了!!!】

目录 ES6以往文章 ES6之前函数默认值参数的处理方法 ES6函数参数的默认值 与结构赋值默认值结合使用 参数默认值的位置: 函数的length属性 作用域 参数的默认值是一个函数 正确理解函数默认值的例子 应用 指定某一个函数参数不得省略,如果省略…

大模型LLM:合成训练样本的数据分布问题

近几天在研究大模型LLM数数问题时,使用合成数据集来训练LLM“统计字符串(100个单词以内)中字母的个数”的能力,基于Word进行分词。原始的合成代码在生成随机字符串时,采用如下代码: # self.words为常见英文…

Python安装llama库出错“metadata-generation-failed”

Python安装llama库出错“metadata-generation-failed” 1. 安装llama库时出错2. 定位问题1. 去官网下载llama包 2.修改配置文件2.1 解压文件2.2 修改配置文件 3. 本地安装文件 1. 安装llama库时出错 2. 定位问题 根据查到的资料,发现时llama包中的execfile函数已经…

在职研生活学习--20240907

开学第一天 9月7日,中南大学商学院迎来了一支充满活力的队伍——2024级MBA新生集体整装待发,我们满怀期待地登上了前往长沙望城柏乐园的大巴,准备开启一场为期两天一夜的素质拓展与团队建设之旅。 迎新幼儿园PPT 出发 抵达柏乐园,…

Kubernetes------Service

目录 一、属性说明 二、定义和基本配置 1、定义 2、创建Service 2.1、typeClusterIP 2.2、typeNodePort 2.3、固定IP访问 三、Service、EndPoint、Pod之间的关系 四、服务发现 1、基于Service中IP访问外部服务 2、基于Service中域名访问外部服务 五、Ingress的安装和使…

Caffenie配合Redis做两级缓存

一、什么是两级缓存 在项目中。一级缓存用Caffeine,二级缓存用Redis,查询数据时首先查本地的Caffeine缓存,没有命中再通过网络去访问Redis缓存,还是没有命中再查数据库。具体流程如下 二、简单的二级缓存实现-v1 目录结构 2…

合宙低功耗4G模组AIR780EX ——开发板使用说明

EVB-AIR780EX 开发板是合宙通信推出的基于 Air780EX 模组所开发的,包含电源,SIM 卡,USB,天线,等必要功能的最小硬件系统。 以方便用户在设计前期对Air780E模块进行 性能评估,功能调试,软件开发…

请教一下,安恒信息为什么2024年上半年巨亏2.76亿元?

【科技明说 | 科技热点关注】 根据公开的财务报告来看,安恒信息2024年上半年实现营业总收入6.98亿元,同比增长0.29%。尽管公司在数据安全、商用密码和信创安全等核心业务领域实现了较快增长,但整体上仍然面临亏损。 目前来看&…

blender云渲染来了,blender云渲染教程!

朋友们,成都渲染101农场blender云渲染上线了,继3DMAX/C4D/maya/UE5云渲染上线后,又上线了blender云渲染,今天,成都渲染101渲染农场用四步教会您blender云渲染! 第一步,云渲码6666注册个渲染101…

【STM32 HAL库】IIC通信与CubeMX配置

【STM32 HAL库】IIC通信与CubeMX配置 前言理论IIC总线时序图IIC写数据IIC读数据 应用CubeMX配置应用示例AHT20初始化初始化函数读取说明读取函数 前言 本文为笔者学习 IIC 通信的总结,基于keysking的视频内容,如有错误,欢迎指正 理论 IIC总…

大模型备案,全程配合包过拿到备案号

本文详解备案流程,旨在帮助企业和开发者顺利完成备案,确保AI技术健康有序发展。 一、政策要求做大模型备案 大模型备案是中国国家互联网信息办公室为加强生成式人工智能服务的管理,确保用户权益得到充分保护,以及保障国家安全和…

web基础之SSRF

1、内网访问 题目提示:访问位于127.0.0.1的flag.php;直接利用ssrf漏洞访问?url127.0.0.1/flag.php 2、伪协议读取文件 (1)题目提示:尝试去读取一下Web目录下的flag.php吧 (2)什么是伪协议&a…

【网络】网络通信的传输方式

目录 1.网络通信中的两种基本通信模式 1.1.怎么理解连接 1.2.面向有连接类型 1.3.面向无连接类型 2.实现这两种通信模式的具体交换技术 2.1.电路交换 2.2.分组交换 3.根据接收端数量分类 单播(Unicast) 广播(Broadcast) …

使用C++编写一个语音播报时钟(Qt)

要求:当系统时间达到输入的时间时,语音播报对话框中的内容。定时可以取消。qt界面如上图所示。组件如下: countdownEdit作为书写目标时间的line_edit start_btn作为开始和停止的按钮 stop_btn作为取消的按钮 systimelab显示系统时间的lab tex…

火语言RPA流程组件介绍--鼠标拖拽元素

🚩【组件功能】:在开始位置上按下鼠标,拖动到结束坐标或指定元素上放下鼠标,实现目标元素的拖拽 配置预览 配置说明 丨拖动元素 支持T或# 默认FLOW输入项 开始拖动的元素,并从当前元素开始按下鼠标 丨拖动到 目标元素/目标位…

解锁Web3.0——Scaffold-eth打造以太坊DApp的终极指南

🚀本系列文章为个人学习笔记,目的是巩固知识并记录我的学习过程及理解。文笔和排版可能拙劣,望见谅。 目录 前言 一、快速部署 1、前期准备: 2、安装项目: ​ 二、配置部署运行环境 1、初始化本地链:…

html css网页制作成品

前言 在HTML和CSS中创建一个网页是一个简单的过程,但是要创建一个成品级的网页,你需要考虑更多的因素,例如: 响应式设计:确保你的网页在不同的设备和屏幕尺寸上都能良好显示。 访问性:确保你的网页对于大…