最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL?alter命令修改表語(yǔ)法實(shí)例詳解

 更新時(shí)間:2024年01月12日 08:22:11   作者:Bridge?Fish  
這篇文章主要給大家介紹了關(guān)于MySQL?alter命令修改表語(yǔ)法實(shí)例詳解的相關(guān)資料,在MySQL中ALTER指令的作用是修改已存在的數(shù)據(jù)庫(kù)表的結(jié)構(gòu),文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

在使用表的過(guò)程中,如果您需要對(duì)表進(jìn)行修改,您可以使用 ALTER TABLE 語(yǔ)句。通過(guò) ALTER TABLE 語(yǔ)句,您可以重命名表、重命名列、添加列、刪除列、修改列的屬性等。

ALTER TABLE 語(yǔ)法

ALTER TABLE table_name
  [alter_action options], ...

其中 alter_action 是一個(gè)修改動(dòng)作,包括

ADD 關(guān)鍵字可用來(lái)添加列、索引、約束等,包括:

  • ADD [COLUMN]: 添加列
  • ADD INDEX: 添加索引
  • ADD PRIMARY KEY: 添加主鍵
  • ADD FOREIGN KEY: 添加外鍵
  • ADD UNIQUE INDEX: 添加唯一索引
  • ADD CHECK: 添加檢查約束

DROP 關(guān)鍵字可用來(lái)刪除列、索引、約束等,包括:

  • DROP [COLUMN] col_name: 刪除列
  • ADD INDEX index_name: 刪除索引
  • DROP PRIMARY KEY: 刪除主鍵
  • DROP FOREIGN KEY fk_symbol: 刪除外鍵
  • DROP CHECK symbol: 刪除檢查約束

MODIFY 關(guān)鍵字用來(lái)修改列的定義。與 CHANGE 關(guān)鍵字不同,它不能重命名列。例如: MODIFY [COLUMN] col_name column_definition。

CHANGE 關(guān)鍵字用來(lái)修改列的定義。與 MODIFY 關(guān)鍵字不同,它可以重命名列。例如: CHANGE [COLUMN] old_col_name new_col_name column_definition。

RENAME 關(guān)鍵字可以重命名列、索引和表。包括:

  • RENAME COLUMN old_col_name TO new_col_name: 重命名列。
  • RENAME INDEX old_index_name TO new_index_name: 重命名索引。
  • RENAME new_tbl_name: 重命名表。

ALTER TABLE 實(shí)例

從 ALTER TABLE 語(yǔ)法看出, ALTER TABLE 用法很多。為了演示 ALTER TABLE 用法,我們?cè)?nbsp;testdb 數(shù)據(jù)庫(kù)中創(chuàng)建一個(gè)表 user

請(qǐng)執(zhí)行以下語(yǔ)句:

CREATE TABLE user (id INT);

通過(guò)以下語(yǔ)句查看 user 表的定義。

DESC user;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | int  | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.00 sec)

下面讓我們看一些實(shí)際的例子。

添加一列

以下語(yǔ)句使用 ADD 關(guān)鍵字在 user 表中添加了 name 列。

ALTER TABLE user
ADD name VARCHAR(20);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意,當(dāng)向包含數(shù)據(jù)的表中添加列時(shí),新添加的列不滿足表的約束定義,則會(huì)返回錯(cuò)誤。

添加多列

以下語(yǔ)句使用 ADD 關(guān)鍵字在 user 表中添加了 age 和 email 列。

ALTER TABLE user
ADD age INT,
ADD email VARCHAR(50);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

重命名列

以下語(yǔ)句使用 RENAME COLUMN 關(guān)鍵字,將 user 表的 name 列重命名為 username

ALTER TABLE user
RENAME COLUMN name TO username;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

以下是修改后的表定義:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| username | varchar(20) | YES  |     | NULL    |       |
| age      | int         | YES  |     | NULL    |       |
| email    | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

修改列定義

以下語(yǔ)句使用 MODIFY 關(guān)鍵字,將 user 表的 username 列由 varchar(20) 修改為 VARCHAR(45)。

