• mysql-完整性约束条件


    PRIMARY :   主键

    AUTO_INCREMENT  : 自增长

    FOREIGN KEY : 外键

    NOT NULL : 非空

    UNIQUE KEY : 唯一

    DEFAULT :  默认值

    主键:

    -- 主键:不能重复,不能为空
    -- 
    CREATE TABLE user1(
    -- id INT KEY,  可以省略掉PRIMARY
    id INT PRIMARY KEY,
    username VARCHAR(20)
    );
    
    -- 复合主键或多字段主键
    CREATE TABLE user2(
    id INT,
    username VARCHAR(20),
    card CHAR(18),
    PRIMARY KEY(id,card)
    );

    自增长:

    -- 自增长:t一个表中只能有一个自增长字段,而且一定要配合主键使用
    -- 自增长字段一定是主键,但主键不一定是自增长的
    CREATE TABLE user3(
    id SMALLINT KEY AUTO_INCREMENT,
    username VARCHAR(20)
    -- 最后加上AUTO_INCREMENT=100是指自增长的超始值,如果不加就从1开始
    )AUTO_INCREMENT=100;
    -- 插入数据
    INSERT user3 VALUES(1, 'king');
    -- 如果不指定id,则在已有的id最大值+1
    INSERT user3(username) VALUES('queen');
    -- id字段给NULL或DEFAULT, 也是自增长
    INSERT user3 VALUES(NULL, 'queen2');
    INSERT user3 VALUES(DEFAULT, 'queen2');
    
    -- 如果在定义表的时候没有设置自增长起始值,后来也可以修改;
    -- 修改之后添加的数据从修改的起始值开始
    ALTER TABLE user3 AUTO_INCREMENT =500;

    非空:

    -- 非空, NULL就是一个空值,如果给一个非空字段一个NULL, 也会报错的
    -- 没有标记为非空的字段,默认是可以为空的
    CREATE TABLE user4(
    id INT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL,
    -- 密码字段一般用加密的,返回一个32位长度
    password CHAR(32) NOT NULL,
    -- age 可以为空,当不给值是,默认为NULL
    age TINYINT UNSIGNED
    );

    默认值:

    -- 默认值 DEFAULT
    CREATE TABLE user5(
    id INT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL,
    password CHAR(32) NOT NULL,
    age TINYINT UNSIGNED DEFAULT 18,
    addr VARCHAR(50) NOT NULL DEFAULT '北京',
    sex ENUM('', '', '保密') NOT NULL DEFAULT ''
    );
    
    -- 添加数据, DEFAULT表示使用默认值
    INSERT user5(username,password) VALUES('KING', '123');
    INSERT user5 VALUES(3,'QUEEM','123',DEFAULT,DEFAULT,'保密');

    唯一性:

    -- 唯一性约束
    -- 一个表中只能有一个主键,但可以有多个唯一
    -- 这里要注意,card不是NOT NULL, 可以为空,NULL是不算重复的
    CREATE TABLE user6(
    id TINYINT UNSIGNED KEY AUTO_INCREMENT,
    username VARCHAR(20) NOT NULL UNIQUE,
    card CHAR(18) UNIQUE
    );

    完整的创建table:

    -- 完整的创建表的方法
    CREATE TABLE [IF NOT EXISTS] tb_name(
    字段名称 字段类型 [UNSIGNED|ZEROFILL] [NOT NULL] [DEFAULT 默认值] [[PRIMARY] KEY | UNIQUE [key]] [AUTO_INCREMENT]
    )ENGINE=INNODB CHARSET=UTF8 AUTO_INCREMENT=100;
  • 相关阅读:
    jvm gc 日志详细信息的输出(一)
    带宽与数据传输速率
    功率半导体器件
    超链接标签a样式生效,取消下划线,文字垂直(上下)居中
    防范诈骗
    去掉table中的空隙
    html中使用js实现内容过长时部分
    背景色透明度设置
    jQuery给标签写入内容
    多个div居中显示
  • 原文地址:https://www.cnblogs.com/huangxm/p/5736306.html
Copyright © 2020-2023  润新知