MySQL学习笔记(二)表的操作

创建表

语法格式:

CREATE TABLE <表名> (
<列名1> <类型1>
[,…]
<列名n> <类型n>
)
[表选项][分区选项];

CREATE TABLE:用于创建给定名称的表,必须拥有表CREATE的权限。
<表名>:指定要创建表的名称,在 CREATE TABLE 之后给出,必须符合标识符命名规则。表名称被指定为 db_name.tbl_name,以便在特定的数据库中创建表。无论是否有当前数据库,都可以通过这种方式创建。在当前数据库中创建表时,可以省略 db-name。如果使用加引号的识别名,则应对数据库和表名称分别加引号。例如,‘mydb’.‘mytbl’ 是合法的,但 ‘mydb.mytbl’ 不合法。
<表定义选项>:表创建定义,由列名(col_name)、列的定义(column_definition)以及可能的空值说明、完整性约束或表索引组成。
默认的情况是,表被创建到当前的数据库中。若表已存在、没有当前数据库或者数据库不存在,则会出现错误。

表名要求:表的名称不区分大小写,不能使用SQL语言中的关键字。表中如果创建多个列,要用逗号隔开。

数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。

数据表属于数据库,在创建数据表之前,应使用语句“USE<数据库>”指定操作在哪个数据库中进行,如果没有选择数据库,就会抛出 No database selected 的错误。
例:创建test_db数据库,使用该数据库,创建tb_stub表。

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);

运行结果:
在这里插入图片描述

查看表结构

语法格式:

DESCRIBE <表名>;

或者

DESC <表名>;

例:查看test_stu表的字段(结构)

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;

运行结果:
在这里插入图片描述
各个字段的含义如下:
Null:表示该列是否可以存储 NULL 值。
Key:表示该列是否已编制索引。
PRI: 表示该列是表主键的一部分
UNI :表示该列是 UNIQUE 索引的一部分
MUL :表示在列中某个给定值允许出现多次。
Default:表示该列是否有默认值,如果有,值是多少。
Extra:表示可以获取的与给定列有关的附加信息,如 AUTO_INCREMENT 等。

修改表结构

常用的修改表的操作有修改表名、修改字段数据类型或字段名、增加和删除字段、修改字段的排列位置、更改表的存储引擎、删除表的外键约束等

ALTER TABLE <表名>{
ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名> }

添加字段

语法格式:

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];

<新字段名>:需要添加的字段的名称;
FIRST :可选参数,其作用是将新添加的字段设置为表的第一个字段;
AFTER <已存在的字段名> :可选参数,其作用是将新添加的字段添加到指定的已存在的字段名的后面

例:在原先表中添加一个字段ID,放在第一个字段位置

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;
#添加ID字段,并放在第一个字段
ALTER TABLE tb_stu
ADD COLUMN ID INT FIRST;
#查看表结构
DESC tb_stu;

运行结果:
在这里插入图片描述

修改字段数据类型

语法格式:

ALTER TABLE <表名>
MODIFY <字段名> <数据类型>

<表名>:指要修改数据类型的字段所在表的名称
<字段名>:指需要修改的字段,数据类型指修改后字段的新数据类型。

例:将 sName 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;
#添加ID字段,并放在第一个字段
ALTER TABLE tb_stu
ADD COLUMN ID INT FIRST;
#查看表结构
DESC tb_stu;
#将 sName 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)
ALTER TABLE tb_stu
MODIFY sName VARCHAR(30);
#查看表结构
DESC tb_stu;

运行结果:
在这里插入图片描述

删除字段

语法格式:

ALTER TABLE <表名>
DROP <字段名>;

<字段名>:指需要从表中删除的字段的名称

例:删除原先表的ID字段

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;
#添加ID字段,并放在第一个字段
ALTER TABLE tb_stu
ADD COLUMN ID INT FIRST;
#查看表结构
DESC tb_stu;
#将 sName 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)
ALTER TABLE tb_stu
MODIFY sName VARCHAR(30);
#查看表结构
DESC tb_stu;
#删除原先表的ID字段
ALTER TABLE tb_stu
DROP ID;
#查看表结构
DESC tb_stu;

