之前已经介绍了字段以及修饰字段的一些属性,根据特定的对象可以将字段进行组合,这就有了表的概念,接下来介绍一下如何操

作数据表结构。对数据表结构的操作有添加表、修改表、删除表、查看表结构。

添加表

格式:create table [if not exist] 表名( 字段名字1 数据类型 ,字段名字1 数据类型 )[表选项];

介绍一下每个部分的意思:

create table 固定格式,创建表的意思,必填
if not exist 表示如果表明不存在,创建,否则不创建,选填
表名 表的名字,必填
括号中的部分 声明的字段,格式为:字段名 数据类型,当有多个字段时,使用逗号隔开,必填
表选项(选填) charset 字符集,声明格式:CHARSET=utf8
engine 存储引擎,格式:ENGINE=InnoDB
auto_increment 自增开始值,设置:auto_increment=100
..........

实例,创建一个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 '存款'
) ENGINE=InnoDB AUTO_INCREMENT=3 CHARSET=utf8;

修改表

对于表的修改,用户可自定义修改表的名称、表选项、表中字段名、字段的类型、添加和删除字段等

实例如下:

# 将表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、外键字段类型必须与父表的主键类型一致

7、mysql中的表结构操作相关推荐

  1. mysql导出oracle_如何将mysql中的表结构导出放入oracle中

    展开全部 将mysql中的表结构导出放入oracle中的方法: 1.导出mysql的表结构sql脚本,然后修改mysql中的数据类型为oracle中的数据类型: MySql与Oracle数据类型的62 ...

  2. MySQL中修改表结构的关键字_下列SQL语句中,修改表结构的关键字是

    [单选题]对<将进酒>全诗分析不正确的是 [单选题]下列划线词语的解释有误的一项是 [多选题]下列食品属于不完全蛋白质的是 ( ) . [单选题]下列聚合函数中属性列必须是数值型的是 [单 ...

  3. mysql中查找表结构用什么_MySQL查询表结构命令

    参考网址:https://www.cnblogs.com/zhangyuhang3/p/6873895.html 一.简单描述表结构,字段类型 desc tabl_name; desc tabl_na ...

  4. 在mysql中删除表正确的是什么_在MySQL中删除表的操作教程

    丢弃现有MySQL的表是很容易的.但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失. 语法: 下面是通用的SQL语法丢弃(删除)MySQL表: DROP TABLE table_nam ...

  5. mysql中修改表结构语法_MySQL表结构修改详解

    MySQL修改表的语法 ========================= 增加列[add 列名] ========================= ①alter table 表名 add 列名 列 ...

  6. mysql 中查看表结构的命令

    一   desc命令 缺点是: 确实能够看到order表中的字段名称.字段类型.字段长度.是否允许为空,是否主键.默认值等信息,但看不到该表的索引信息. 二 命令 show  create table ...

  7. mysql 修改表结构方案_MySQL中修改表结构时需要注意的一些地方

    MySql 在修改表结构的时候可能会中断产品的正常运行影响用户体验,甚至更坏的结果,丢失数据.不是所有的数据库管理员.程序员.系统管理员都非常了解Mysql能避免这种情况.DBA会经常碰到这种生产中断 ...

  8. 小汤学编程之MySQL(二)——数据库操作、表结构操作、表数据操作、查询数据和数据类型

    一.数据库操作 1.创建数据库     2.查询数据库     3.修改数据库     4.使用数据库 二.表结构操作 1.创建表     2.查询表     3.修改表     4.删除表 三.表数 ...

  9. mysql word_mysql导出word的表结构操作

    mysql导出word的表结构操作 1.首先准备好mysql的相关插件mysql-connector-odbc和DBExportDoc 百度网盘地址: 2安装驱动 打开DBExportDoc V1.0 ...

最新文章

  1. 卷积学习与图像识别的技术发展
  2. 因为在此系统中禁止执行脚本解决
  3. python课题设计职工信息管理系统_用Python实现职工信息管理系统
  4. 使用DataTable作为存储过程的参数
  5. LeetCode 1838. 最高频元素的频数(二分查找)
  6. LeetCode 653. Two Sum IV - Input is a BST
  7. ACM学习历程—HDU 2112 HDU Today(map spfa 优先队列)
  8. Redis info信息(转载)
  9. 掉价最快的手机排行榜_如何看待2020第一季度手机销量数据。
  10. 【优化调度】基于matlab粒子群算法求解燃机冷热电优化联供问题【含Matlab源码 330期】
  11. 推荐一些学习SEO的优秀书籍附pdf电子书下载地址
  12. WARN: Establishing SSL connection without server‘s identity verification is not recommended 的解决方法
  13. 还在做手搓党和模拟器党?手机投屏电脑玩吃鸡你值得拥有
  14. 2022 IDEA全家桶使用最新主题(免申请)
  15. 雷军的本命年:轮回中的挫败、幸运和逆袭
  16. ELK高级搜索四之Mapping映射和分词器
  17. python爬虫论文参考文献格式_Python爬虫进阶必备 | XX文学加密分析实例
  18. java不同时区时间转换,Java在不同时区转换时间
  19. Dapp开发实战:去中心化NFT交易平台
  20. 计算机系统基础知识——循环冗余校验码(CRC)

热门文章

  1. java实用教程——组件及事件处理——对话框(dialog)
  2. php 4位数字不足补零,php实现数字不足补0的方法
  3. 禁用笔记本键盘_如何禁用/启用笔记本内置键盘?
  4. [Spring5]IOC容器_Bean管理XML方式_p名称空间注入
  5. [SpringBoot2]@MatrixVariableUrlPathHelper
  6. [蓝桥杯2015决赛]机器人数目-枚举
  7. 拦截器如何获取@requestbody_分布式系统中如何优雅地追踪日志(原理篇)
  8. cg word List 1
  9. Java基础知识——Java数组详解
  10. 小 Q 与树(dsu on tree + segment tree)牛客练习赛 81 D