Mysql 数据表的修改

创建数据表

Mysql 创建数据表的语法格式

创建数据表的基础语法:CREATE DATABASE <数据表名称> (<字段名称> <数据类型> [完整性约束]);

数据类型

数字类型

  • 整数:tinyintsmallintmediumintintbigint
  • 小数:小数分为浮点数类型和定点数类型。
    • 浮点数:float(单精度浮点数)、double(双精度浮点数);
    • 定点数:decimalnumeric,一般用于类似货币等的计算,以decimal举例,其声明格式是 DECIMAL (M, D),M是精度,表示一共存储多少位数,D是小数位数,小数位数会被四舍五入。
  • 日期/时间类型:分为yeartimedatedatetimetimestamp,其中timestamp是时间戳,如果未填入有效数据,默认填充服务器当前时间戳。
  • 字符串:char (M)varchar (M)binary (M)varbinary (M)blob (M)textenum(枚举)、set(枚举)。

查看数据表格的结构

查看数据表格的结构:DESCRIBE <数据表>;,其可以等价为:DESC <数据表>;

mysql> DESCRIBE sourse;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| cno   | char(10)    | YES  |     | NULL    |       |
| cname | varchar(30) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.63 sec)
  • Field:字段名称
  • Type:数据类型
  • Null:是否为空
  • Key:主键
  • Default:字段的默认值
  • Extra:附加信息

查看建表的命令的代码

查看建表的命令的代码:SHOW CREATE TABLE <数据表名称>; (可以用\G 替代分号,会更美观,如SHOW CREATE TABLE <数据表名称>\G,但是/G是MySQL命令行客户端的特殊命令,不能在SQL语句中使用。)

mysql> SHOW CREATE TABLE student;
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table   | Create Table                                                                                                                                                                                                                |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| student | CREATE TABLE `student` (
  `sno` char(9) DEFAULT NULL,
  `class` varchar(30) DEFAULT NULL,
  `sname` varchar(10) DEFAULT NULL,
  `ssex` char(2) DEFAULT NULL,
  `birth` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3 |
+---------+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.32 sec)

表的修改

对于表的操作,均需要ALTER TABLE <数据表名称>

  • RENAME:重命名数据表,ALTER TABLE <数据表名称> RENAME [(AS | TO)] <新的数据表名称>;
  • MODIFY:操作字段,例如修改字段数据结构,ALTER TABLE <数据表名称> MODIFY <字段名称> <数据类型>;,修改字段的位置,ALTER TABLE <数据表名称> MODIFY <字段名称> <数据类型> [(FIRST | AFTER) <字段名称>];
  • CHANGE:修改字段名称,ALTER TABLE <数据表名称> CHANGE <字段名称> <新的字段名称> <数据类型>;,如果不希望修改数据类型,则新的数据类型填写原始数据类型。
  • ADD:添加字段,ALTER TABLE <数据表名称> ADD <字段名称> <数据类型> [(FIRST | AFTER) <字段名称>];
  • DROP:删除字段,ALTER TABLE <数据表名称> DROP <字段名称>;

完整性约束

  • NOT NULLNULL:非空/空约束,指的是该字段是否允许空值,如果不写则默认NULL,即允许空值(空值不是0,而是无数据);
  • DEFAULT:默认值约束,指的是设置字段的默认值,如果在记录中不存在,则默认提供一个数值;
  • AUTO_INCREMENT:自增约束,当主键定义为自增后,这个主键就不需要录入数据,而DBMS会自动根据定义自动赋值,每增长一条记录,主键就会随着步长(步长默认为1)进行增长;
  • UNIQUE [KEY]:唯一约束,唯一约束在单表中可以存在多个被唯一约束的字段,且唯一约束允许存在空值;
  • [PRIMARY] KEY:主键约束,在字段中唯一且不为空;
  • CHECK_CONSTRAINT_DEFINITION:检查约束,用来检查数据表中,字段的值是否是有效合法的。

一个数据表中只可以存在一个主键约束(**[PRIMARY] KEY**),其他约束可以存在多个。

修改数据库的字符集

