一、创建一个数据表
create table 表名 (
列名1 数据类型1 [完整性约束条件],
列名2 数据类型2 [完整性约束条件],
列名3 数据类型3 [完整性约束条件],
列名4 数据类型4 [完整性约束条件],
……
列名n 数据类型n
);
表名:所要创建的表的名称
列名:表示表中字段的名称
数据类型:指定参数的数据类型
完整性约束条件:指定字段的某些特殊约束条件
注意:
1、在创建表时,首先需要选择数据库‘use 数据库名’,否则会显示错误
2、一个表中可以有一个或者多个属性,定义时,字母大小写均可,各个属性之间用逗号隔开,最后一个属性后不需要加逗号
二、表的完整性约束条件
primary key : 标识该属性为该表的主键,可以唯一的标识对应的元组
foreign key : 标识该属性为该表的外键,是与之联系某表的主键
not null : 标识该属性不能为空
unique : 标识该属性的值是唯一的
default : 为该属性设置默认值
auto_increment : 标识该属性的值自动增加
三、完整性约束条件
1、设置表的主键
主键的主要目的是帮助以最快的速度找到表中的某一条记录,主键必须满足的条件就是主键必须是唯一的;
表中任意2条的主键的值必须是不同的,主键是非空值;
主键可以是单一的字段,也可以是多个字段的组合;
举例1:设置单个字段的主键
create table example0 ( stu_id int primary key,
stu_name varchar(20),
stu_sex boolean
);
举例2:设置多个字段的主键
create table example1 (
stu_id int,
course_id int,
grade float,
primary key(stu_id,course_id)
);
2、设置表的外键
设置外键的原则就是必须依赖于数据库中已经存在的父表的主键,外键可以为空值
外键的作用是建立该表与其父表的关联关系
3、设置表的非空约束
非空性是指字段的值不能为空值(NULL),非空约束将保证所有记录中该字段都有值
设置表的非空约束是指在创建表时为表的某些特殊字段加上 NOT NULL 约束条件
举例:
create table example4 ( id int not null primary kye,
name varchar(20) not null,
stu_id int,
constraint d_fk foreign key(stu_id)
references example1(stu_id)
);
注释:
stu_id字段为外键,d_fk为外键的别名,example1表为example4表的父表,example4表的外键依赖于父表的主键stu_id
4、设置表的唯一性约束
唯一性是指所有记录中该字段的值不能重复出现
举例:
create table example5( id int primary key,
stu_id int unique,
name varchar(20) not null
);
5、设置表的属性值自动增加
auto_increment是MYSQL中的一个特殊约束条件,其主要作用是为表中新插入的新纪录自动生成唯一的ID;
一个表只能有一个字段使用auto_increment约束,且该字段必须为主键的一部分;
auto_increment约束的字段可以是任何整数类型;
默认情况下,该字段的值是从1开始增加
举例:
create table example6( id int primary key auto_increment,
stu_id int unique,
name varchar(20) not null
);
注释:如果第一条记录设置了该字段的初始值,那么新增加的记录就会从初始值开始增加
6、设置表的属性的默认值
在创建表时可以指定表中字段的默认值,
如果在插入一条新的记录时,没有为这个字段赋值,那么数据库系统会自动为这个字段插入默认值
举例:
create table example7 (id int primary key auto_increment,
stu_id int unique,
name varchar(20) not null,
english varchar(20) default 'zero',
math float default 0,
computer float default 0
);
注释:如果没有使用default关键字指定字段的默认值,也没有指定字段为非空,那么字段的默认值为空NULL
四、查看表结构
查看表结构是指:查看数据库中已经存在的表的定义
1、查看表基本结构的语句:describe
describe语句可以查看表的基本定义:其中包括字段名、字段数据类型、是否为主键和默认值等;
describe语句的语法格式如下:
describe 表名;
describe可以缩写为desc
2、查看表的详细结构语句show create table
该语句可以查看表的字段名、字段的数据类型、完整性约束条件等信息。除此之外还可以查看表的默认的存储引擎和字符编码
show create table的语法格式如下:
show create table 表名;
以整洁的格式显示的语法格式如下:
show create table 表名 \G;
举例:
show create table example \G;
五、修改表
1、修改表名
语法格式:alter table 旧表名 rename [to] 新表名;
举例:alter table example1 rename user;
注释:修改后example1表就不存在了,只存在名为user的新表,但是其内容是一致的,只是换了个名称
2、修改字段的数据类型
语法格式:alter table 表名 modify 属性名 数据类型;
注释:表名指所要修改数据类型的字段的表的名称;
属性名指:所要修改数据类型字段的名称;
数据类型指:修改后的新的数据类型
举例:alter table user modify name varchar(30);
修改前先desc user 修改后再desc user 就会发现name字段的数据类型改变了
3、修改字段名
语法格式:alter table 表名 change 旧属性名 新属性名 新数据类型;
举例:alter table example1 change stu_sex sex int(2);
注释:新数据类型指修改后的数据类型,如不需要修改,则将新数据类型设置成与原来一样
修改整数类型时可能会影响表中的数据,特别注意的是字符类型的字段最好不要修改成整数类型或者浮点数类型
4、增加字段
语法格式:alter table 表名 add 属性名1 数据类型 [完整性约束条件] [first | after 属性名2];
完整性约束条件:是可选参数,用来设置新增字段的完整性约束条件
first:是可选参数,其作用是将新增字段设置为表的第一个字的
after:是可选参数,其作用是将新增字段添加到“属性名2”所指的字段后
如果执行的SQL语句中没有“first”或者“after 属性名2”参数指定新增字段的位置,则新增字段默认为表的最后一个字段
(1)增加无完整性约束条件的字段
举例:alter table user add phone varchar(20);
(2)增加有完整性约束条件的字段
举例:alter table user add age int(4) not null;
(3)表的第一个位置增加字段
举例:alter table user add num int(8) primary key first;
(4)表的指定位置之后增加字段
举例:alter table user add address varchar(20) not null after phone;
5、删除字段
删除字段是删除表中已经定义好的表中的某个字段,删除后其字段所属的数据都会被删除
语法格式:alter table 表名 drop 属性名;
6、修改字段的排列位置
语法格式:alter table 表名 modify 属性名1 数据类型 first|after 属性名2;
(1)字段修改到第一个位置
举例:alter table user modify name varchar(20) first;
(2)字段修改到指定位置
举例:alter table user modify sex tinyint(1) after age;
7、更改表的存储引擎
语法格式:alter table 表名 engine=存储引擎名;
8、删除表的外键约束
**********************************************************************
9、删除表
(1)删除没有被关联的普通表
语法格式:drop table 表名;
(2)删除被其它表关联的父表
删除子表的外键约束,再删除父表
*****************************************************************************