当前位置: 首页 > 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,是根据类全限定名称来从特定的位置基于类加载器来查找的,分别如下:…...

ES6从入门到精通:前言

ES6简介 ES6(ECMAScript 2015)是JavaScript语言的重大更新,引入了许多新特性,包括语法糖、新数据类型、模块化支持等,显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

云启出海,智联未来|阿里云网络「企业出海」系列客户沙龙上海站圆满落地

借阿里云中企出海大会的东风,以**「云启出海,智联未来|打造安全可靠的出海云网络引擎」为主题的阿里云企业出海客户沙龙云网络&安全专场于5.28日下午在上海顺利举办,现场吸引了来自携程、小红书、米哈游、哔哩哔哩、波克城市、…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别

OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...

Vue ③-生命周期 || 脚手架

生命周期 思考:什么时候可以发送初始化渲染请求?(越早越好) 什么时候可以开始操作dom?(至少dom得渲染出来) Vue生命周期: 一个Vue实例从 创建 到 销毁 的整个过程。 生命周期四个…...

Oracle11g安装包

Oracle 11g安装包 适用于windows系统,64位 下载路径 oracle 11g 安装包...

Python 训练营打卡 Day 47

注意力热力图可视化 在day 46代码的基础上,对比不同卷积层热力图可视化的结果 import torch import torch.nn as nn import torch.optim as optim from torchvision import datasets, transforms from torch.utils.data import DataLoader import matplotlib.pypl…...

Elastic 获得 AWS 教育 ISV 合作伙伴资质,进一步增强教育解决方案产品组合

作者:来自 Elastic Udayasimha Theepireddy (Uday), Brian Bergholm, Marianna Jonsdottir 通过搜索 AI 和云创新推动教育领域的数字化转型。 我们非常高兴地宣布,Elastic 已获得 AWS 教育 ISV 合作伙伴资质。这一重要认证表明,Elastic 作为 …...

向量几何的二元性:叉乘模长与内积投影的深层联系

在数学与物理的空间世界中,向量运算构成了理解几何结构的基石。叉乘(外积)与点积(内积)作为向量代数的两大支柱,表面上呈现出截然不同的几何意义与代数形式,却在深层次上揭示了向量间相互作用的…...

Tauri2学习笔记

教程地址:https://www.bilibili.com/video/BV1Ca411N7mF?spm_id_from333.788.player.switch&vd_source707ec8983cc32e6e065d5496a7f79ee6 官方指引:https://tauri.app/zh-cn/start/ 目前Tauri2的教程视频不多,我按照Tauri1的教程来学习&…...