创建数据库
create database database_name;
删除数据库
drop database database_name;
创建表
//最简单的语法
CREATE TABLE userinfo(
id INT ,
uname VARCHAR(40) ,
address VARCHAR(120) ,
hobby VARCHAR(200) ,
primary key id
);
//包含约束、联合主键、检验约束、enum、注释
CREATE TABLE if not exists userinfo(
id INT AUTO_INCREMENT ,
uname VARCHAR(40) not null ,
phone_number VARCHAR(20) unique,
address VARCHAR(120) default 'china',
hobby_no VARCHAR(200) COMMENT = '爱好',
gender VARCHAR(10) ENUM('男','女'),
age INT check (age>=0 and age<100),
primary key (id,uname)
foreign key(hobby_no )
references hobby(hobby_no )
on update cascade
on delete cascade
)COMMENT = '用户信息表';
添加外键约束
alter table score
add constraint score_constraint
foreign key(student_no) references student(student_no);
外键语法
constraint foreign_key_name foreign key (col_name1 [,col_name2….])
references table_name(col_name1[,col_name2...)])
[on delete {restrict | cascade | set null | no action}]
[on update {restrict | cascade | set null | no action}]
(1)constraint foreign_key_name:定义外键约束和约束名。foreign key (col_name1 [,col_name2….],外键引用的字段表。
(2)外键被定义为表的完整性约束,reference_definition中包含了外键所参照的表和列,还可以声明参照动作。
(3)restrict:当要删除或更新父表中被参照列上在外键中出现的值时,拒绝对父表的删除或更新操作。
(4)cascade:从父表删除或更新行时自动删除或更新子表中匹配的行
(5)set null:当从父表删除或更新行时,设置子表中与之对应的外键列为null。如果外键列没有指定not null限定词,这就是合法的。
(6)no action:no action意味着不采取动作,就是如果有一个相关的外键值在被参考的表里,删除或更新父表中主要键值的企图不被允许,和restrict一样。
(7)set default:作用和set null一样,只不过set default是指定子表中的外键列为默认值。
修改表的注释
ALTER TABLE userinfo COMMENT ‘用户信息资料表’;
修改字段的注释,注意:字段名和字段类型照写就行
ALTER TABLE userinfo MODIFY COLUMN uname VARCHAR(40) COMMENT ‘姓名’;
修改主键
alter table student drop primary key;
alter table student add primary key (student_no);
添加表字段
ALTER TABLE test_table ADD COLUMN add_column VARCHAR (50) NULL DEFAULT NULL COMMENT '添加字段' AFTER `id`;
//after为新增字段位置
varchar为变长度字符串
char为固定长度字符串
varchar使用久了会产生磁盘碎片