zoukankan      html  css  js  c++  java
  • MySql 学习之路-高级2

    1
    目录:
    1
    2
    3
    4
    5
    1.约束
     
    2.ALTER TABLE
     
    3.VIEW

    1.约束

      说明:SQL约束用于规定表中的数据规则,如果存在违反约束的数据行为,行为会被约束终止,约束可以在建表是规定,也可以在建表后规定,通过ALTER TABLE 实现.

      语法:

    1
    2
    3
    4
    5
    6
    CREATE TABLE TABLENAME
    (
    COLUMN_NAME1 DATA_TYPE(SIZE) CONSTRAINT_NAME,
    COLUMN_NAME2 DATA_TYPE(SIZE) CONSTRAINT_NAME,
    COLUMN_NAME3 DATA_TYPE(SIZE) CONSTRAINT_NAME
    );

     约束有如下几种常用:

    1
    2
    3
    4
    5
    NOT NULL                          -- 指示某列不能存储NULL值
    UNIQUE                            -- 保证某列的每行必须有唯一值
    PRIMARY KEY                       -- 前2个约束的结合,每个表只能有一个PRIMARY KEY 约束   
    CHECK                             -- 保证列中的值复合指定的条件
    DEFAULT                           -- 规定没有给列赋值时的默认值

    针对以上约束,我们来看下具体的应用实例

      实例1:

    1 CREATE TABLE TABLENAME
    2 (
    3 ID INT NOT NULL AUTO_INCREMENT,
    4 NAME VARCHAR(255) UNIQUE ,
    5 AGE INT ,
    6 CITY VARCHAR(255) DEFAULT 'CHINA',
    7 PRIMARY KEY (ID),
    8 CHECK (AGE > 18)
    9 );

    如果给列起名字或者给多个列附加多个约束可以使用下面的方法

      实例2:

     1 CREATE TABLE TABLENAME
     2 (
     3 ID INT NOT NULL AUTO_INCREMENT,-- 自动填充此列 从1开始
     4 NAME VARCHAR(255) UNIQUE ,
     5 AGE INT ,
     6 CITY VARCHAR(255) DEFAULT 'CHINA',
     7 PRIMARY KEY (ID),
     8 CHECK (AGE > 18)
     9 CONSTRAINT 别名 约束名 (列1,列2,..)
    10 );

    如果多个列添加UNIQUE约束,第9行代码可以改成如下形式

    CONSTRAINT UNIQUE_NAME UNIQUE (AGE,CITY)

    如果多个列添加CHECK约束,第9行代码可以改成如下形式

    CONSTRAINT CHECK_NAME CHECK (AGE>18 AND CITY = 'CHINA')

    我们已经建立表的几个约束,那么如果我们执行如下SQL时会报错

    INSERT INTO TABLENAME VALUES(1,'XUECHAO',22,'CH');
    INSERT INTO TABLENAME VALUES(2,'XUECHAO',15,'CH');

    因为NAME已经添加了UNIQUE约束,AGE添加了CHECK约束

    PS:我还是个菜鸟,理解的不是很全面, 我理解的约束就是这样的,如果您有什么不同的理解,可以评论区告诉我,很感谢!

    2.ALTER TABLE

      说明:前面我们在建表的时候已经添加了约束,如果我们建表的时候没有添加约束,那么我们可以通过ALTER TABLE 在表后添加约束,下面来看看下面的实例

      实例1:

    ALTER TABLE TABLENAME
    ADD UNIQUE (ID);
    或
    ALTER TABLE TABLENAME 
    ADD CONSTRAINT UN_NAME UNIQUE (ID , NAME);

    添加别的约束也是同样的原理和写法

      说明:ALTER TABLE 能够给表附加约束,还有另外一个用途,向表中添加新字段,删除字段,修改字段数据类型(我知道的就这些 ^_^)

      实例2:

    1 ALTER TABLE TABLENAME ADD COLUMN SCORE INT;-- 新增字段SCORE
    2 
    3 ALTER TABLE TABLENAME MODIFY SCORE VARCHAR(255); -- 修改字段数据类型
    4 
    5 ALTER TABLE TABLENAME DROP COLUMN SCORE; -- 删除字段
  • 相关阅读:
    mysql乐观锁总结和实践
    linux使用文本编辑器vi常用命令
    python高级特性-sorted()
    python高级特性-filter
    Python函数式编程-map/reduce
    centos 7.3 快速安装ceph
    python高级特性-迭代器
    python高级特性-生成器
    python高级特性-列表生成
    python高级特性-迭代
  • 原文地址:https://www.cnblogs.com/yanglang/p/9232456.html
Copyright © 2011-2022 走看看