MySQL資料庫(六)__2018.11.13
動態新增預設值,刪除預設值。
alert table tb_name alter 欄位名稱 set default 預設值;
alert table tb_name alter 欄位名稱 drop default;
#測試新增刪除預設值操作
CREATE TABLE user2(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL,
age TINYINT UNSIGNED NOT NULL DEFAULT 18,
email VARCHAR(50) NOT NULL
);
#給email欄位新增預設值 [email protected]
ALTER TABLE user2
ALTER email SET DEFAULT '[email protected]';
先選中表名,再選中欄位。
--刪除欄位預設值。
#刪除age欄位預設值 18
ALTER TABLE user2
ALTER age DROP DEFAULT;
練習:新增addr欄位,並設定預設值為‘北京’,然後刪除預設值。
修改欄位型別欄位屬性。
alter table tb_name modify 欄位名稱 欄位型別【欄位屬性】 【first||after 欄位名稱】;
修改欄位名稱、型別、屬性。
alter table tb_name change 原欄位名稱 新欄位名稱 欄位型別 欄位屬性 【first||after 欄位名稱】;
#測試修改欄位型別和欄位屬性、欄位名稱
CREATE TABLE user3(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(5) NOT NULL UNIQUE,
PASSWORD CHAR(32) NOT NULL,
email VARCHAR(10) NOT NULL
);
#將使用者名稱欄位的型別改為20 ALTER TABLE user3 MODIFY username VARCHAR(20) NOT NULL UNIQUE;
可以不用寫unique,因為之前已經有了unique,不寫它也不會被刪除。
#將使用者名稱欄位的型別改為20
ALTER TABLE user3
MODIFY username VARCHAR(30) NOT NULL;
但是Not NULL不能省,否則會去掉這一屬性。
#將使用者名稱欄位的型別改為20
ALTER TABLE user3
MODIFY username VARCHAR(20) UNIQUE;
#將password欄位改為40
#將email欄位改為varchar(50) not null 並且將欄位位置改到首位
ALTER TABLE user3
MODIFY email VARCHAR(50) NOT NULL FIRST;
#將username 名稱改為user
ALTER TABLE user3
CHANGE username USER VARCHAR(20) NOT NULL;
#將password 名稱改為pwd
ALTER TABLE user3
CHANGE PASSWORD pwd VARCHAR(40) NOT NULL;
#將email改為userEmail 型別改為varchar(100) default '[email protected]'
ALTER TABLE user3
CHANGE email userEmail VARCHAR(100) DEFAULT '[email protected]';
modify只能該屬性,不能該名字。change可以。
新增主鍵、刪除主鍵約束。
alter table tb_name add primary key(欄位名稱);
alter table tb_name drop primary key;(一個表中只有一個主鍵)
#測試新增和刪除主鍵
CREATE TABLE user4(
id INT UNSIGNED,
username VARCHAR(20) NOT NULL
);
ALTER TABLE user4 ADD PRIMARY KEY(id);
刪除主鍵:
CREATE TABLE user5(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20) NOT NULL
);
刪除主鍵時會報錯,原因是這塊定義了一個自動增長的屬性,這個屬性是配合主鍵使用的,所有必須先去掉auto_increment。
#將id的auto_increment去掉
ALTER TABLE user5 MODIFY id INT UNSIGNED;
應先去掉自動增長,再刪除主鍵。
新增唯一、刪除唯一性索引。
alter table tb_name add unique key index index_name(欄位名稱);
alter table tb_name drop unique index_name;
#測試唯一索引,新增刪除唯一索引
CREATE TABLE user6(
id INT UNSIGNED AUTO_INCREMENT KEY,
username VARCHAR(20)NOT NULL UNIQUE,
PASSWORD CHAR(32)NOT NULL,
email VARCHAR(50)NOT NULL UNIQUE
);
#測試刪除唯一索引username和email
ALTER TABLE user6
DROP INDEX username;
#新增唯一性索引
ALTER TABLE user6
ADD UNIQUE KEY(username);
索引的名字預設是欄位的名稱。
#新增並指定唯一性索引的名稱
ALTER TABLE user6
ADD UNIQUE INDEX uni_email(email);
表結構這塊的操作:
修改資料表名稱:
alter table table_name rename [to|as] new_tb_name;
或者rename table tb_name to new_tb_name;
#將user6改為user66
ALTER TABLE user6
RENAME TO user66;
#將user66改為user6
ALTER TABLE user66
RENAME AS user6;
如果是以rename開始的,to不能省略。
rename table user66 to user6;
#建立資料表user-id tinyint 欄位
#新增一個username欄位 varchar(5) not null
#一次新增兩個欄位 password char(32) not null email varchar(10) not null
#給email欄位新增預設值 '[email protected]'
#將username欄位改為username 型別varchar(20)not null
#將password欄位改為password char(40) not null
#給id欄位新增主鍵索引
#給id欄位新增aito_increment屬性
#給username欄位新增唯一索引
#給Email欄位新增唯一索引名稱為uni_email
#在一次新增2個欄位 age tinyint unsigned default 18 加到password之後
#addr varchar(20) not null default '北京'
#刪除addr的預設值
#刪除password的唯一索引
#刪除Email唯一索引
#刪除主鍵索引
#重新命名user表new_user
#用rename將表名重新命名為user
CREATE TABLE IF NOT EXISTS USER(
id TINYINT
);