个人总结:Sql(一:创建&删除&修改库&表||附:mysql数据类型及默认值)
createdatabase
创建表使用create database DNAME;
存在的话会失败,严谨的写法如:
create database if not exists DBNAME;
两条语句在java中执行差别待验证(高亮备忘)
指定库中默认编码:
create database if not exists DNAME default charset utf8 collate utf8_general_ci;
create table
create table TNAME(
CNAME1 DTYPE [OPTION]
[, CNAME2 DTYPE [OPTION]]
);
[OPTION]:约束
primary key:主键约束(包含not null、unique)
not null:非空约束
unique:唯一约束(包含not nul)
foreign key:外键约束
check:限制列中的值的范围(包含not null)
default:默认值
auto_increment:自动增长
创建表并指定表中默认编码&数据库引擎:
create table TNAME default charset utf8 collate utf8_general_ci
Eg:
注:
多个约束条件用空格分隔
auto_increment=100可以修改起始值
varchar(n),n为字符的个数:一个字符:’男’ ,’a’
** 多个列定义 PRIMARY KEY**
** 多约束怎么add??**
alterdatabase
待续
altertable
在表中添加列
alter table TNAME
add COLNAME DTYPE;
改变后数据默认值:附录
删除表中的列
alter table TNAME
drop COLNAME ;
改变列的数据类型
alter table TNAME
modify column COLNAME DTYPE;
改变列的名称
alter table TNAME
change column OLD_COLNAME NEW_COLNAME DTYPE;
同时改变列的名称和数据类型是(被)允许的
当列中有数据时,改变列名称,不改变列的数据类型(也可能相兼容数据,高亮备注待验证),是可以的。
原来int列a:123变为varchar列aa :123数据保留,int自动转化为varchar类型
当列中有数据时,改变列的数据类型且不兼容,是可以的,但产生警告,原数据丢失。
修改约束
primary key
添加primary key:
alter table TNAME
add primary key(COLNAME);
删除primary key:
alter table TNAME
drop primary key;
Not null
** 待研究,高亮备忘**
unique
添加unique:
alter table TNAME
add unique(COLNAME);
删除unique:
alter table TNAME
drop index COLNAME;
foreign key
外键约束以一对多关系为例
新增外键:
一:ONETABLE(实例:phone,主键: PRIKEY) 多:MUTTABLE(实例:user,新增外键列:FKWY)
需要FKWY存在:
alter table MUTTABLE
add foreign key(FKWY) references ONETABLE(ONETABLE_PRIKEY)
eg:
此处仅仅对列进行了命名,并未对外键关系命名,外键关系为默认名:
使用如下:
alter table MUTTABLE
add constraint FOREIGN_KEY_NAME
foreign key(FKWY) references user(PRIKEY); |sdkg|可对外键关系命名
eg:
由于外键不包括not null约束,在表中有数据的情况下是可以添加外键的。
多外键添加:
alter table MUTTABLE
add constraint FOREIGN_KEY_NAME1
foreign key(FKWY1) references ONETABLE1 (PRIKEY)
[,add constraint FOREIGN_KEY_NAME2 foreign key(FKWY2) references ONETABLE2 (PRIKEY)];
删除外键:
alter table MUTTABLE
Drop foreign key FOREIGN_KEY_NAME;
或者
alter table MUTTABLE
drop constraint FOREIGN_KEY_NAME
注意:FOREIGN_KEY_NAME是外键关系名,而非列名
check:限制列中的值的范围(包含not null)
default:默认值
auto_increment:自动增长
DTYPE:附录
mysql数据类型及默认值:
默认值是指新建不制定n的长度 不赋值的大小 修改表后默认值
未完待续…