常用的语法格式如下:
ALTER TABLE <表名> [修改选项]
修改选项的语法格式如下:
{ ADD <列名> <类型> ---------------添加字段
| CHANGE <旧列名> <新列名> <新列类型> --------------修改字段名称
| ALTER <列名> { SET DEFAULT <默认值> | DROP DEFAULT } -----------修改字段默认值或者删除字段默认值
| MODIFY <列名> <类型> -----------------修改字段数据类型
| DROP <列名> --------------------删除字段
| RENAME TO <新表名> } ------------------修改表名
修改数据库表的某个字段默认值
如果数据库表中该字段有默认值,需要先删除其默认值:
alter table 表名 alter column 字段名 drop default;
若没有默认值就直接设置即可:
alter table 表名 alter column 字段名 set default 默认值;
mysql 添加字段 修改字段为not null
1.添加一个字段
ALTER TABLE 表名 ADD 字段名 VARCHAR(16);
2.修改字段为not null,还要把原来的类型也写出来
ALTER TABLE 表名 MODIFY 字段名 VARCHAR(16) NOT NULL;
3.更改列名
alter table 表名 change 旧列名 新列名 新类型 not null;
练习:牛客
1.存在actor表,包含如下列信息:
CREATE TABLE actor (
actor_id smallint(5) NOT NULL PRIMARY KEY,
first_name varchar(45) NOT NULL,
last_name varchar(45) NOT NULL,
last_update datetime NOT NULL);
现在在last_update后面新增加一列名字为create_date, 类型为datetime, NOT NULL,默认值为’2020-10-01 00:00:00’。
#1.添加字段
#alter table `actor` add create_date datetime;
#2.修改字段为not null
# alter table `actor` modify create_date datetime not null;
#3.设置字段的默认值
#alter table `actor` alter column create_date set default '2020-10-01 00:00:00';
#或者
alter table `actor` add create_date datetime not null default '2020-10-01 00:00:00';
创建表的时候创建外键:
CREATE TABLE t_book(
id int primary key auto_increment,
bookName varchar(20),
author varchar(10),
price decimal(6,2),
bookTypeId int,
constraint `fk` foreign key (`bookTypeId`) references `t_bookType`(`id`)
);
已经创建好表,添加外键:
alter table 表名 add constraint FK_ID(外键名称) foreign key(你的外键字段名) REFERENCES 外表表名(对应的表的主键字段名);
alter table tb_active add constraint FK_ID foreign key(user_id) REFERENCES tb_user(id)
row_number、rank、dense_rank、ntile
四大排名函数