MySQL入门很简单-新建、修改、删除表
create database test;
use test;
create table 表名(属性名 数据类型 [完整性约束条件], ..., 属性名 数据类型);
完整性约束条件:
1.primary key,主键,可以唯一标识对应的元组,值非空且唯一,可以是单一字段也可以是多个字段组合;
2.foreign key, 外键
3.not null,标识属性不能为空
4.unique,标识该属性值唯一
5.auto_increment,标识属性值自增
6.default,默认值
1、主键
create table example1(stu_id int primary key, stu_name varchar(20), stu_sex boolean);
多字段主键,在表属性定义完成之后统一设置,primary key(属性名1, ... , 属性名n)
create table example2(stu_id int, course_id int, grade float, primary key(stu_id, course_id));
2、外键
外键必须依赖于数据库中已存在的父表的主键,外键可以为空,作用是建立与父表的关联关系。子键的外键关联必须是父表的主键,数据类型必须一致。
constraint 外键别名 foreign key(属性1.1, ..., 属性1.n) references 表名(属性2.1, ..., 属性2.n)
create table example3(id int primary key, stu_id int, course_id int, constraint c_fk foreign key(stu_id, course_id) references example2(stu_id, course_id));
3、设置表的非空约束
非空性指字段的值不能为空值,非空约束保证所有记录中该字段都有值。
属性名 数据类型 NOT NULL
4、设置表的唯一性约束
唯一性指所有记录中该字段的值不能重复出现。在创建表时为表的某些特殊字段加上unique约束条件。
属性名 数据类型 UNIQUE
5、设置属性值字段增加,auto_increment约束的字段可以是任何整数类型(tinyint smallint int bigint)
属性名 数据类型 auto_increment
默认自增字段从1开始自增;如果第一条记录设置了该字段的初值,则新增加的记录由初值开始自增。通常情况下,id字段的约束条件有auto_increment,且将id字段作为主键。
6、设置表的属性的默认值
属性名 数据类型 default 默认值
create table example7(id int primary keyanto_increment, stu_id int unique, name varchar(20) not null, english varchar(20)default 'zero', math float default 0, computer float default 0);
查看表结构describe语句和show create table语句
describe 表名; //describe可以缩写为DECS,因此也可以 desc 表名,显示字段、字段数据类型、是否为空、是否主外键、默认值、额外信息(如auto_increment)
show create table 表名; //代码后加\G参数可使查询的表结构比较美观,显示字段、字段数据类型、是否为空、是否主外键、默认值、额外信息(如auto_increment),还可以查出表的存储引擎、字符编码等。
修改表是指修改数据库中已存在的表的定义。通过alter table语句修改表的定义,包括修改表名、修改字段数据类型、修改字段名、增加字段、删除字段、修改字段的排列方式、更改默认存储引擎和删除表的外键约束。
alter table 旧表名 rename [to] 新表名; //to是可选参数,存在与否不影响语句的执行
alter table 表名 modify 属性名 数据类型; //修改数据字段类型, alter table user modify name varchar(30);
alter table 表名 change 旧属性名 新属性名 新数据类型; //alter table user change stu_name name varchar(30); change可以在修改字段类型的同时修改字段名
alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first | after 属性名2]; //first为可选字段将新增的字段设置为表的第一个字段, after 属性名2将新增字段添加到属性名2的字段后, 无约束则添加到表的最后一个字段。alter table user add address varchar(30) not null after phone
alter table 表名 drop 属性名; //删除某字段
alter table 表名 modify 属性名1 数据类型 first | after 属性名2; //修改字段的排列位置,修改字段为表的第一个属性位置或将字段的位置置于属性2后 alter table user modify adress varchar(30) after sex;
alter table 表名 engine=存储引擎名; //alter table user engine=MyISAM,如果表中已存在很多数据,最好不要轻易更改存储引擎
alter table 表名 drop foreign key 外键别名;//alter table example3 foreign key c_fk; 添加外键,alter table example3 add constraint c_fk foreign key(stu_id, course_id) references example2(stu_id, course_id)
删除表 drop table 表名;
删除被其他表关联的父表:可以先删除子表再删除父表;先删除子表的外键约束
字段名修改后,部分约束条件丢失:在执行修改名称的操作时,加上与原字段相同的约束条件。修改字段的数据类型时,也要加上约束条件防止约束条件丢失。
设置外键,必须先建立父表,父表中的被依赖字段必须是主键或者组合主键中的一个。
自增字段没有默认值,在未设置初值的情况下默认从1开始增加。插入记录若记录中设置了处置,则下一条记录从该字段的值得基础上+1.