查看建库的命令:SHOW CREATE DATABASE <数据库名>;

mysql> SHOW CREATE DATABASE chjgl_db_20260325;
+-------------------+------------------------------------------------------------------------------------------------------------------+
| Database          | Create Database                                                                                                  |
+-------------------+------------------------------------------------------------------------------------------------------------------+
| chjgl_db_20260325 | CREATE DATABASE `chjgl_db_20260325` /*!40100 DEFAULT CHARACTER SET utf8mb3 */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+-------------------+------------------------------------------------------------------------------------------------------------------+
1 row in set (0.43 sec)

修改数据库的字符集ALTER DATABASE <数据库名> DEFAULT​ CHARACTER SET <字符集>;

mysql> ALTER DATABASE chjgl_db_20260325 DEFAULT CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.28 sec)

创建数据库的时候同步设置其默认字符串CREATE DATABASE <数据库名> DEFAULT CHARACTER SET <字符集>;

mysql> CREATE DATABASE mytest_db DEFAULT CHARACTER SET utf8mb4;
Query OK, 1 row affected (0.18 sec)

mysql> SHOW CREATE DATABASE mytest_db;
+-----------+-------------------------------------------------------------------------------------------------------------------------------------+
| Database  | Create Database                                                                                                                     |
+-----------+-------------------------------------------------------------------------------------------------------------------------------------+
| mytest_db | CREATE DATABASE `mytest_db` /*!40100 DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci */ /*!80016 DEFAULT ENCRYPTION='N' */ |
+-----------+-------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.29 sec)

主键的设置

联合主键的设置

含有联合主键的数据表,创建时候与正常创建同理,但是使用PRIMARY KEY (<联合主键的字段>)设置联合主键,即:CREATE TABLE <表名称> (<需要创建的字段>, PRIMARY KEY(<联合主键的字段>));

  • 联合主键的创建PRIMARY KEY必须完整书写!
  • 联合主键创建时,不可以直接在字段后申明主键约束!
  • 一张表只能有一个主键,联合主键也是一个主键。

举例如下:

mysql> CREATE TABLE scores (sno char(9), cno char(10), score int, PRIMARY KEY(sno, cno));
Query OK, 0 rows affected (0.32 sec)

mysql> DESC scores;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| sno   | char(9)  | NO   | PRI | NULL    |       |
| cno   | char(10) | NO   | PRI | NULL    |       |
| score | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.53 sec)

删除主键

删除主键是对数据表进行操作,所以需要使用ALTER TABLE,完整格式是:ALTER TABLE <表名> DROP PRIMARY KEY;

因为一个数据表只有一个主键,所以直接输入PRIMARY KEY即可删除主键。这里的PRIMARY KEY也必须完整输入。

mysql> DESC scores;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| sno   | char(9)  | NO   | PRI | NULL    |       |
| cno   | char(10) | NO   | PRI | NULL    |       |
| score | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.37 sec)

mysql> ALTER TABLE scores DROP PRIMARY KEY;
Query OK, 0 rows affected (0.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> DESC scores;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| sno   | char(9)  | NO   |     | NULL    |       |
| cno   | char(10) | NO   |     | NULL    |       |
| score | int      | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
3 rows in set (0.36 sec)

添加主键

主键在一张数据表中只可以有一个。

使用:ALTER TABLE <表名> MODIFY <字段> <数据类型> [约束条件];,或者ALTER TABLE <表名> ADD PRIMARY KEY (<字段>);,后者适用于联合主键。

mysql> ALTER TABLE student MODIFY sno char(9) PRIMARY KEY;
Query OK, 0 rows affected (0.26 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> ALTER TABLE scores ADD PRIMARY KEY(sno, cno);
Query OK, 0 rows affected (0.23 sec)
Records: 0  Duplicates: 0  Warnings: 0
文章「Mysql 数据表的修改」,由本站用户「admin」发布。文章仅代表admin观点,不代表本站立场。
页面网页地址「https://xiaozhiyuqwq.top/p/3030」。
如您对文章及其附件提出版权主张,或进行引用转载等,请查看我们的【版权声明】
本页面暂时没有评论......

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