1,表是在库中,每个数据库包含N张表
一般是二维表的形式
2,由行和列组成:可以将复杂的数据保存在简单的表中
表中的每一行就是一条完整的记录
表中的列用于保存每条记录中特定的信息
1,使用sql语句创建表
语法格式为:create table 表名(
字段名1 字段类型1 [完整性约束],
字段名2 字段类型2 [完整性约束],
.....
字段名n 字段类型n [完整性约束]
)
需要注意的是:
1,表名不能使用关键字 例如database select where
2,每组字段名之间使用英文逗号隔开 但最后一个不需要逗号
例如创建一个学生信息表student(id,name,gender,age)
create table Student (
id int(6),
name varchar(20),
gender varchar(1),
age int(2)
);
2,使用图形化界面创建
点击选择的库名—双击—右键—new table
1,查看表的基本结构
desc 表名;
例如查看Student表的基本结构:desc Student;
2,查看表的详细结构(查看存储引擎和字符集)
show create table 表名;
3,修改表结构
a,修改表名
alter table 旧表名 rename 新表名
例如将Student表名修改为t_student:alter table Student rename t_student;
b,修改字段数据类型
alter table 表名 modify 列名 新字段类型
例如将Student表中id的数据类型 修改为int(10):alter table Student modify id int(10);
c,修改多个字段的数据类型
alter table 表名 modify 列名1 新字段类型1,
modify 列名2 新字段类型2,
......
modify 列名n 新字段类型n;
例如修改Student表中id int(8) name varchar(30)
alter table Student modify id int(8),
modify name varchar(30);
d,修改字段名
alter table 表名 change 旧字段名 新字段名 旧字段类型
例如Student表中gender修改为sex
alter table Student change gender sex varchar(1);
e,修改字段名并修改字段的数据类型
alter table 表名 change 旧字段名 新字段名 新字段类型
例如Student表中gender修改为sex 数据类型改为varchar(2)
alter table Student change gender sex varchar(2);
f,添加字段
alter table 表名 add 字段名 字段类型 [完整性约束] [first |after 字段名] after 是添加到指定字段的后面
例如在表的末尾添加score字段 alter table student add score float;
例如在表第一个位置添加phone字段 alter table student add phone varchar(11) first;
例如在表age的后面添加class字段 alter table student add class varchar(30) after age;
g,删除字段
alter table 表名 drop 列名
例如删除表student中phone
h,删除表
使用sql语句删除 drop table 表名;
使用图形化界面 右键 直接删除表
**
**
1,MySQL支持的完整性约束
约束条件 描述
primary key 主键约束
unique 唯一约束
not null 非空约束
default 默认约束
auto_increment 自动增长约束
foreign key 外键约束
a,主键约束 特点是:唯一且非空
可以由一个字段组成,也可以由多个字段组成
如果主键由一个字段组成,既可以添加到列级,也可以添加到表级
如果由多个字段组成,只能添加到表级
(1)在字段的列级添加约束 creat table 表名(字段名 字段类型 primary key)
例如创建student1表(id name age sex) 其中id为主键
create table student1(
id int(8) primary key,
name varchar(20),
age int(2),
sex varchar(1)
)
(2)在表级上添加主键约束
语法格式为:create table 表名(
字段名1 字段类型1,
字段名2 字段类型2,
.....
字段名n 字段类型n,
[constraint 主键约束名] primary key(字段名)
)
例如创建student1表(id name age sex) 其中id为主键 在表级添加主键约束
create table student2 (
id int(8),
name varchar(20),
age int(2),
sex varchar(1),
constraint pk_student2 primary key (id)
)
(3)多个字段作为主键,只能添加到表级
语法格式为:create table 表名(
字段名1 字段类型1,
字段名2 字段类型2,
.....
字段名n 字段类型n,
[constraint 主键约束名] primary key(字段名1, 字段名2)
)
例如创建student1表(school id name age sex) 其中school和id为主键 在表级添加主键约束
create table student4 (
school varchar(10),
id int(8),
name varchar(20),
age int(2),
sex varchar(1),
constraint pk_student4 primary key (school,id)
)
b,给已有表添加主键约束
语法:alter table 表名 add [constraint 主键约束名] primary key (字段名)
---创建表student5,不加id主键约束
create table student5(
id int(8),
name varchar(20),
age int(2),
sex varchar(1)
)
desc student5;
---表创建完后,添加主键约束
alter table student5 add constraint pk_student5 primary key (id);
c,删除主键约束
语法 alter table 表名 drop primary key;
alter table student5 drop primary key;
unique 唯一约束
唯一约束是指:表中字段的值不能重复
(1)列级添加唯一约束
create table 表名(
字段名1 字段类型1 unique,
字段名2 字段类型2,
.....
字段名n 字段类型n)
例如:创建表student,给name字段添加唯一约束
create table student(
name varchar(20) unique,
age int(2),
gender varchar(1),
phone varchar(11)
)
(2)在表级添加唯一约束
语法格式为:create table 表名(
字段名1 字段类型1,
字段名2 字段类型2,
.....
字段名n 字段类型n,
[constraint 唯一约束名] unique (字段名1, 字段名2)
)
例如:创建表student,给name 和 id 字段添加唯一约束
create table student(
name varchar(5),
phone int(8),
sex varchar(1),
id int(10),
constraint uk_student_id_name unique (name, id)
)
(3)给已有表添加唯一约束
语法:alter table 表名 add [constraint 唯一约束名] unique (字段名1, 字段名2)
---创建表student,先不加id唯一约束
create table student(
name varchar(4),
id int(8),
sex varchar(1),
score int(3)
)
------表创建完后,添加唯一约束
alter table student add constraint uk_student_id unique (id);
(4)删除唯一约束
alter table 表名 drop index 唯一约束名
alter table student drop index uk_student_id;
(如果单个字段没有指定约束名,则默认的唯一约束名为字段名)
(如果多个字段组合为唯一约束时,默认的唯一约束名为第一个字段名)
(如果指定了约束名,则删除的时候直接写约束名)
not null 非空约束
非空约束是指:表中的某字段的值不能为空
需要注意的是:非空约束只能使用列级添加 空字符串 "" 和 0都不是null
(1)列级添加非空约束
语法格式为:create table 表名(
字段名 字段类型 not null
)
例如创建student表,给name添加非空约束
create table student(
name varchar(3) not null,
id int(20),
gender varchar(1)
)
(2)给已有表添加非空约束
alter table 表名 modify 字段名字 字段类型 not null
-----创建表student,先不加id非空约束
create table student(
name varchar(4),
id int(8),
sex varchar(1),
score int(3)
)
------表创建完后,添加唯一约束
alter table student modify gender varchar(1) not null;
(3)删除非空约束
alter table 表名 modify 字段名 字段类型 [null]
alter table student modify gender varchar(1) null;
另外一种写法为:
alter table student modify gender varchar(1);
default 默认值约束
默认值约束是指:在没有对某字段插入具体值的时候去默认的值
注意:
1,只能只能使用列级约束
2,如果插入的数据为null,则不会使用默认值。当没有插入数据的时候,才会使用默认值。
(1)列级添加默认值约束
语法格式为:create table 表名(
字段名 字段类型 default value
)
例如create table student(
name varchar(4),
id int(8),
gender varchar(1) default "男"
)
(2)给已有表添加默认值约束
语法:alter table 表名 modify 字段名 字段类型 default value;
alter table student modify gender varchar(1) default "女";
(3)删除默认值约束
alter table 表名 modify 字段名 字段类型;
例如删除gender的默认值"女":alter table student modify gender varchar(1);
auto_increment 自动增长约束
自动增长约束:是指表中的某字段的值会自动增加
注意:
一张表中只能有一个自动增长的字段
通常配合主键一起使用,并且只适用于整数类型
自动增长的默认初始值为1,每增加一条记录,该字段的值会+1
(1)创建表时候,创建自动增长约束
语法格式为:create table 表名(
字段名 字段类型 auto_increment
)
例如创建表student,给id添加主键和自动增长约束
create table student(
name varchar(20),
id int(8) primary key auto_increment,
gender varchar(1)
)
(2)给已有表添加自动增长约束
语法:alter table 表名 modify 字段名 字段类型 auto_increment
create table student(
name varchar(4),
id int(8) primary key,
gender varchar(1)
)
alter table student modify id int(8) auto_increment;
(3)删除 自动增长约束
语法:alter table 表名 modify 字段名 字段类型
alter table student modify id int(8);
foreign key 外键约束
外键约束:是指某一张表中字段的值依赖于另一张表中某字段的值
例如:班级表class 和 学生表student 二者之间的关系是1:n
作用是:主要实现了数据库中的参照完整性
将两张表紧密结合,对某张表修改或删除的时候,要保证数据的完整性
(1)创建外键约束
注意:虽然MySQL提供了列级添加外键约束,但添加后不会生效。所以要使用表级添加外键约束。
语法格式为:create table 表名(
字段名 字段类型,
[constraint 外键约束名] foreign key (字段名) references 表(字段名)
)
---创建班级表
create table class(
cno int(8) primary key auto_increment,
cname varchar(4)
)
desc class;
---创建学生表
create table student(
cno int(8) primary key auto_increment,
cname varchar(4),
age int(2),
gender varchar(1),
stu_cno int(8)
constraint fk_student_stu_cno foreign key(stu_cno) references class (cno)
)
(2)给已有表中添加外键约束
语法为:alter table 表名 add [constraint 外键约束名] foreign key (字段名) references 表(字段名)
---创建班级表
create table class(
cno int(8) primary key auto_increment,
cname varchar(2)
)
---创建学生表
create table student(
sno int(8) primary key auto_increment,
sname varchar(20),
stu_cno int(8)
)
---给学生表添加外键约束
alter table student add constraint fk_student_stu_cno foreign key(stu_cno) references class(cno);
(3)删除外键约束
语法为:alter table 表名 drop foreign key 外键约束名
例如:alter table student drop foreign key fk_student_stu_cno;
(4)有依赖关系的表删除
a,先删除有外键约束的表,再删除主表 顺序不能颠倒
drop table student;
drop table class;
b,先删除外键约束,再删除表