1.外键约束(保持数据一致,完整。实现一对多或一对一)

父表(参照的表)和子表(有外键列的表)必须使用相同的存储引擎InnoDB,禁止使用临时表。

外键列和参照列必须具有相似的数据类型。其中数字的长度或有符号位必须相同,而字符长度可以不同。

外键列和参照列必须创建索引。外键列不存在索引,mysql将自动创建。

CREATE TABLE t6(
     id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     pname VARCHAR(20) NOT NULL
  );
CREATE TABLE t7(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     username VARCHAR(20) NOT NULL,
    pid SMALLINT UNSIGNED,
    FOREIGN KEY(pid) REFERENCES provinces(id)
 );

可查看索引

SHOW INDEXES FROM t6

1.CASCADE:从父表删除或更新且自动删除或更新子表与之匹配的行

2.SET NULL:从父表删除或更新行,并设置子表中的外键列

3.RESTRICT:拒绝对父表的删除或更新操作

4:NO ACTION:sql关键字,在mysql中与RESTRICT相同

注:一般开发过程中,使用逻辑外键,不使用FOREIGN KEY因为具又局限性。

表级约束与列级约束

对一个数据列建立的约束,称为列级约束

对多个数据列建立的约束,称为表级约束

2.修改数据表,增加字段

ALTER TABLE t7 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10

删除列

ALTER TABLE t7 DROP age

添加约束

ALTER TABLE user2 ADD id SMALLINT NOT NULL

添加主键约束

ALTER TABLE user2 ADD CONSTRAINT PK_user2_id PRIMARY KEY(pid)

添加唯一约束

ALTER TABLE user2 ADD UNIQUE(username);

添加外键约束

ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces(id);

添加默认约束

ALTER TABLE user2 ALTER age SET DEFAULT 15;

删除约束

ALTER TABLE user2 DROP PRIMARY KEY;
ALTER TABLE user2 DROP INDEX username;
ALTER TABLE user2 DROP FOREIGN KEY user2

修改列定义

ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL;

mysql的学习笔记(三)的更多相关文章

  1. MYSQL进阶学习笔记三:MySQL流程控制语句!(视频序号:进阶_7-10)

    知识点四:MySQL流程控制语句(7-10) 选择语句: (IF ELSE ELSE IF CASE 分支)IFNULL函数 IF语法: 语法规则: IF search_condition THEN ...

  2. MYSQL初级学习笔记三:数据的操作DML!(视频序号:初级_24,25,36)

    知识点五:数据的操作DML(24,25,36) 插入数据: --测试插入记录INSERT CREATE TABLE IF NOT EXISTS user13( id TINYINT UNSIGNED ...

  3. MYSQL学习笔记三:日期和时间函数

    MYSQL学习笔记三:日期和时间函数 1. 获取当前日期的函数和获取当前时间的函数 /*获取当前日期的函数和获取当前时间的函数.将日期以'YYYY-MM-DD'或者'YYYYMMDD'格式返回 */ ...

  4. MySql学习笔记三

    MySql学习笔记三 4.DML(数据操作语言) 插入:insert 修改:update 删除:delete 4.1.插入语句 语法: insert into 表名 (列名1,列名2,...) val ...

  5. MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  6. MySQL数据库学习笔记(九)----JDBC的ResultSet接口(查询操作)、PreparedStatement接口重构增删改查(含SQL注入的解释)

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

  7. [Firefly引擎][学习笔记三][已完结]所需模块封装

    原地址:http://www.9miao.com/question-15-54671.html 学习笔记一传送门学习笔记二传送门 学习笔记三导读:        笔记三主要就是各个模块的封装了,这里贴 ...

  8. 基于【 MySql 】二 || mysql详细学习笔记

    mysql重点学习笔记 /* Windows服务 */ -- 启动MySQL net start mysql -- 创建Windows服务 sc create mysql binPath= mysql ...

  9. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  10. MySQL数据库学习笔记(十)----JDBC事务处理、封装JDBC工具类

    [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/4 ...

随机推荐

  1. Java 学习笔记 (五) Java Compile\Build\Make的区别

    以下内容引自: http://blog.51cto.com/lavasoft/436216 Compile.Make和Build的区别 原创leizhimin2010-11-30 11:30:20评论 ...

  2. delete.go

    package api import (     "net/http"     "fmt"     "io/ioutil"     &quo ...

  3. Windows Ubuntu Bash申请免费通配符证书(Let's Encrypt)并绑定IIS

    什么是 Let’s Encrypt? 部署 HTTPS 网站的时候需要证书,证书由 CA 机构签发,大部分传统 CA 机构签发证书是需要收费的,这不利于推动 HTTPS 协议的使用. Let’s En ...

  4. .NET高性能编程 - C#如何安全、高效地玩转任何种类的内存之Span的本质(一)。

    前言 作为.net程序员,使用过指针,写过不安全代码吗? 为什么要使用指针,什么时候需要使用它,以及如何安全.高效地使用它? 如果能很好地回答这几个问题,那么就能很好地理解今天了主题了.C#构建了一个 ...

  5. TensorFlow之DNN(一):构建“裸机版”全连接神经网络

    博客断更了一周,干啥去了?想做个聊天机器人出来,去看教程了,然后大受打击,哭着回来补TensorFlow和自然语言处理的基础了.本来如意算盘打得挺响,作为一个初学者,直接看项目(不是指MINIST手写 ...

  6. MySQL数据同步,出现Slave_SQL_Running:no和slave_io_running:no问题的解决方法

    一.问题描述: 当我们配置好MySQL主主同步时,是可以实现主主同步,但是重启机器后就发现无法同步了. 二.Slave两个关键进程: mysql replication 中slave机器上有两个关键的 ...

  7. [区块链] 拜占庭将军问题 [BFT]

    背景: 拜占庭将军问题很多人可能听过,但不知道具体是什么意思.那么究竟什么是拜占庭将军问题呢? 本文从最通俗的故事讲起,并对该问题进行抽象,并告诉大家拜占庭将军问题为什么在区块链领域作为一个重点研究问 ...

  8. 详解synchronized与Lock的区别与使用

    知识点 1.线程与进程 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程.关系是线程–>进程–>程序的大致组成结构.所以线程是程序执行流的最小单位 ...

  9. css3 之炫酷的loading效果

    css3 之炫酷的loading效果 今天实现了一个炫酷的loading效果,基本全用css来实现,主要练习一下css3的熟练运用 js需要引入jquery 只用到了一点点js 先看效果图 html: ...

  10. vue 设计一个倒计时秒杀的组件

    简介: 倒计时秒杀组件在电商网站中层出不穷  不过思路万变不离其踪,我自己根据其他资料设计了一个vue版的 核心思路:1.时间不能是本地客户端的时间  必须是服务器的时间这里用一个settimeout ...