zoukankan      html  css  js  c++  java
  • Mysql-学习笔记(==》约束 六)

    -- 建立表的相关约束
    主键约束 PRIMARY KEY (主键自带索引 PK 关系数据库领域,要求一个表只有一个主键)
    CREATE TABLE t1(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    tname VARCHAR(30)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    -- 复合主键 有一个重复 按另外一个排
    CREATE TABLE t1(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(30),
    PRIMARY KEY(tid,tname)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    SELECT * FROM t1;
    -- 主键名 CONSTRAINT myhpk
    CREATE TABLE t1(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(30),
    CONSTRAINT myhpk PRIMARY KEY(tid)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    DROP TABLE t1;
    存储引擎
    MYISAM 速度快
    INNODB 事务 外键 (联网售票,银行转账业务,对事物要求高项目)

    默认约束 DEFAULT ‘男’ DEFAULT 18
    CREATE TABLE t1(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(30) NOT NULL COMMENT '老师姓名',
    tage TINYINT UNSIGNED DEFAULT 18,-- 默认年龄
    PRIMARY KEY(tid)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    INSERT INTO t1(tname) VALUES('李老师');
    DROP TABLE t1;
    CREATE TABLE t1(
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(30) NOT NULL COMMENT '老师姓名',
    tdate DATETIME DEFAULT NOW(),-- 当前时间
    tage TINYINT UNSIGNED DEFAULT 18,-- 默认年龄
    PRIMARY KEY(tid)
    )ENGINE=MYISAM AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    SELECT * FROM t1;
    非空约束 NOT NULL
    CHECK 约束(没什么卵用)
    CREATE TABLE t1
    (
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(20),
    tage TINYINT UNSIGNED,
    CHECK (tage>18),
    PRIMARY KEY(tid)
    );
    INSERT INTO t1 VALUES(NULL,'张三',2)
    DROP TABLE t1;


    外键约束 FOREIGN KEY REFERENCES 要求使用外键的表 必须是 INNODB 存储引擎

    -- 根据旧表建立新表 复制结构 不复制内容
    CREATE TABLE ttt LIKE student;

    DROP TABLE job,s,t,student,ttt;


    -- 外键的使用

    CREATE TABLE teacher
    (
    tid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    tname VARCHAR(30) NOT NULL,
    KEY(tname),-- 建立表的时候,同时在tname列建立索引
    PRIMARY KEY(tid)
    )ENGINE=INNODB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
    INSERT INTO teacher VALUES(NULL,'张老师'),(NULL,'李老师'),(NULL,'赵老师');
    SELECT * FROM teacher;
    DROP TABLE teacher;

    CREATE TABLE student
    (
    sid INT UNSIGNED NOT NULL AUTO_INCREMENT,
    sname VARCHAR(30) NOT NULL,
    tid INT UNSIGNED,
    PRIMARY KEY(sid),
    -- constraint fk foreign key(tid) references teacher(tid) -- 建立外键 关联到teacher表
    -- constraint fk foreign key(tid) references teacher(tid) on delete cascade, 删除与之关联项
    CONSTRAINT fk FOREIGN KEY(tid) REFERENCES teacher(tid) ON DELETE SET NULL, -- 删除后,空的内容用null补上
    )ENGINE=INNODB AUTO_INCREMENT=201601 DEFAULT CHARSET=utf8;
    INSERT INTO student VALUES(NULL,'张三',1),(NULL,'赵六三',1),(NULL,'李四',2),(NULL,'王五',1)
    SELECT * FROM student;

  • 相关阅读:
    idea实现快捷批量修改替换
    接口自动化测试:利用环境变量管理测试环境的切换
    接口自动化测试:pytest自定义fixture传参request
    接口自动化测试:python连接mysql方法封装
    接口自动化测试:yaml文件中变量替换
    接口自动化测试:测试数据生成的一个小技巧
    接口自动化测试:抓包方式理解三次握手与四次挥手
    selenium相关:selenium grid的简单用法
    APP测试学习:弱网测试
    APP测试学习:耗电量测试
  • 原文地址:https://www.cnblogs.com/huangf714/p/6148298.html
Copyright © 2011-2022 走看看