一、navicat建表,增删改查数据
1、新建表
展开数据库——选择”表”——新建表
添加栏位——写名,类型,主键等——保存
2、修改表的结构
3、没有主键的提示
4、添加、修改数据
二、数据库完整性
为什么需要完整性
输入的类型是否正确?
——年龄必须是数字
输入的格式是否正确?
——身份证号码必须是18位
是否在允许的范围内?
——性别只能是“男”或者“女”
是否存在重复输入?
——学员信息输入了两次是否符合其他特定要求?
——学生的出生日期必须小于入学日期
概念
四种数据完整性
域完整性
实体完整性
引用完整性
自定义完整性
数据类型

char(M):M的范围 0-255
varchar(M):M的范围0-65535
int(M):M代表显示宽度,不影响值得范围,用于值的宽度小于指定的列宽度时从左侧填满宽度。
decimal(M,D):M代表总位数,默认值10,最大值65,D代表小数位数,默认值0
思考
电话号码一般使用什么数据类型存储?
性别一般使用什么数据类型存储?
年龄信息一般使用什么数据类型存储?
照片信息一般使用什么数据类型存储?
薪水一般使用什么数据类型存储?
生日一般使用什么数据类型存储?
非空约束

思考
学员姓名允许为空吗?
家庭地址允许为空吗?
电子邮件信息允许为空吗?
考试成绩允许为空吗?
默认值
主键
主键是确定数据库中的表的记录的唯一标识字段
一个表只能有一个主键
主键列可以是表中的一个字段,也可以包含多个字段
主键的值是唯一的且不为空
尽量选择更新少的一个字段为主键
自增列
自增列的值数据库会自动插入值,这些值自动增长,不需要用户插入数据(用户也可以插入数据)
设置自增列的列必须是主键,数据类型为int(整数)
唯一键
唯一键设置某一列的值是唯一的,可以有空值
一个表中可以有多个唯一键
本质是唯一索引
外键
一个表1使用另一个表2的数据
表2中建立主键,表2是主表
表1中建立外键,表1是子表(外键表)
建立外键时要求外键列和主键列的类型一样
用户表中uid是主键
文章表中的uid要使用用户表中uid列的值
主外键建立后的注意事项
当主表中没有对应的记录时,不能将记录添加到子表
不能更改主表中的值而导致子表中的记录孤立
子表存在与主表对应的记录,不能从主表中删除该行
删除主表前,先删子表
注释:
IDENTITY:标识列
CHECK 约束(CK):检查约束
PRIMARY KEY(PK):主键
UNIQUE KEY(IX):唯一键
FOREIGN KEY(FK):外键
三、数据库模型图
四、命令
查看数据库有哪些表
show tables [from 数据库] [like 'pattern'];
示例:
show tables; -- 查看所有表show tables like 'a%'; -- 查看表名以a开头的表
建表
create table [if not exists] 表名(列名 数据类型 非空|主键|自增列|默认值|唯一键,主键|唯一键|外键);
示例:
create table students(student_no int primary key auto_increment, -- 主键,自增列student_name char(20) not null, -- 非空pwd char(20) default '123456', -- 默认值sid char(20) unique , -- 身份证号是唯一键grade_id int , -- 年级编号[primary key(studnet_no),] -- 主键[unique(sid),] -- 唯一键[constraint fk_stu_grade] foreign key(grade_id) references grade(grade_id) #外键)ENGINE=InnoDB DEFAULT CHARSET=utf8;
说明: 主键和唯一键,在列名后边写了,就不用在所有列后边写了 外键必须在所有列后边写 ENGINE 是存储引擎,InnoDB支持事务 DEFAULT CHARSET是字符集
删表
drop table [if exists] 表名;
示例:
drop table stu; -- 删除stu表drop table if exists stu; -- 如果stu表存在,就删除,不存在,就不删除,可以避免异常
改表
alter table 表名 添加约束|删除约束|操作列;
示例:
create table students(student_no int,student_name char(20) not null, -- 非空pwd char(20) default '123456', -- 默认值sid char(20), -- 身份证号是唯一键grade_id int -- 年级编号)alter table students add primary key(student_no); -- 添加主键alter table students add unique(student_no); -- 添加唯一键alter table students add [constraint fk_stu_grade] foreign key(grade_id) references grade(grade_id) ; #添加外键alter table students drop primary key; -- 删除主键alter table students drop index 约束名; -- 删除唯一键alter table students drop foreign key 约束名; -- 删除外键alter table students add COLUMN sex char(2); -- 添加性别列alter table teacher MODIFY sex varchar(2); -- 修改列的类型alter table teacher change sex sex3 CHAR(2); -- 改列名alter table teacher drop sex3; -- 删除列sex3
重命名表
rename table 旧表名 to 新表名;
示例:
— 把bu表改成bu2表rename table bu to bu2;
查看表的结构
desc 表名;
示例:
— 查看学生表students的结构desc students;




