0


MySQL数据表操作

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

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

常用数据类型

数值类型

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

整型

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

浮点型

数据类型大小说明对应Java类型FLOAT(M, D)4字节单精度,M指定长度,D指定小数位数。会发生精度丢失FloatDOUBLE(M, D)8字节DoubleDECIMAL(M, D)M/D最大值 + 2双精度,M指定长度,D指定小数点位数,精确数值BigDecimalNUMERIC(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字节可变长字符串StringCHAR0-255字节定长字符StringTEXT0-65 535字节长文本数据StringMEDIUMTEXT0-16 777 215字节中等长度文本数据StringBLOB0-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 新表名;

标签: mysql 数据库

本文转载自: https://blog.csdn.net/2301_76161469/article/details/142026588
版权归原作者 楠枬 所有, 如有侵权,请联系我们删除。

“MySQL数据表操作”的评论:

还没有评论