当前位置: 首页 > news >正文

数据库之数据表基本操作

目录

一、创建数据表

1.创建表的语法形式

2.使用SQL语句设置约束条件

1.设置主键约束

2.设置自增约束

3.设置非空约束

4.设置唯一性约束

5.设置无符号约束

6.设置默认约束

7.设置外键约束

8.设置表的存储引擎

二、查看表结构

1.查看表基本结构

2.查看建表语句

三、修改表

1.修改表名

2.修改字段数据类型

3.修改字段名

4.添加字段

5.删除字段

6.修改字段顺序

7.修改存储引擎

四、删除表

1.删除没有被关联的表

2.删除被其他表关联的主表


一、创建数据表

1.创建表的语法形式

创建数据表,实际上是规定列属性和实现数据完整性约束的过程,基本语法形式如下:

CREATE TABLE table_name(

Col_name1 data_type [Constraints],

Col_name2 data_type [Constraints],

......

Col_namen data_type [Constraints],

);


上述语句中,CREATE为创建数据表的关键字,table_name表示数据表的名称,表的结构在括号中定义,col_name表示字段名,data_type表示数据类型,Constraints表示约束条件,各个字段之间使用(,)进行分隔,语句的最后以分号(;)结束。

注:一行叫做一个记录,一列叫做一个字段。

数据表命名应遵循以下原则:

长度最好不要超过30个字符;

多个单词之间使用下划线“_”分隔,不允许有空格;

不允许为MySQL关键字;

不允许与同一数据库中的其他数据表同名。

创建数据库table_name:

CREATE DATABASE table_name;

选择数据库table_name:

USE table_name;

查看当前数据库中所有的数据表:

SHOW TABLES;


2.使用SQL语句设置约束条件

在实际应用中,一张完整的数据表会包含各种约束条件。设置约束条件后,系统会在数据插入数据库之前根据约束条件对其合法性进行检查,保证数据的准确性和一致性。

1.设置主键约束

主键,也称主码,用于标识表中唯一的一条记录。一张表中只能有一个主键,且主键值不能为空。

主键约束是最常用的一种约束,设置主键约束的关键字为PRIMARY KEY,使用SQL语句可以在定义字段时设置主键约束,也可以在定义好表中所有字段后再设置主键约束。

①定义字段时设置主键约束。

语法形式为:

Col_name data_type PRIMARY KEY

②定义所有字段后设置主键约束。

语法形式为:

PRIMARY KEY(col_name)

2.设置自增约束

设置自增约束的关键字为AUTO_INCREMENT。

语法形式如下:

Col_name data_type AUTO_INCREMENT

设置自增约束应注意以下几点:

一张表中只能设置一个字段为自增约束,并且该字段必须为主键。

默认的初始值为1,每增加一条记录,字段值自动增加1。

字段类型必须为整数类型。

3.设置非空约束

设置非空约束的关键字为NOT NULL,作用是规定字段的值不能为空,用户在向数据表中插入数据时,如果设置非空约束的字段没有指定值,系统就会报错。

语法形式如下:

Col_name data_type NOT NULL

4.设置唯一性约束

当数据表中某个字段的值不允许重复时,可以使用唯一性约束。当用户在设置了唯一性约束的字段中插入的数据与数据表中已存在的数据相同时,系统会报错。

设置唯一性约束的关键字为UNIQUE,同主键约束一样,唯一性约束也有两种设置方法,一种是在定义字段时设置,还有一种定义好表中所有字段后再设置。

①定义字段时设置唯一性约束。

语法形式为:

Col_name data_type UNIQUE

②定义所有字段后设置唯一性约束

语法形式为:

UNIQUE KEY(col_name)

5.设置无符号约束

为字段设置无符号约束的关键字为UNSIGNED,其作用是规定此列所存储的数据不为负数。

语法形式如下:

Col_name data_type UNSIGNED

6.设置默认约束

当向数据表中插入一条记录时,如果没有为某个字段赋值,那么系统就会将其值设置为NULL,如果为字段设置默认约束,则系统会自动将默认值插入到此字段中。

设置默认约束的关键字为DEFAULT。

语法形式如下:

Col_name data_type DEFAYLT value

7.设置外键约束

在关系数据库中,数据表之间是由关系来联系彼此的,一张数据表中的某个字段可能是另外一张数据表的主键,为这个字段设置外键约束,就可以将这两张表关联在一起。设置外键约束的主要作用是保证数据的完整性。

