日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

MySQL之alter和upate

發(fā)布時間:2025/3/20 数据库 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MySQL之alter和upate 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在mysql運維操作中會經(jīng)常使用到alter這個修改表的命令,alter tables允許修改一個現(xiàn)有表的結(jié)構(gòu),比如增加或刪除列、創(chuàng)造或消去索引、改變現(xiàn)有列的類型、或重新命名列或表本身,也能改變表的注釋和表的類型。
下面就針對alter修改命令的使用做一梳理:

1)刪除列
alter table 表名 DROP 列名;?? ? ? ? ? ? ? //或者??alter table 表名 drop column 列名;
-------------------------------------------------------------------------------------
drop database 庫名; ? ? ?//刪除庫
drop table 表名; ? ? ? ? ? //刪除表
delete from 表名; ? ? ? ? //清空表中所有數(shù)據(jù),但這張表沒有刪除,保留的是空表。
delete from 表名 where ...; ? ? ? ? ?//刪除表中字段
------------------------------------------------------------------------------------

2)增加列
alter table 表名 ADD 列名 列的屬性(如INT NOT NULL COMMENT '注釋說明')

3)修改列的類型信息。alter table 表名 CHANGE 列名 新列名 新列屬性; ?
alter table 表名 CHANGE 列名 新列名(這里可以用和原來列同名即可) BIGINT NOT NULL COMMENT '注釋說明'

4)重命名列
alter table 表名 CHANGE 列名 新列名 BIGINT NOT NULL COMMENT '注釋說明'

5)重命名表
alter table 表名 RENAME 表新名

6)刪除表中主鍵
alter table 表名 drop primary key
-------------------------------------------------------------------------------------
如若刪除帶自增屬性的主鍵,那么要先刪除自增長,再刪除主鍵
Alter table haha change id id int(10); ? ? ? ?//刪除自增長
Alter table haha drop primary key; ? ? ? ? ? //刪除主建
-------------------------------------------------------------------------------------

7)添加主鍵
alter table 表名 ADD CONSTRAINT PK_表名 PRIMARY KEY(列名1,列名2)
-------------------------------------------------------------------------------------
Alter table haha add primary key(id); ? ? ? ? ? ? ? //將haha表的id列添加主鍵
Alter table haha change id id int(10) not null auto_increment; ? ? ? ? ?//自增長屬性
-------------------------------------------------------------------------------------
sql中constraint前綴的用意(PK、UK、DF、CK、FK)
--主鍵
constraint PK_字段 primary key(字段),
--唯一約束
constraint UK_字段 unique key(字段),
--默認約束
constrint DF_字段 default('默認值') for 字段,
--檢查約束
constraint CK_字段 check(約束。如:len(字段)>1),
--主外鍵關(guān)系
constraint FK_主表_從表 foreign(外鍵字段) references 主表(主表主鍵字段)
-------------------------------------------------------------------------------------

8)添加/創(chuàng)建索引
alter table 表名 add index 索引名 列名; ? ? ? ? //普通索引
ALTER TABLE 表名 ADD UNIQUE index 索引名 (列名1,列名2); ? ? ? ? //聯(lián)合索引
ALTER TABLE 表名 ADD PRIMARY index KEY 索引名 列名; ? ? ? ? //主鍵索引
-------------------------------------------------------------------------------------
SHOW INDEX FROM 表名字; ? ? ??//查詢索引

刪除索引可以使用ALTER TABLE或DROP INDEX語句來實現(xiàn)。DROP INDEX可以在ALTER TABLE內(nèi)部作為一條語句處理
DROP index 索引名 ON 表名字 列名; ? ? ??//刪除普通索引
ALTER TABLE 表名 DROP INDEX 索引名 列名; ? ? ??//刪除普通索引
ALTER TABLE 表名 DROP UNIQUE 索引名 (列名1,列名2); ? ??//刪除聯(lián)合索引
ALTER TABLE 表名 DROP PRIMARY KEY 索引名 列名; ? ? ?//刪除主鍵索引
-------------------------------------------------------------------------------------

9)添加唯一限制條件索引
alter table 表名 add unique emp_name2(cardnumber); ? ? ? ? ? ??//empname 類型 為String 字符串類型

10)創(chuàng)建聯(lián)合唯一索引
alter table 表名 ADD UNIQUE INDEX 索引名 (列名1,列名2);
alter ignore table 表名 add unique index(user_id,user_name); ? ? ? ? ?//它會刪除重復(fù)的記錄(別怕,會保留一條),然后建立唯一索引,高效而且人性化.(慎用)

11)修改字段屬性
alter table 表名 modify column 字段名 類型
alter table 表名 modify column 字段1 類型,字段2 類型
例如:將class表的name列屬性改成varchar(100)
alter table class modify column name varchar(100);
或者:
alter table 表名 change 列名 列名 varchar(100);
alter table class change name name varchar(100);

