三尺非寒 发表于 2024-10-17 07:07:20

MySQL 表的增删改查、表约束

       本篇博客主要用来记载和分享本人学习MySQL数据库的根本操作指令的条记和心得,包罗数据表操作、数据管理、数据范例的讲授以及表的约束。通过现实的示例和注意事项,资助大家更好地理解和应用这些知识。
目录
一、数据表操作指令
1.1 创建数据表
1.2 检察表信息
1.3 修改数据表
1.4 检察表结构
1.5 修改表结构
1.6 删除数据表
二、数据管理的操作指令
2.1 添加数据
2.2. 查询数据
2.3. 修改数据
2.4. 删除数据
三、数据范例的讲授
3.1 数字范例
3.1.1 整数范例
3.1.2 浮点范例
3.1.3 定点范例
3.2 时间和日期范例
3.3 字符串范例

四、表的约束
4.1 默认约束 
4.2 非空约束
4.3 唯一约束
4.4 主键约束
4.5 外键约束
4.6 自动增长
五、总结:

一、数据表操作指令

1.1 创建数据表

使用 CREATE TABLE 指令可以创建一个新的数据表。
根本的语法为:CREATE TABLE 表名   新手编写的话挂号内的内容最好一起写
以下是创建用户信息表的示例:
   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 新表名;
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  旧字段名 新字段名 字段范例 [字段属性];
示例:m_good表中名为description的字段修改为des。
ALTER TABLE m_good CHANGE description des VARCHAR(255);
    2.修改字段范例
ALTER TABLE 数据表名 MODIFY 字段名称 新范例 [字段属性];
示例:m_good表中des字段的数据范例改为CHAR(255)。
ALTER TABLE m_good MODIFY des CHAR(255);
    3.修改字段位置
ALTER TABLE 数据表名 MODIFY 字段名1 数据范例 ;
示例:将m_good表中的末了一个字段des移动到name字段的前面。
ALTER TABLE m_good MODIFY des CHAR(255) AFTER name;
    4.新增字段
4.1新增一个字段:
ALTER TABLE 数据表名 ADD 新字段名 字段范例 ;
示例:在m_good表中的字段name背面新添加一个字段num。
ALTER TABLE m_good ADD num INT [AFTER name
4.2新增多个字段:
ALTER TABLE 数据表名 ADD (新字段1 字段范例, 新字段2 字段范例, ...)
    5.删除字段
ALTEL TABLE 数据表名 DROP 字段名;
1.6 删除数据表

使用 DROP TABLE 指令可以删除表,注意:这将永世删除表及其数据。
   删除一个数据表
DROP TABLE 表1;
删除多个数据表
DROP TABLE 表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 数据表名 ;
示例:删除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等整数范例。下表显示了每种整数范例所需的存储和范围。
范例存储(字节)最小值有符号最小值无符号最大值有符号最大值无符号TINYINT1-1280127255SMALLINT2-3276803276765535MEDIUMINT3-83886080838860816777215INT4-2147483648021474836484294967295BIGINT8-2^630(2^63)-1(2^64)-1                                                   表格中的内容来自网络(下同)
整数范例都可以添加unsigned修饰符,可用于将对应列的数据变成无符号范例,值从0开始。
总结:
整数范例(Integer Types)
INT:范围为-2147483648到2147483647.
TINYINT:范围为-128到127。
SMALLINT:范围为-32768到32767。
BIGINT:范围为-9223372036854775808到9223372036854775807.
3.1.2 浮点范例

MySQL使用4个字节来表示单精度值,使用8个字节来表示双精度值。
范例存储(字节)M (小数+整数位数)D (小位数)FLOAT(M.D)4M最大为24D最大为8DOUBLE(M,D)8M最大为53D最大为30 总结:
非整数范例(Floating-Point Types)
FLOAT: 单精度浮点数,适用于存储带小数的数字。
DOUBLE: 双精度浮点数,得当存储更大范围的浮点数。
3.1.3 定点范例

范例存储(字节)M (小数+整数位数) D (小位数)BECIMAL(M,D)BECIMAL(M,D)动态计算M最大为65D最大为30 DECIMAL:固定精度十进制数。当需要保持精确精度时,比方货币数据,商品价格等等可以使用。
3.2 时间和日期范例

范例名称字节日期格式小值最大值YEAR年1YYYY或YY19012155TIME时间3HH:MM:SS-838:59:59838:59:59DATE日期3YYYY-MM-DD1000-01-019999-12-03DATETIME日期时间8YYYY-MM-DD HH:MM:SS1000-01-01 00:00:009999-12-31 23:59:59TIMESTAMP日期时间4YYYY-MM-DD HH:MM:SS1970-01-01 00:00:002038-01-19 03:14:07 总结:
日期和时间范例(Date and Time Types)
DATE:日期值。
TIME:时间值。
DATETIME:日期和时间值。
TIMESTAMP:日期和时间值,具有特别的自动更新功能。
YEAR:年份值。
注意:
1.确定数据值范围,选择符合范围且存储空间占据最小范例
2.不确定数据值范围,选择选择范围较大范例,避免值超范围非常
3.year范例赋00- 99值对应年限,对 应,对应.发起四位年值!默认情况下,时间需要自动赋予默认值和修改值!
3.3 字符串范例

字符串(文本)特点长度长度范围(字符)存储空间CHAR(M)固定长度M0<= M<= 255M*4个字节(utf8mb4)VARCHAR(M)可变长度MMySqI-行数据最多65535字节(M*4+1)个字节(utf8mb4) 补充:
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 ('john@example.com');
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中有关表,数据部分的根本指令和操作,其中主要包罗:


[*]数据表的创建与管理
[*]数据的添加,查询,修改,删除
[*]数据范例的具体分类
[*]表的约束范例。


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: MySQL 表的增删改查、表约束