首页 > 数据库 >老杜MySQL/days.04(约束)

老杜MySQL/days.04(约束)

时间:2022-09-25 17:45:46浏览次数:46  
标签:MySQL 外键 约束 字段名 表名 老杜 unique 主键 days.04

1. 快速创建表(不常用):create  table  表名  as  select  *  from  表名;或 create  table  表名  as  select  字段1,字段2,... from  表名  where  筛选条件;

2. 查询结果插入表(不常用):insert  into  表名  select  字段1,字段2,... from  表名  where  筛选条件;

3. 删除

  delete语句:只是删除记录中的数据,但是数据在硬盘上的存储空间不释放,可以回滚数据,但是效率低;

  truncate语句:物理删除,表被一次截断,不支持回滚,但是很快;

  drop table 表名,删表;

4. 修改表的结构尽量使用可视化工具修改;

5. 约束

  1. 约束种类:非空约束(not null)、唯一性约束(unique)、主键约束(primary key,PK)、外键约束(foreign key,FK)、检查约束(MySQL不支持)

    非空约束:只有列级约束,没有表级约束。没其他好说的,有个知识点,执行sql脚本文件的指令:source  路径 \ 文件名.sql;

    唯一性约束:unique约束的字段值不能重复,但是可以为null;

          多字段复合唯一性约束(unique(字段名1,字段名2));

    主键:不能为空,主键唯一;建议使用int,bigint,char等类型设置主键;设置主键的语法百度;

       单一主键和复合主键,不建议使用联合主键,多字段复合主键(primary(字段名1,字段名2)),在SQL语句最后;

       自然主键(自然数做主键,尽量使用自然主键)和业务主键(和业务相关);

    :如果一个字段同时为 not null 和 unique,自动变成 PK 字段;(oracle不是)

  2. 外键约束(使一个表中的外键字段,必须是另一个表的某个字段的值)

    格式:foreign key(字段名) references 外键的表名(字段名);

    被作为外键的字段,可以为空,但是要有 unique 约束;

    存在外键约束的表的操作顺序:

      删除表:先删子,再删父;

      创建表:先创建父,再创建子;

      删除数据:先删子,再删父;

      插入数据:先插入父,再插入子;

6. 存储引擎:表存储/组织数据的方式,不同的存储引擎,表存储数据的方式不同;

  语句:show  create  table  表名;//可以查看到创建表时候的语句,在最后可以添加 ENGINE 来指定存储引擎,CHARSET 指定字符编码方式

mysql> show create table dept;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                        |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dept  | CREATE TABLE `dept` (
  `DEPTNO` int(2) NOT NULL,
  `DNAME` varchar(14) DEFAULT NULL,
  `LOC` varchar(13) DEFAULT NULL,
  PRIMARY KEY (`DEPTNO`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)  

 

7. 各种存储引擎

      

      

      

 

标签:MySQL,外键,约束,字段名,表名,老杜,unique,主键,days.04
From: https://www.cnblogs.com/LinxhzZ/p/16728339.html

相关文章

  • mysql进阶
    1表的设计     一对一比如一个学生有一个账户,一个账户也只能被一个学生注册一对多可以创建两个表,一个学生表一个班级表  多对多  1号学生选......
  • 老杜MySQL/days.03
    1.数据类型(varchar,char,int,bigint,float,double,date,datetime,clob,blob)varchar:可变长度字符串;存储数据的时候判断字符长度进行空间分配,速度慢;char:固定长度,速度快,容易......
  • 老杜MySQL/days.02
    1.distinct只能出现在所有字段的前方,但是可以结合分组函数使用;2.笛卡尔积:两张表的连接查询不加限制,就会出现;(最终数据条数=两表记录条数的乘积)注:加了限制后,匹配......
  • MySql
    关系型数据库:二维表,都是表结构易于查询,数据存在磁盘中安全,使用通用的SQL语言方便注释--这里有一个空格 或者#DDL:操作数据库,表   数据库操作:showdatabas......
  • 计算机毕业设计 SpringBoot+Vue招投标系统 招标系统 投标系统 招标采购系统Java Vue M
    ......
  • nacos 配置 mysql 本地数据源
    1、登陆https://hub.docker.com/拉取nacos镜像2、运行docker启动命令dockerrun-d\--namenacos-server\-eMODE=standalone-eprefer_host_mode={名称}\-p884......
  • MySQL和Redis的区别
    1.mysql和redis的数据库类型mysql是关系型数据库,主要用于存放持久化数据,将数据存储在硬盘中,读取速度较慢。redis是NOSQL,即非关系型数据库,也是缓存数据库,即将数据......
  • MySQL的主从复制和分库分表初探
    主从复制+分库分表要讲主从复制,首先来看看MySQL自带的日志文件。日志错误日志错误日志是MySQL中最重要的日志之一,它记录了当mysqld启动和停止时,以及服务器在运行......
  • MySql安装后在服务管理器里边找不到MySql服务项的解决办法
    问题:成功安装MySql后,使用mysql的时候,在CMD中输入netstartmysql,提示服务名无效,查看服务列表也找不到mysql服务。解决办法:首先打开CMD,切换到MySql安装目录的MyS......
  • 09第九章:【01】Docker复杂安装—MySQL主从复制
    一、MySQL主从复制原理需要掌握MySQL主从复制原理二、MySQL主从搭建步骤1、创建主服务容器新建主服务器容器实例3307docker run -p 3307:3306 --name mysql......