外键可以不是所属数据表的主键,但会对应着另外一张数据表的主键。

语法形式如下:

CONSTRAINT key_name FOREIGN KEY(child_col_name)

REFERENCES parent_table_name(parent_col_name)


CONSTRAINT,FOREIGN KEY和REFERENCES为设置外键约束的关键字,key_name表示外键名,child_col_name表示从表中需要设置外键约束的字段名,parent_table_name表示主表名,parent_col_name表示主表中主键的字段名。

设置外键约束时应注意以下几点:

主表和从表必须使用InnoDB存储引擎。

设置外键约束的字段和关联的主键必须具有相同的数据类型。整数类型的大小和符号必须相同;字符串类型的长度可以不相同,但对于非二进制字符串,字符集和排序规则必须相同。

8.设置表的存储引擎

在创建表时,如果不使用默认存储引擎,就需要单独设置存储引擎。

CREATE TABLE table_name(

Col_name1 data_type [Constraints],

Col_name2 data_type [Constraints],

......

Col_namen data_type [Constraints],

)ENGINE=存储引擎;

二、查看表结构

1.查看表基本结构

查看表结构的关键字为DESCRIBE。

语法形式如下:

DESCRIBE table_name;

查询结构中的参数及其意义:

Field:表示字段名称。

Type:表述数据类型。

Null:表示是否可以存储空值。

Key:表示是否创建索引,PRI表示主键索引,UNI表示唯一索引。

Default:表示默认值。

Extra:表示与字段有关的附加信息。

2.查看建表语句

使用SHOW CREATE TABLE语句可以查看表的建表语句。

语法形式如下:

SHOW CREATE TABLE goods \G

三、修改表

1.修改表名

修改数据表名的关键字为RENAME。

语法形式如下:

ALTER TABLE old_table_name RENAME new_table_name;

2.修改字段数据类型

修改字段数据类型的关键字为MODIFY。

语法形式如下:

ALTER TABLE table_name MODIFY col_name new_data_type;

3.修改字段名

修改数据表字段名称的关键字为CHANGE。

语法形式如下:

ALTER TABLE table_name CHANGE old_col_name new_col_name data_type;

4.添加字段

①在表的最后一列添加字段

添加字段的关键字为ADD。

语法形式如下:

ALTER TABLE table_name ADD col_name data_type;

②在表的第一列添加字段。

语法形式如下:

ALTER TABLE table_name ADD col_name data_type FIRST;

③在表的指定列之后添加字段。

语法形式如下:

ALTER TABLE table_name ADD col_name1 data_type AFTER col_name2;

5.删除字段

删除数据表字段的关键字为DROP。

语法形式如下:

ALTER TABLE table_name DROP col_name;

6.修改字段顺序

修改字段顺序的关键字为MODIFY。

语法形式如下:

ALTER TABLE table_name MODIFY col_name data_type FIRST|AFTER col_name2;


其中col_name表示要修改的字段,data_type表示字段数据类型,FIRST和AFTER col_name2分别表示修改为表的第一个字段和修改为col_name2字段之后。

7.修改存储引擎

用户可以在创建表时设置存储引擎,也可以在表创建完成之后修改表的存储引擎。

语法形式如下:

ALTER TABLE table_name ENGINE=e_name;

在修改存储引擎之前,查看当前表的存储引擎。

语法形式如下:

SHOW CREATE TABLE table_name \G

四、删除表

1.删除没有被关联的表

使用DROP关键字可以一次性删除一个或多个没有被其他表关联的表。

语法形式如下:

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

注:如果系统删除的数据表不存在,系统会提示出错误信息并中断执行,加上“IF EXISTS”参数后,系统会在执行删除命令之前判断表是否存在,如果表不存在,命令仍可执行,但系统会提示警告。

2.删除被其他表关联的主表

如果数据表之间存在外键关联,那么直接删除主表,系统会提示错误信息,这种情况下,可以先删除与它关联的从表,再删除主表。但有时需要保留从表中的数据,此时需要解除主表和从表之间的关联,即删除从表中的外键约束。

删除外键的语法形式如下:

ALTER TABLE table_name DROP FOREIGN KEY key_name;

相关文章:

数据库之数据表基本操作

目录 一、创建数据表 1.创建表的语法形式 2.使用SQL语句设置约束条件 1.设置主键约束 2.设置自增约束 3.设置非空约束 4.设置唯一性约束 5.设置无符号约束 6.设置默认约束 7.设置外键约束 8.设置表的存储引擎 二、查看表结构 1.查看表基本结构 2.查看建表语句 三…...