ALTER TABLE user
MODIFY username VARCHAR(45);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

以下是修改后的表定義:

+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id       | int         | YES  |     | NULL    |       |
| username | varchar(45) | YES  |     | NULL    |       |
| age      | int         | YES  |     | NULL    |       |
| email    | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

修改列名和定義

以下語(yǔ)句使用 CHANGE 關(guān)鍵字,將 user 表的 username 列修改為 name VARCHAR(30)。

ALTER TABLE user
CHANGE username name VARCHAR(30);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

以下是修改后的表定義:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | YES  |     | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
| email | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

添加主鍵

以下語(yǔ)句使用 ADD 關(guān)鍵字,將 user 表的 id 列設(shè)置為主鍵。

ALTER TABLE user
ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意,由于主鍵要求列的值是唯一的并且不能為 NULL,如果該列中有重復(fù)的值或者 NULL 值,則會(huì)返回錯(cuò)誤。同樣,如果你添加唯一索引,也可能會(huì)出現(xiàn)相同的錯(cuò)誤。

以下是修改后的表定義:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | NO   | PRI | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
| email | varchar(50) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

刪除列

下面語(yǔ)句使用 DROP 關(guān)鍵字刪除了 email 列。

ALTER TABLE user
DROP COLUMN email;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

注意:刪除列是很危險(xiǎn)的操作,因?yàn)樗鼤?huì)永久刪除列中的數(shù)據(jù)。這是不可撤銷(xiāo)的操作,請(qǐng)謹(jǐn)慎。

以下是刪除后的表定義:

+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | NO   | PRI | NULL    |       |
| name  | varchar(30) | YES  |     | NULL    |       |
| age   | int         | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

重命名表

下面語(yǔ)句使用 RENAME 關(guān)鍵字將 user 表重命名為 users。

ALTER TABLE user
RENAME users;

我們還可以是用 RENAME TABLE 語(yǔ)句重命名表,它的用法如下:

RENAME TABLE table_name TO new_table_name;

下面的語(yǔ)句同樣實(shí)現(xiàn)將 user 表重命名為 users

RENAME TABLE user TO users;

修改表的存儲(chǔ)引擎

ALTER TABLE 命令也可以用于修改一張表的存儲(chǔ)引擎??梢允褂靡韵抡Z(yǔ)法:

ALTER TABLE table_name ENGINE=engine_name;

其中,table_name是要修改的表的名稱(chēng),engine_name是新的存儲(chǔ)引擎。

示例:

-- 將customer表的存儲(chǔ)引擎改為innodb
ALTER TABLE customer ENGINE=InnoDB; 

結(jié)論

在本文中,我們介紹了在 MySQL 服務(wù)器上如何使用 ALTER TABLE 語(yǔ)句修改表,包括:添加列、刪除列、修改列、重命名列、重命名表和設(shè)置主鍵等。本文要點(diǎn)包括:

  • ALTER TABLE 關(guān)鍵字后面跟要修改的表名。
  • ADD 關(guān)鍵字可用來(lái)添加列、索引、約束等。
  • DROP 關(guān)鍵字可用來(lái)刪除列、索引、約束等。
  • RENAME 關(guān)鍵字可以重命名列、索引和表。
  • MODIFY 關(guān)鍵字用來(lái)修改列的定義。
  • CHANGE 關(guān)鍵字用來(lái)修改列的定義和列名。
  • RENAME TABLE ... TO ... 用來(lái)重命名表。
