网站建设费怎么做分录,医药网站源代码,注册入口,备案网站注意事项之前已经介绍了字段以及修饰字段的一些属性#xff0c;根据特定的对象可以将字段进行组合#xff0c;这就有了表的概念#xff0c;接下来介绍一下如何操
作数据表结构。对数据表结构的操作有添加表、修改表、删除表、查看表结构。
添加表
格式#xff1a;create table […之前已经介绍了字段以及修饰字段的一些属性根据特定的对象可以将字段进行组合这就有了表的概念接下来介绍一下如何操
作数据表结构。对数据表结构的操作有添加表、修改表、删除表、查看表结构。
添加表
格式create table [if not exist] 表名( 字段名字1 数据类型 字段名字1 数据类型 )[表选项]
介绍一下每个部分的意思
create table固定格式创建表的意思必填if not exist表示如果表明不存在创建否则不创建选填表名表的名字必填括号中的部分声明的字段格式为字段名 数据类型当有多个字段时使用逗号隔开必填表选项选填charset字符集声明格式CHARSETutf8engine存储引擎格式ENGINEInnoDBauto_increment自增开始值设置auto_increment100..........
实例创建一个user表
CREATE TABLE USER (id bigint(20) NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT 主键,age int(4) DEFAULT NULL COMMENT 年龄,name varchar(30) NOT NULL UNIQUE COMMENT 名称,money decimal(12,2) DEFAULT NULL COMMENT 存款
) ENGINEInnoDB AUTO_INCREMENT3 CHARSETutf8;
修改表
对于表的修改用户可自定义修改表的名称、表选项、表中字段名、字段的类型、添加和删除字段等
实例如下
# 将表student更名为teacher
rename table 旧名 to 新名;
rename table student to teacher;# 修改表的字符集
alter table teacher charset gbk;# 增加一个字段
alter table user add user_score double(5,2) not null default 0.00;# 修改一个字段
alter table user modify score varchar(30) default ;# 修改字段名
alter table user change 旧字段名 新字段名 类型;
alter table user change score score_ssss varchar(30);# 删除字段
alter table user drop score_ssss;# 删除字段上的约束
-- 先查看对应的约束有什么
show create table user;
-- 删除对应的索引
alter table user drop index name;# ..........
删除表
# 删除表
drop table [表名1][表名2][表名。。。]
drop table user;
注意此操作一般不要使用使用也要保证万无一失
查看表结构
# 查看当前数据库下所有表
show tables;# 按着表名关键字查询表
show tables like ‘%关键字’;# 查看表创建语句
show create table user\g;
show create table user\G ;# 查看表中字段信息
desc/describle user;
show columns from user;
在这里说一下表之间的关系因为表是根据具体的业务需求创建的所以表之间有各种关系一般可归为三类
一对一表A中的一条数据和B中一条数据相关表B中的一条数据和A中一条数据相关一对多表A中的一条数据和B中多条数据相关表B中的一条数据只与表A中一条数据相关多对多表A中的一条数据和B中多条数据相关表B中一条数据与表A中多条数据相关
在mysql中有外键这一概念使用外键可以保持表之间的各种关系但是在实际开发中一般不使用外键因为使用外键之后开发人员对数据的可控性会降低数据的操作更多的依赖于外键更有甚者导致系统崩溃所以实际开发中一般使用事务来保持关联表中数据的一致性所以这里只是简单的介绍一下外键的使用而不详细介绍
外键
A表中一个字段非主键指向B表的主键那么这个字段称为外键A表叫做B表的子表B表叫做A表的父表。外键要求本身必须是一个索引普通索引如果字段本身没有索引声明外键时数据库会先创建一个索引然后才会创建外键本身一张表中可以有多个外键但是名字不可相同
外键的新增和删除
# 创建表时就给字段添加外键
create table card (id bigint(20) primary key auto_increment not null, uid bigint(20) not null ,card_number varchar(255) not null,-- 添加外键外键名为f_uid外键是uid字段连接user表的id字段constraint f_uid foreign key(uid) references user(id) );# 创建表之后再添加外键
-- 先创建card表
create table card (id bigint(20) primary key auto_increment not null, uid bigint(20) not null ,card_number varchar(255) not null
);-- 将uid作为外键
alter table card add constraint f_uid foreign key(uid) references user(id);# 外键不可以修改所以需要先删除后修改
# 删除外键 f_uid分两步删外键 --- 删索引因为创建外键时系统自动创建了索引
alter table card drop foreign key f_uid;
alter table card drop index f_uid;外键的作用就是用来约束具有联系的表之间的数据保证数据一致性其约束模式有四种如下
no action默认模式restrict严格模式父表不能删除或更新一个已经被子表数据应用的记录一般不使用cascade级联模式父表的操作子表关联数据跟着操作例如主表数据修改子表对应数据也级联修改一般修改操作使用set null置空模式父表操作之后子表对应的数据外键字段被置空一般删除操作使用
下边写一个实例来介绍一下约束模式的使用在声明主键时在后边加上对应的操作和对应的约束模式即可如下
# 创建外键fk_uid 并且设置约束模式修改时是cascade删除时是set null
alter table card add constraint fk_uid
foreign key(uid) references user(id) on delete set null on update cascade;
使用过程中注意几个地方
1、当设置约束模式时外键字段不要设置为空约束
2、外键名不能重复
3、删除外键时要注意将创建外键时系统创建的索引也删除一般和外键名同名
4、必须保证表的存储引擎是Innodb如果不是外键可以创建成功但是没有约束作用
5、外键字段类型必须与父表的主键类型一致