利用OSMnx求路网最短路径并可视化(二)

书接上回,为了增加多路径的可视化效果和坐标匹配最近点来实现最短路可视化,我们使用图形化工具matplotlib结合OSMnx的绘图功能来展示整个路网图,并特别高亮显示计算出的最短路径。 多起终点最短路路径并计算距离和时间 完整代码#运行环境 P…...

双向门控循环神经网络(BiGRU)及其Python和MATLAB实现

BiGRU是一种常用的深度学习模型,用于处理序列数据的建模和预测。它是基于GRU(Gated Recurrent Unit)模型的改进版本,通过引入更多的隐藏层和增加网络的宽度,能够更好地捕捉复杂的序列数据中的模式。 背景:…...

【BUG】已解决:ERROR: Failed building wheel for jupyter-nbextensions-configurator

ERROR: Failed building wheel for jupyter-nbextensions-configurator 目录 ERROR: Failed building wheel for jupyter-nbextensions-configurator 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我…...

Unity UGUI 之 自动布局组件

本文仅作学习笔记与交流,不作任何商业用途 本文包括但不限于unity官方手册,唐老狮,麦扣教程知识,引用会标记,如有不足还请斧正 本文在发布时间选用unity 2022.3.8稳定版本,请注意分别 1.什么是自动布局组件…...

网络基础之(11)优秀学习资料

网络基础之(11)优秀学习资料 Author:Once Day Date: 2024年7月27日 漫漫长路,有人对你笑过嘛… 全系列文档可参考专栏:通信网络技术_Once-Day的博客-CSDN博客。 参考文档: 网络工程初学者的学习方法及成长之路(红…...

QT自定义无边框窗口(可移动控制和窗口大小调整)

QT是一个功能强大的跨平台开发框架,它提供了丰富的界面设计工具和组件。在界面开发中,QT窗口自带的标题栏无法满足我们的需求。我们就需要自定义无边框窗口,包括自定义标题栏和窗口大小调整功能。本文将介绍如何在QT中实现这些功能。 一、简…...

Typora 【最新1.8.6】版本安装下载教程 (轻量级 Markdown 编辑器),图文步骤详解,免费领取(软件可激活使用)

文章目录 软件介绍软件下载安装步骤激活步骤 软件介绍 Typora 是一款专为 Markdown 爱好者设计的文本编辑器,它结合了简洁的界面设计与强大的 Markdown 渲染能力,为用户提供了一个流畅、高效的写作环境。以下是对 Typora 更详细的介绍: 核心特…...

RxJava 面试题及其答案

以下是一个全面的 RxJava 面试题及其答案,涵盖了 RxJava 的各个方面,包括基本概念、操作符、线程管理、错误处理、背压处理等: 基本概念 1. RxJava 的基本概念和原理是什么? 答案: RxJava 是一个用于响应式编程的库…...

【Rust】所有权OwnerShip

什么是所有权 rust使用由编译器检查的一些规则构成的所有权系统来管理内存。且这不会影响程序的运行效率。 所有权规则 rust中每一个每一个值都有一个owner。在同一时刻,只能有一个owner。当这个owner超过范围,则该值会被丢弃。 String类型 为什么需…...

qt总结--翻金币案例

完成了一个小项目的在qt5.15.2环境下的运行,并使用NSIS editNSIS打包完成.有待改进之处:增加计时功能,随机且能通关功能,过关后选择下一关功能.打包后仅仅有安装包有图标 安装后应用图标并未改变 在qt .pro中有待改进对qt的基本操作和帮助文档有了基本的认识.对C制作小游戏有了…...

最清楚的 BIO、NIO、AIO 详解!

一、什么是 I/O? I/O 描述了计算机系统与外部设备(磁盘)之间通信的过程。 为了保证操作系统的稳定性和安全性,一个进程的地址空间划分为 用户空间(User space) 和 内核空间(Kernel space &…...

八股文学习第二天| HTTP请求报文和响应报文是怎样的,有哪些常见的字段?,HTTP有哪些请求方式?,GET请求和POST请求的区别?

1、HTTP请求报文和响应报文是怎样的,有哪些常见的字段? 答: HTTP报文分为请求报文和响应报文。 (1) 请求报文 请求报文主要由请求行、请求头、空行、请求体构成。 请求行包括如下字段: 方法&#xff08…...

C++初阶学习第四弹——类与对象(中)

目录 一. 类的默认成员函数 二.六种默认成员函数 1、构造函数 1.1 构造函数的作用 1.2 特性 1.3 默认构造函数 2、析构函数 2.1 析构函数的作用 2.2 析构函数的用法 3、拷贝构造函数 3.1 拷贝构造函数的作用 3.2 特征 3.3 默认拷贝构造函数 三.总结 类与对象&…...

【计算机网络】期末实验答辩

注意事项: 1)每位同学要在下面做过的实验列表中选取三个实验进行答辩准备,并将自己的姓名,学号以及三个实验序号填入共享文档"1(2)班答辩名单"中。 2)在答辩当日每位同学由老师在表…...

