首页 > 数据库 >MySQL 表的增删改查、表约束

MySQL 表的增删改查、表约束

时间:2024-10-11 21:46:45浏览次数:9  
标签:示例 表中 改查 数据表 MySQL 增删 TABLE id 字段名

本篇博客主要用来记录和分享本人学习MySQL数据库的基本操作指令的笔记和心得,包括数据表操作、数据管理、数据类型的讲解以及表的约束。通过实际的示例和注意事项,帮助大家更好地理解和应用这些知识。

一、数据表操作指令
1.1 创建数据表
使用 CREATE TABLE 指令可以创建一个新的数据表。
基本的语法为:CREATE TABLE [IF NOT EXISTS] 表名 新手编写的话挂号内的内容最好一起写
以下是创建用户信息表的示例:

CREATE TABLE IF NOT EXISTS Users (
UserID INT AUTO_INCREMENT PRIMARY KEY,
UserName VARCHAR(50) NOT NULL,
Email VARCHAR(100) UNIQUE,
CreatedAt TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

1.2 查看表信息
使用 SHOW TABLES来查看当前数据库中的表

SHOW TABLES;

1.3 修改数据表
使用 ALTER TABLE 指令可以修改数据表的结构,例如添加新列或删除列。

ALTER TABLE 旧表名 RENAME [TO|AS] 新表名;
RENAME TABLE 旧表名1 TO 新表名1 [, 旧表名2 TO 新表名2];

示例:将n_good表的名称改为m_good

RENAME TABLE n_good TO m_good;

SHOW TABLES;(用来检查修改是否成功)

1.4 查看表结构
使用 SHOW CREATE TABLE 和 DESCRIBE 指令可以查看创建表的SQL语句和表的详细信息,帮助理解表的结构。

SHOW CREATE TABLE 表名;

查看表中所有字段信息:

DESCRIBE 表名;

查看表中指定字段的信息:

DESCRIBE 数据表名 字段名;

1.5 修改表结构
同样使用 ALTER TABLE 指令,可以修改已存在列的属性。

1.修改字段名

ALTER TABLE 数据表名 CHANGE [COLUMN] 旧字段名 新字段名 字段类型 [字段属性];

示例:m_good表中名为description的字段修改为des。

ALTER TABLE m_good CHANGE description des VARCHAR(255);

2.修改字段类型

ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名称 新类型 [字段属性];

示例:m_good表中des字段的数据类型改为CHAR(255)。

ALTER TABLE m_good MODIFY des CHAR(255);

3.修改字段位置

ALTER TABLE 数据表名 MODIFY [COLUMN] 字段名1 数据类型 [AFTER|FIRST 字段名2];

示例:将m_good表中的最后一个字段des移动到name字段的前面。

ALTER TABLE m_good MODIFY des CHAR(255) AFTER name;

4.新增字段

4.1新增一个字段:

ALTER TABLE 数据表名 ADD [COLUMN] 新字段名 字段类型 [AFTER|FIRST 字段名];

示例:在m_good表中的字段name后面新添加一个字段num。

ALTER TABLE m_good ADD [COLUMN] num INT [AFTER name

4.2新增多个字段:

ALTER TABLE 数据表名 ADD [COLUMN] (新字段1 字段类型, 新字段2 字段类型, ...)

5.删除字段

ALTEL TABLE 数据表名 DROP [COLUMN] 字段名;

1.6 删除数据表
使用 DROP TABLE 指令可以删除表,注意:这将永久删除表及其数据。

删除一个数据表

DROP TABLE [IF EXISTS] 表1;

删除多个数据表

DROP TABLE [IF EXISTS] 表1 [, 表2]...;

(多个数据表之间用逗号隔开,其中IF EXISTS用于在删除一个不存在的数据表时,防止错误)

注意事项
1.表名,列名,列类型都必须填写。
2.在删除表之前,请确保备份重要数据。
3.修改表结构时,确保不影响现有数据的完整性。

二、数据管理的操作指令
2.1 添加数据
使用 INSERT INTO 指令可以向表中添加数据。

2.1.1为所有字段添加数据

基础语法结构:INTO可不写

INSERT INTO 数据表名 {VALUES | VALUE} (值1[, 值2] ...);通常情况下使用VALUES

示例:为goods表添加一条商品记录,编号为1,商品名为notebook,售价498元,描述信息为High cost performance。

INSERT INTO goods VALUES (1, 'notebook', 498, 'High cost performance' );

2.1.2为部分字段添加数据

基础语法结构:INTO可不写

NSERT INTO 数据表名 (字段名1 [, 字段名2]...) {VALUES | VALUE} (值1[, 值2] ...);

注意:多个字段名之间采用逗号分隔,且编写顺序可与表结构不同,只需确保值列表。

示例:将编号为3的Mobile phone 插入到goods数据表中。

INSERT INTO goods (id, name) VALUES (3, 'Mobile phone' )

2.1.3一次添加多行数据

基础语法结构:INTO可不写

NSERT INTO 数据表名 [(字段列表)] {VALUES | VALUE} (值列表1[, 值列表2] ...);

2.2. 查询数据
使用 SELECT 指令可以查询数据,支持多种条件和排序方式。

2.2.1 查询表中全部数据

基础语法结构:

SELECT * FROM 数据表名;

示例:查询goods表中插入的全部数据。

SELECT * FROM goods;

2.2.2 查询表中部分字段

基础语法结构:

SELECT {字段名1, 字段名2, 字段名3, ...} FROM 数据表名;

示例:仅查询goods表中id和name字段。

SELECT id, name FROM goods;

2.2.3 简单条件查询数据

基础语法结构:

SELECT * | {字段名1, 字段名2, 字段名3, ...} FROM 数据表名 WHERE 字段名=值;

示例:查询goods表中id等于1的全部商品的信息

SELECT * FROM WHERE id=1;

2.3. 修改数据
使用 UPDATE 指令可以更新已有数据。

2.3.1

基础语法结构:

UPDATE 数据表名 SET 字段名 1=值1 [, 字段名2=值2, ...]

示例:将goods表中编号为2的商品价格从998元修改为589元。

UPDATE goods SET price = 589 WHERE id=2;

注意:如果不添加WHERE条件,那么会将表中所有对应的字段修改成统一的值。

2.4. 删除数据
使用 DELETE 指令可以删除表中的特定数据。

基础语法结构:

DELETE FROM 数据表名 [WHERE 条件表达式];

示例:删除goods 表中编号等于3的商品数据。

DELETE FROM goods WHERE id=3;

注意:WHERE为可选参数,用于设置是删除条件,满足条件的记录会被删除。

注意事项
1.使用 WHERE 子句时要小心,以避免意外删除或更新所有记录。
2.在进行批量操作时,最好先进行查询确认。

三、数据类型的讲解
3.1 数字类型
3.1.1 整数类型
MySQL支持SQL标准整数类型INTEGER,INT和SMALLINT。同时MySQL 还支持TINYINT、MEDIUMINT 和BIGINT等整数类型。下表显示了每种整数类型所需的存储和范围。

整数类型都可以添加unsigned修饰符,可用于将对应列的数据变成无符号类型,值从0开始。

总结:

整数类型(Integer Types)

INT:范围为-2147483648到2147483647.

TINYINT:范围为-128到127。

SMALLINT:范围为-32768到32767。

BIGINT:范围为-9223372036854775808

3.1.2 浮点类型
MySQL使用4个字节来表示单精度值,使用8个字节来表示双精度值。
总结:

非整数类型(Floating-Point Types)
FLOAT: 单精度浮点数,适用于存储带小数的数字。
DOUBLE: 双精度浮点数,适合存储更大范围的浮点数。

3.1.3 定点类型
DECIMAL:固定精度十进制数。当需要保持精确精度时,例如货币数据,商品价格等等可以使用。

3.2 时间和日期类型
总结:
日期和时间类型(Date and Time Types)
DATE:日期值。
TIME:时间值。
DATETIME:日期和时间值。
TIMESTAMP:日期和时间值,具有特殊的自动更新功能。
YEAR:年份值。

注意:

1.确定数据值范围,选择符合范围且存储空间占有最小类型
2.不确定数据值范围,选择选择范围较大类型,避免值超范围异常
3.year类型赋00- 99值对应年限,[00-69]对 应[2000- 2069],[70-99]对应[1970- 1999].建议四位年值!默认情况下,时间需要主动赋予默认值和修改值!

3.3 字符串类型
补充:

TEXT: 可存储长文本数据,最大数量取决于字符串实际占用的字节数。

ENUM:枚举类型,格式:ENUM('值1', '值2'),数据只能从枚举列表中选一个。

SET:用于保存字符串对象,定义格式和ENUM类似。

BLOB:用于保存量很大的二进制数据。

总结:

CHAR和VARCHAR类型都可以存储比较短的字符串
VARCHAR(n): 可变长度字符串,最大长度为n。
CHAR(n): 固定长度字符串,不足的部分用空格填充。

注意:

1.CHAR(M)类型一般需要预先定义字符串长度。如不指定(M).则表示长度默认是1个字符。
2.当MySQL检索CHAR类型的数据时,CHAR类型的字段会去除尾部的空格。
3.VARCHAR(M)定义时,必须指定长度M,否则报错。
四、表的约束
4.1 默认约束
作用:为表中的列指定默认值,当插入新记录时如果未提供该列的值,数据库将使用默认值。

基本语法格式:
字段名 数据类型 DEFAULT 默认值;
示例:users中created_at 列的默认值为当前时间戳。
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

插入示例:

INSERT INTO users (username) VALUES ('john_doe');

4.2 非空约束
作用:确保列中不能有NULL值,即该列必须始终有一个有效的数据值。

基本语法格式:
字段名 数据类型 NOT NULL;
示例:products中name 和 price 列都必须有值,不能为NULL。
CREATE TABLE products (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL
);

插入示例:

INSERT INTO products (name, price) VALUES ('Laptop', 999.99);

4.3 唯一约束
作用:确保列中的所有值都是唯一的,不允许重复值。唯一约束通过UNIQUE定义。

基本语法格式:

列级约束:
字段名 数据类型 UNIQUE;

表级约束:

UNIQUE (字段名1, 字段名2);
示例:employees表中email 列的值必须是唯一的,不能有重复的电子邮件地址。
CREATE TABLE employees (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL
);

插入示例:

INSERT INTO employees (email) VALUES ('[email protected]');

4.4 主键约束
作用:唯一标识表中的每一行数据,主键列的值必须唯一且不能为NULL。每个表只能有一个主键,可以由一个或多个列组成。

基本语法格式:

列级约束:
字段名 数据类型 PRIMARY KEY;

表级约束:

PRIMARY KEY (字段名1, 字段名2, ...);

示例:order_id 列是主键,用于唯一标识每个订单。
CREATE TABLE orders (
order_id INT AUTO_INCREMENT,
user_id INT,
order_date DATE,
PRIMARY KEY (order_id)
);

插入示例:

INSERT INTO orders (user_id, order_date) VALUES (1, '2024-09-24');

4.5 外键约束
作用:建立和维护两个表之间的关系,确保外键列的值必须在被引用表的主键列中存在。它有助于保证数据的参照完整性。

基本语法格式:
FOREIGN KEY (字段名1) REFERENCES other_table (字段名1);
示例:order_items 表中的 order_id 列引用 orders 表中的 order_id 列,确保每个订单项都对应一个有效的订单。
CREATE TABLE order_items (
item_id INT AUTO_INCREMENT PRIMARY KEY,
ord_id INT,
product_id INT,
FOREIGN KEY (ord_id) REFERENCES orders(order_id)
);

4.6 自动增长
作用:生成唯一标识符的特性,通常用于主键字段。它允许数据库自动为每一条新插入的记录生成一个唯一的整数值,而不需要手动指定。

基本语法格式:

字段名 数据类型 AUTO_INCREMENT;

注意:

在使用AUTO_ INCREMENT时,需要注意以下4点。
(1)一个表中只能有一个自动增长字段,该字段的数据类型是整数类型,且必须定义为键,如UNIQUE KEY、PRIMARY KEY。
(2).若为自动增长字段插人NULL、0、DEFAULT或在插人时省略该字段,则该字段就会使用自动增长值;若插人的是一个具体值则不 会使用直动增长值。
(3)自动增长值从1开始自增,每次加1。若插人的值大于自动增长的值。则下次插人的自动增长值会自动使用最大值加1;若插人的值小于自动增长值,则不会对自动增长值产生影响。
(4)使用DELETE删除记录时,自动增长值不会减小或填补空缺。

五、总结:
这篇不知道算不算文章,应该是属于笔记,写来简单介绍和分享MySQL中有关表,数据部分的基本指令和操作,其中主要包括:

数据表的创建与管理
数据的添加,查询,修改,删除
数据类型的详细分类
表的约束类型。

标签:示例,表中,改查,数据表,MySQL,增删,TABLE,id,字段名
From: https://www.cnblogs.com/most-view-72-0/p/18459414

相关文章

  • MySQL基础知识
    基础篇通用语法及分类DDL:数据定义语言,用来定义数据库对象(数据库、表、字段)DML:数据操作语言,用来对数据库表中的数据进行增删改DQL:数据查询语言,用来查询数据库中表的记录DCL:数据控制语言,用来创建数据库用户、控制数据库的控制权限DDL(数据定义语言)数据定义语言数据......
  • express的使用笔记 2 请求对象与响应对象 、 增删改查demo
    Express不对Node.js已有的特性进行二次抽象,只是在它之上扩展了web应用所需的基本功能。内部使用的依旧是http模块,请求对象继承字http.IncomingMessage,响应对象继承自http.ServerResponse,所以node.js官网中的对应的方法可以通用1.请求对象2.响应对象除了response.send(),resp......
  • mysqldump文件中有SET @@SESSION.SQL_LOG_BIN= 0;解决方法
    mysqldump文件中有SET@@SESSION.SQL_LOG_BIN=0mysqldump-uroot-pmypassword--all-databases>test.sqlmoretest.sql--MySQLdump10.13Distrib5.7.21,forlinux-glibc2.12(x86_64)----Host:localhostDatabase:-------------------------------------......
  • 2024年最详细的mysql主从复制来啦
    mysql主从复制一、主从复制简述MySQL主从复制是一种数据库复制技术,用于在主数据库(Master)和一个或多个从数据库(Slave)之间同步数据。这种技术允许数据从主数据库复制到从数据库,实现数据的冗余存储和读写分离,从而提高数据库的可用性和扩展性。二、主从复制的优势主从复制的......
  • MySQL主从配置及详解
    MySQL主从配置是一种常见的数据库架构模式,旨在提高数据库的可用性、可伸缩性和数据冗余性。以下是对MySQL主从配置的详细解析及案例分析。一、MySQL主从配置详解1.配置原理MySQL主从复制基于主服务器在二进制日志(binarylog)中跟踪所有对数据库的更改(如更新、删除等)。从服务器......
  • php毕业设计下载(全套源码+配套论文)——基于php+mysql的社区交流网站设计与实现
    基于php+mysql的社区交流网站设计与实现(全套源码+配套论文)大家好,今天给大家介绍基于php+mysql的社区交流网站设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于php+mysql的社区交流网站设计与实现(全套源码+配套论文)1、项目简介2、资源详情3、关键词:4、资源......
  • php毕业设计下载(全套源码+配套论文)——基于php+mysql的成绩查询系统设计与实现
    基于php+mysql的成绩查询系统设计与实现(全套源码+配套论文)大家好,今天给大家介绍基于php+mysql的成绩查询系统设计与实现,更多精选毕业设计项目实例见文末哦。文章目录:基于php+mysql的成绩查询系统设计与实现(全套源码+配套论文)1、项目简介2、资源详情3、关键词4、资源......
  • MySQL,多个timestamp字段的建表语句建表失败
    我使用的MySQL版本为5.7.42SELECTVERSION(); 建表语句示例CREATETABLEOrders(order_idBIGINTPRIMARYKEYCOMMENT'订单唯一标识符,主键',a_timeTIMESTAMP,b_timeTIMESTAMP)COMMENT='订单表,用于存储订单信息'; 报错为:Invaliddefaultvaluefor'b_time......
  • Halcon Tuple数组的增删查改
    read_image(Image33,'E:/Halcon数据/资源图片/33.png')dev_get_window(WindowHandle)dev_set_draw('margin')get_image_size(Image33,Width,Height)query_font(WindowHandle,Font)FontWithSize:=Font[0]+'-30'set_font(WindowHandl......
  • mysql清除注释,分两步
    逻辑:通过sql语句能查询数据库中的全部备注信息,然后将备注信息拼接成一个修改sql。1.清除字段注解 SELECTconcat('altertable',table_schema,'.',table_name,'modifycolumn',column_name,'',......