操作数据表之前需要先打开数据表所在的数据库
Plain
use 库名
添加数据表
Plain
create table [if not exists] 表名(
字段名 数据类型 [约束],
字段名 数据类型 [约束],
......
字段名 数据类型 [约束]
)[ENGINE=MyISAM DEFAULT CHARSET=utf8 collate utf8_general_ci] ;
查看数据表
Plain
show tables 查看当前数据下有哪此数据表
show create talbe 表名 查看建表信息
desc 表名 查看表结构
修改数据表
Plain
/* 增加字段 */
alter table 表名 add [colum] 字段名 数据类型 [约束]
/* 修改字段名 */
alter table 表名 change 字段名 新字段名 数据类型 [约束]
/* 删除字段 */
alter table 表名 drop [colum] 字段名
/* 更改表名 */
alter table 表名 rename [to] 新表名
删除数据表
Plain
drop table 表名
约束
-
约束保证数据的完整性和一致性
-
约束类型包括
-
非空约束 not null
-
主键约束 primary key/key 【id】
-
唯一约束 unique key 可以出现多次
-
默认约束 default
-
外键约束 foreign key
-
![[f08a2bb3-96f0-484a-8155-43dd2bd02922.png]]
![[667ac6d1-947e-4696-a585-cc109a9d3371.png]]
数据实体的完整性
![[d2a90a68-c650-4c05-a0eb-81b3b3246a1d.png]]
字段完整性 引用完整性 自定义完整性
非空约束
null | not null 空约束,字段值允许为null 非空约束,字段值不允许为null,必须赋值 增加非空约束
Plain
create table mebmer(
username varchar(30) not null
);
自增长约束
auto_increment 自增长约束
必须与主键组合使用 默认情况下,起始值为1,增量为1
更改AUTO_INCREMENT初始值: ALTER TABLE 表名称 AUTO_INCREMENT=100 得到最后一次插入的值:last_insert_id()
Plain
create table mebmer(
id int unsigned primary key auto_increment
);
主键约束
primary\] key 主键约束 每张表只能存在一个主键,id 主键必须保证记录的唯一性 主键自动为not null (不能为空) 主键不必与自增长约束同时存在
Plain
create table mebmer(
id int unsigned auto_increment,
primary key (id)
);
唯一约束
unique [key] 唯一约束 用来保证记录的唯一性
唯一约束的字段可以为空值(null)
每张表中可以存在多个唯一约束
Plain
/* 方法一:*/
create table mebmer(
mobile varchar(11) unique
);
/* 方法二:*/
create table mebmer(
mobile varchar(11),
unique key (mobile)
);
默认约束
default 默认约束,当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
Plain
create table mebmer(
sex enum('male','female') default 'male'
);
外键约束
foreign key 外键约束
数据表的存储引擎只能为InnoDB
外键列和参照列必须具有相似的数据类型
参照列必须存在索引
SQL
create table group(
id tinyint unsigned primary key auto_increment,
group varchar(20) unique not null
);
create table mebmer(
gid tinyint unsigned not null,
constraint member_group_key foreign key (gid) references group (id)
);
增加约束
除外键约束外的其它约束
SQL
alter table 表名 change 字段名 新字段名 数据类型 约束
ALTER TABLE 表名 ADD UNIQUE/PRIMARY KEY(字段名称) -- 注意必须有()
alter table 表明 alter 字段名 set default 默认值
外键约束
SQL
alter table 表名 add [constraint [约束名]] foreign key (外键字段名) references 被参照表 (被参照字段名)
删除约束
删除唯一约束
SQL
ALTER TABLE 表名 DROP INDEX 字段名
删除主键约束
SQL
ALTER TABLE 表名 DROP PRIMARY KEY
如果主键列存在自增长约束,删除主键约束前必须先删自增长约束
--- 删除自增长约束
alter table member5 change id id int(5) unsigned;
删除外键约束
SQL
ALTER TABLE 表名 DROP FOREIGN KEY 约束名
删除默认值
SQL
ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT;
思考
学员姓名允许为空吗?
家庭地址允许为空吗?
电子邮件信息允许为空吗?
考试成绩允许为空吗?
在主键列输入的数值,允许为空吗?
一个表可以有多个主键吗?
案例
CSS
/*
例:建立一个学生信息表(student)
定义列sno学号,类型为5位定长字符串,非空,不能重复
定义列sname姓名,类型为8位定长字符串,非空
定义列ssex性别,取值1或0
定义列sage年龄,类型为短整型
定义列sdept系名,数据类型为20位变长字符串
例:建立一个课程信息表(course)
定义列courseid课程号,类型为整型,非空,自动增长,主键
定义列cname课程名,类型为16位变长字符串,非空
例:建立一个学生考试成绩信息表(sc)
定义列grade成绩,类型为整型
自定义其他相关列
要求
把表字段补充完整,可以通过学生表查看学生相关课程的成绩
*/