一步步教你学会如何安装VMare虚拟机(流程参考图)

前言:一步步教你安装VMare虚拟机(此版本为17.5。2版本)。 1、安装 2、确认协议 3、选择位置存放 4、选择第二个 5、都不选。 6、都选提供便捷操作 7、点击许可证,将密钥输入(可以在网络寻找自己版本的密钥&#xff…...

WebGoC题解(14) 151.(2017dloi小乙)第5题 巧克力甜度(sweet)

题目描述 妈妈买了n颗甜度不同的巧克力,规定小C只能吃最大甜度之和是S。 例如:有5颗巧克力,s6,每个的甜度分别为: 4 2 3 1 1,那么小C最多可以吃3颗。 请问你能帮小C计算一下最多能吃多少颗巧克力吗? 输入格…...

深入探索PHP框架:Symfony框架全面解析

1. 引言 在现代Web开发领域,PHP作为一种广泛使用的服务器端脚本语言,其框架的选择对于项目的成功至关重要。PHP框架不仅能够提高开发效率,还能确保代码的质量和可维护性。本文将深入探讨Symfony框架,这是一个功能强大且灵活的PHP…...

内卷的利与弊

“内卷”原指一类文化模式达到了某种最终的形态以后,既没有办法稳定下来,也没有办法转变为新的形态,而只能不断地在内部变得更加复杂的现象。经网络流传,很多大学生用其来指代非理性的内部竞争或“被自愿”竞争。现指同行间竞相付…...

用Java手写jvm之实现查找class

写在前面 完成类加载器加载class的三阶段,加载,解析,初始化中的加载😀😀😀 源码 。 jvm想要运行class,是根据类全限定名称来从特定的位置基于类加载器来查找的,分别如下:…...

web vue 项目 Docker化部署

Web 项目 Docker 化部署详细教程 目录 Web 项目 Docker 化部署概述Dockerfile 详解 构建阶段生产阶段 构建和运行 Docker 镜像 1. Web 项目 Docker 化部署概述 Docker 化部署的主要步骤分为以下几个阶段: 构建阶段(Build Stage)&#xff1a…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...

STM32标准库-DMA直接存储器存取

文章目录 一、DMA1.1简介1.2存储器映像1.3DMA框图1.4DMA基本结构1.5DMA请求1.6数据宽度与对齐1.7数据转运DMA1.8ADC扫描模式DMA 二、数据转运DMA2.1接线图2.2代码2.3相关API 一、DMA 1.1简介 DMA(Direct Memory Access)直接存储器存取 DMA可以提供外设…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵,其中每行,每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid,其中有多少个 3 3 的 “幻方” 子矩阵&am…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机,因为在使用过程中发现 Airsim 对外部监控相机的描述模糊,而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置,最后在源码示例中找到了,所以感…...

【网络安全】开源系统getshell漏洞挖掘

审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...

elementUI点击浏览table所选行数据查看文档

项目场景&#xff1a; table按照要求特定的数据变成按钮可以点击 解决方案&#xff1a; <el-table-columnprop"mlname"label"名称"align"center"width"180"><template slot-scope"scope"><el-buttonv-if&qu…...

AI语音助手的Python实现

引言 语音助手(如小爱同学、Siri)通过语音识别、自然语言处理(NLP)和语音合成技术,为用户提供直观、高效的交互体验。随着人工智能的普及,Python开发者可以利用开源库和AI模型,快速构建自定义语音助手。本文由浅入深,详细介绍如何使用Python开发AI语音助手,涵盖基础功…...

Springboot 高校报修与互助平台小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;高校报修与互助平台小程序被用户普遍使用&#xff0c;为…...