---------------------------------------------------------------------------------------------------------------------------
上面提到了使用alter命令修改表名,修改列名;那么修改字段值,就需要使用update命令,如下:

1234567891011121314151617181920212223mysql>?select?*?from?huanqiu.haha;+----+-----------+| id |?name??????|+----+-----------+|? 1 | wangshibo || 11 | ouou????? || 19 | hahahahha |+----+-----------+3?rows?in?set?(0.00 sec)mysql>?update?huanqiu.haha?set?name="wangshikui"?where?id=11;Query OK, 1 row affected (0.00 sec)Rows?matched: 1? Changed: 1? Warnings: 0mysql>?select?*?from?huanqiu.haha;+----+------------+| id |?name???????|+----+------------+|? 1 | wangshibo? || 11 | wangshikui || 19 | hahahahha? |+----+------------+3?rows?in?set?(0.01 sec)

修改root登陸密碼:

1mysql>?update?mysql.user?set?password=password("654321")?where?host='192.168.1.101'?and?user="root";

--------------------------------------------------------------------------------------------------------------------------------------------------

update 表名 set 列名="新的字段值" [where 限制條件1 and 限制條件1];
update 表名 set 列名1="新的字段值",列名2="新的字段值" [where 限制條件1 and 限制條件1] [ORDER BY ...] [LIMIT row_count];

?

insert into 表名 values(所有字段的插入值);
insert into 表名(指定字段) values(指定字段);
insert into 表名 values(所有字段的插入值),(所有字段的插入值),(所有字段的插入值); ? ? ? ? ? ? ???//批量插入

12345678910111213141516171819202122mysql>?select?*?from?huanqiu.haha;+----+------------+| id |?name???????|+----+------------+| 11 | wangshikui |+----+------------+1 row?in?set?(0.00 sec)mysql>?insert?into?huanqiu.haha?values(1,"wangshibo"),(2,"wangshikui"),(3,"wangjuan"),(4,"wangman");Query OK, 4?rows?affected (0.00 sec)Records: 4? Duplicates: 0? Warnings: 0mysql>?select?*?from?huanqiu.haha;+----+------------+| id |?name???????|+----+------------+|? 1 | wangshibo? ||? 2 | wangshikui ||? 3 | wangjuan?? ||? 4 | wangman??? || 11 | wangshikui |+----+------------+

?

--------------------------------------------------------------------------------------------------------------------------------------------------
創(chuàng)建表時指定AUTO_INCREMENT自增值的初始值:

1mysql>?CREATE?TABLE?表名 (ID?INT(5)?PRIMARY?KEY?AUTO_INCREMENT)AUTO_INCREMENT=100;

通過ALTER TABLE 修改初始值(但要大于表中的AUTO_INCREMENT自增值,否則設(shè)置無效):

1mysql>ATLER?TABLE?表名 AUTO_INCREMENT=100;

如果自增序列的最大值被刪除了,則在插入新記錄時,該值被重用。
就是說如果表中原本有AUTO_INCREMENT屬性值連續(xù)為78、100的值,但100這個數(shù)據(jù)被刪除了,下此再添加數(shù)據(jù)的時候自增值為101,100被重用了。
即使在你將整個表中的所有數(shù)據(jù)delete清空后,之前的自增序列最大值還是會被重用。
解決辦法是使用下面命令:

1ATLER?TABLE?表名 AUTO_INCREMENT=0;???????? //重新設(shè)置自增初始值

-----------------------------------------------------------------------------------------------------------------------------------------------
設(shè)置AUTO_INCREMENT_INCREMENT以及AUTO_INCREMENT_offset用戶變量值(重啟MySQL之后,這些修改會恢復(fù)為初始值1):

12345678910111213141516mysql>SET?auto_increment_increment=10;???? //自增量每次增加的值改為10,mysql>SET?auto_increment_offset=2;??????? //第一次加載數(shù)值時的偏移值的個位值mysql>SHOW VARIABLES?LIKE?'AUTO_INC%';????? //查看修改后變量的值mysql>SHOW?TABLE?STATUS?FROM?NAME_DB;????? //顯示數(shù)據(jù)庫NAME_DB中所有表的信息mysql>SHOW?CREATE?TABLE?NAME_TBL;?????? //顯示表NAME_TBL創(chuàng)建時的信息mysql>SHOW VARIABLES?LIKE?'AUTO_INC%';????? //顯示MySQL的AUTO_INC開頭的用戶會話變量(SHOW?GLOBAL?VARIABLES)+--------------------------+-------+| Variable_name | Value |+--------------------------+-------+| auto_increment_increment | 1 || auto_increment_offset | 1 |+--------------------------+-------+2?rows?in?set?(0.00 sec)

總結(jié)

以上是生活随笔為你收集整理的MySQL之alter和upate的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。