动态添加默认值,删除默认值。
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字段添加默认值 imooc@qq.com
ALTER TABLE user2
ALTER email SET DEFAULT 'imooc@qq.com';
先选中表名,再选中字段。
--删除字段默认值。
#删除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 'imooc@qq.com'
ALTER TABLE user3
CHANGE email userEmail VARCHAR(100) DEFAULT 'imooc@qq.com';
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字段添加默认值 'imooc@qq.com'
#将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
);