1. 程式人生 > >MySQL資料庫(六)__2018.11.13

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
);