运行结果:
在这里插入图片描述

修改字段名称

语法格式:

ALTER TABLE <表名>
CHANGE <旧字段名> <新字段名> <新数据类型>;

<旧字段名>:指修改前的字段名;
<新字段名>:指修改后的字段名;
<新数据类型>:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。

例:将tb_stu的sID字段名称改成ID,同时将数据类型变为CHAR(30).

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;
#添加ID字段,并放在第一个字段
ALTER TABLE tb_stu
ADD COLUMN ID INT FIRST;
#查看表结构
DESC tb_stu;
#将 sName 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)
ALTER TABLE tb_stu
MODIFY sName VARCHAR(30);
#查看表结构
DESC tb_stu;
#删除原先表的ID字段
ALTER TABLE tb_stu
DROP ID;
#查看表结构
DESC tb_stu;
#将tb_stu的sID字段名称改成ID,同时将数据类型变为CHAR(30)
ALTER TABLE tb_stu
CHANGE sID ID CHAR(30);
#查看表结构
DESC tb_stu;

运行结果:
在这里插入图片描述
CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。

修改表名

语法格式:

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

[TO]: 为可选参数,使用与否均不影响结果

例:将数据表 tb_stu 改名为 tb_Student

CREATE DATABASE test_db;#创建test_db数据库
USE test_db;#使用test_db数据库
#创建tb_stu表
CREATE TABLE tb_stu(
sID INT(11),
sName VARCHAR(25),
sCourse VARCHAR(20),
sGrades FLOAT,
sSex CHAR(10)
);
#查看表结构
DESC tb_stu;
#添加ID字段,并放在第一个字段
ALTER TABLE tb_stu
ADD COLUMN ID INT FIRST;
#查看表结构
DESC tb_stu;
#将 sName 字段的数据类型由 VARCHAR(25) 修改成 VARCHAR(30)
ALTER TABLE tb_stu
MODIFY sName VARCHAR(30);
#查看表结构
DESC tb_stu;
#删除原先表的ID字段
ALTER TABLE tb_stu
DROP ID;
#查看表结构
DESC tb_stu;
#将tb_stu的sID字段名称改成ID,同时将数据类型变为CHAR(30)
ALTER TABLE tb_stu
CHANGE sID ID CHAR(30);
#查看表结构
DESC tb_stu;
#将数据表 tb_stu 改名为 tb_Student
ALTER TABLE tb_stu
RENAME TO tb_Student;
SHOW TABLES;

运行结果:

在这里插入图片描述

删除表

语法格式:

DROP TABLE [IF EXISTS] 表名1 [ ,表名2, 表名3 …]

表名1 [ ,表名2, 表名3 …]:表示要被删除的数据表的名称。DROP TABLE 可以同时删除多个表,只要将表名依次写在后面,相互之间用逗号隔开即可。
[IF EXISTS] : 用于在删除数据表之前判断该表是否存在。如果不加 IF EXISTS,当数据表不存在时 MySQL 将提示错误,中断 SQL 语句的执行;加上 IF EXISTS 后,当数据表不存在时 SQL 语句可以顺利执行,但是会发出警告(warning)

例:选择数据库 test_db,创建 tb_stu1 ,tb_stu2数据表,删除创建的两张表

USE test_db;#使用test_db数据库
#创建tb_stu1表
CREATE TABLE tb_stu1(
ID INT(11),
sName VARCHAR(20)
);
#创建tb_stu2表
CREATE TABLE tb_stu2(
ID INT(11),
sName VARCHAR(20)
);
#查看表
SHOW TABLES;
#删除tb_stu1和tb_stu2表
DROP TABLE IF EXISTS tb_stu1,tb_stu2;
#查看表
SHOW TABLES;

创建两张表
运行结果:
在这里插入图片描述
删除两张表
运行结果:
在这里插入图片描述

发布了4 篇原创文章 · 获赞 6 · 访问量 1034

猜你喜欢

转载自blog.csdn.net/qq_41976117/article/details/104975325