-- alter table 修改表結(jié)構(gòu)(表名,列名,列的數(shù)據(jù)類(lèi)型,相關(guān)約束)
use d3;
show tables;
-- 查看表結(jié)構(gòu)
desc tuser;
describe tuser;
show columns from tuser;
describe table tuser;
-- 修改表名
alter table tuser rename userinfo;
rename table userinfo to tuser;
-- 移動(dòng)表表tt2從db2庫(kù)移動(dòng)當(dāng)前數(shù)據(jù)庫(kù)為tt3表
rename table db2.tt2 to tt3;
/*
RENAME TABLE
tbl_name TO new_tbl_name
[, tbl_name2 TO new_tbl_*/
drop table if exists
t,t1,t3,s,stu,user,tuser,tteacher,dept,employees,student;
create table t1(t int);
create table t2(t int);
create table t3(t int);
-- 修改多個(gè)表的名稱(chēng)
rename table
t1 to tt1,
t2 to tt2,
t3 to tt3;
-- 查看表結(jié)構(gòu)
desc tt1;
-- 查看建立數(shù)據(jù)庫(kù)的語(yǔ)句
show create database mysql;
-- 查看建立表的語(yǔ)句
show create table tt1;
rename table tt1 to student;
-- 增加字段類(lèi)型
alter table student add column id int unsigned auto_increment primary key;
alter table student add sname varchar(15) not null;
alter table student add age tinyint unsigned default 18;
alter table student add gender enum('男','女') default '男' after sname;
alter table student add address varchar(255) first;
-- 修改列的類(lèi)型 及 位置
alter table student modify address varchar(255) after age;
-- 修改列名
alter table student rename column address to saddr;
-- 修改列名 類(lèi)型 及 位置
alter table student change saddr address varchar(100) after age;
-- 復(fù)制表結(jié)構(gòu)或建立一個(gè)空表
create table stu like student;
-- 根據(jù)查詢的內(nèi)容建立一個(gè)表,此表沒(méi)有相關(guān)的約束,不推薦使用
create table t1 as select 20,'jack';
-- 刪除字段
alter table student drop column t;
-- 修改表名 student cf_student cf_user cf_admin cf_car
rename table w_student to cf_student;
alter table cf_student rename st;
-- 查看表結(jié)構(gòu)
describe st;
desc st;
-- 查看建立表語(yǔ)句
show create table st;
CREATE TABLE `st` (
`id` int unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`gender` enum('男','女') DEFAULT NULL,
`course` set('計(jì)算機(jī)英語(yǔ)','高數(shù)','離散數(shù)學(xué)','線性代數(shù)') DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb3
-- 增加一列(字段)
-- 刪除一列(字段)
-- 修改列名
-- 修改列的數(shù)據(jù)類(lèi)型 int bigint varchar int varchar(30) varchar(5)
select * from st;
-- 增加一列
alter table st add address varchar(255) not null default '鄭州市';
alter table st add age tinyint unsigned not null default 18 first;
alter table st add age tinyint unsigned default 0 after name;
-- 刪除一列
alter table st drop address;
alter table st drop column age;
-- 修改列名 name StudentName sname
alter table st rename column name to sname;
alter table st change sname name varchar(30) first;
alter table st change name name varchar(30) after id;
-- 修改列的數(shù)據(jù)類(lèi)型及精度
alter table st modify name varchar(100) after address;
alter table st modify name varchar(50) after id;
-- 復(fù)制表的結(jié)構(gòu)
-- create table t6(t int);
create table st2 like st;
show create table st2;
select * from st2;
-- 插入數(shù)據(jù)
insert into st2 select * from st;
show tables;
-- 根據(jù)查詢的結(jié)構(gòu),建立一個(gè)沒(méi)有相關(guān)約束的表,可以直接插入數(shù)據(jù)
create table st3 as select id,name from st;
create table st4 as select id,name,address from st where name like '李%';
select * from st3;
show create table st3;
drop table st3;
select * from st4;

總結(jié) 

到此這篇關(guān)于MySQL alter命令修改表語(yǔ)法的文章就介紹到這了,更多相關(guān)MySQL alter命令修改表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • sqlite3遷移mysql可能遇到的問(wèn)題集合

    sqlite3遷移mysql可能遇到的問(wèn)題集合

    這篇文章主要給大家介紹了關(guān)于sqlite3遷移mysql可能遇到的問(wèn)題集合,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解MySQL分組鏈接的使用技巧

    詳解MySQL分組鏈接的使用技巧

    本篇文章主要針對(duì)MYSQL中分組以及4種鏈接做了詳細(xì)的分析,有助于大家對(duì)這2項(xiàng)MYSQL功能有深入的理解,參考學(xué)習(xí)下吧。
    2017-12-12
  • mysql中g(shù)eneral_log日志的實(shí)現(xiàn)

    mysql中g(shù)eneral_log日志的實(shí)現(xiàn)

    MySQL的general_log是一個(gè)非常有用的工具,它可以記錄所有的SQL語(yǔ)句,包括查詢、DML、DDL、DCL語(yǔ)句,以及連接和斷開(kāi)數(shù)據(jù)庫(kù)的語(yǔ)句,下面就來(lái)具體介紹一下,感興趣的可以了解一下
    2024-11-11
  • MySQL字符串的拼接、截取、替換、查找位置實(shí)例詳解

    MySQL字符串的拼接、截取、替換、查找位置實(shí)例詳解

    MySQL中的字符串操作包括拼接、截取、替換和查找位置等功能,本文給大家介紹MySQL字符串的拼接、截取、替換、查找位置示例詳解,感興趣的朋友一起看看吧
    2024-09-09
  • mysql 5.7.24 壓縮包安裝配置方法圖文教程

    mysql 5.7.24 壓縮包安裝配置方法圖文教程

    這篇文章主要介紹了mysql 5.7.24 壓縮包安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • 解決Mysql服務(wù)器啟動(dòng)時(shí)報(bào)錯(cuò)問(wèn)題的方法

    解決Mysql服務(wù)器啟動(dòng)時(shí)報(bào)錯(cuò)問(wèn)題的方法

    這篇文章主要介紹了解決Mysql服務(wù)器啟動(dòng)時(shí)報(bào)錯(cuò)問(wèn)題的方法,需要的朋友可以參考下
    2015-11-11
  • mysql的group by函數(shù)使用方法

    mysql的group by函數(shù)使用方法

    MySQL中的GROUP BY子句用于將查詢結(jié)果按一個(gè)或多個(gè)列進(jìn)行分組,通常與聚合函數(shù),實(shí)現(xiàn)數(shù)據(jù)的分組統(tǒng)計(jì),本文給大家介紹mysql的group by函數(shù)使用方法,感興趣的朋友跟隨小編一起看看吧
    2025-08-08
  • MySQL數(shù)據(jù)庫(kù)遷移到KingbaseES的完整指南

    MySQL數(shù)據(jù)庫(kù)遷移到KingbaseES的完整指南

    KingbaseES 是中電科金倉(cāng)(北京)科技股份有限公司研發(fā)的,具有自主知識(shí)產(chǎn)權(quán)的通用數(shù)據(jù)庫(kù)產(chǎn)品,本文給大家介紹了怎么把MySQL數(shù)據(jù)庫(kù)遷移到KingbaseES上,需要的朋友可以參考下
    2025-08-08
  • Mysql遷移到TiDB雙寫(xiě)數(shù)據(jù)庫(kù)兜底方案詳解

    Mysql遷移到TiDB雙寫(xiě)數(shù)據(jù)庫(kù)兜底方案詳解

    這篇文章主要為大家介紹了Mysql遷移到TiDB雙寫(xiě)數(shù)據(jù)庫(kù)兜底方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • SQL實(shí)現(xiàn)LeetCode(178.分?jǐn)?shù)排行)

    SQL實(shí)現(xiàn)LeetCode(178.分?jǐn)?shù)排行)

    這篇文章主要介紹了SQL實(shí)現(xiàn)LeetCode(178.分?jǐn)?shù)排行),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08

最新評(píng)論

嵩明县| 汉中市| 依安县| 兴业县| 兰溪市| 南漳县| 漳平市| 上犹县| 平塘县| 北辰区| 宜宾市| 自治县| 吉木乃县| 桐庐县| 新巴尔虎右旗| 延庆县| 安西县| 汾西县| 台北县| 万宁市| 工布江达县| 宿迁市| 桃江县| 图木舒克市| 星子县| 山阳县| 尉氏县| 文成县| 西丰县| 大同市| 三门县| 昭苏县| 德阳市| 嵊州市| 房产| 台南县| 曲麻莱县| 塘沽区| 海丰县| 宜春市| 遵义市|