美文网首页
表级操作、约束(键)说明

表级操作、约束(键)说明

作者: MacXin | 来源:发表于2018-03-25 21:01 被阅读0次

    数据表:

    数据表的创建:

        CREATE  TABLE  [IF NOT EXISTS]  table_name (

            column_name data_type,

            ...

        )

        $$:  CREATE TABLE IF NOT EXISTS names_tb(  

                    id SMALLINT UNSIGNED NOT NULL PRIMARY KEY,

                    name VARCHAR(20) NOT NULL DEFAULT ''

                 );

    查看数据库列表: SHOW  TABLES  [FROM db_name]  [LIKE  'pattern'  |  WHERE  expr]

            $$:SHOW TABLES FROM test2_db;

    查看数据表结构: SHOW  COLUMNS FROM tb_name

            $$:SHOW COLUMNS FROM names_tb;

    约束:

        1.约束保证数据的完整性和一致性;

        2.约束分为表级约束和列级约束;

        3.约束类型包括: NOT NULL(非空约束)、PRIMARY KEY(主键约束)、UNIQUE KEY(唯一约束)、DEFAULT(默认约束)、FOREIGN  KEY(外键约束)

            表级约束与列级约束:

            对一个数据列建立的约束,称为列级约束;对多个数据列建立的约束,称为表级约束;列级约束可以在列定义时声明,也可以在列定义后声明;表级约束只能在列定义后声明。

    空值与非空:NULL,字段值可以为空;  NOT  NULL, 字段值禁止为空。

    AUTO_INCREMENT:  自动编号,且必须与主键组合使用;默认情况下,起始值为1,每次的增量为1。

    PRIMARY  KEY:  主键约束;每张数据表只能存在一个主键;主键保证记录的唯一性;主键自动为 NOT  NULL。

    UNIQUE  KEY:  唯一约束;唯一约束可以保证记录的唯一性;唯一约束的字段可以为空值(NULL);每张数据表可以存在多个唯一约束。

    DEFAULT: 默认值;当插入记录时,如果没有明确为字段赋值,则自动赋予默认值。

    FOREIGN  KEY: 保持数据一致性,完整性;实现一对一或一对多关系。

            外键约束的要求:

    1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表; 

    2.数据表的储存引擎只能为InnoDB;  

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

    4.外键列和参照列必须创建索引,如果外键列不存在索引的话,MySQL将自动创建索引。

            外键约束的参照操作

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

    2.SET NULL: 从父表删除或更新行,并设置子表中的外键列为NULL, 如果使用该选项,必须保证子表列没有指定NOT NULL;

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

    4.NO ACTION: 标准SQL的关键字,在MySQL中与RESTRICT相同。

    引擎设置

    设置数据库的默认引擎:?

    查看默认存储殷勤:  SHOW VARIABLES LIKE '%storage_engine%'

            $$:SHOW VARIABLES LIKE '%storage_engine%'

    数据表的修改:

    添加单列: ALTER TABLE tb_name ADD  [COLUMN]  col_name  column_definition  [FIRST  |  AFTER  col_name]

            $$:ALTER TABLE names_tb ADD nick_name VARCHAR(32) NOT NULL DEFAULT '' AFTER name;

    添加多列:ALTER TABLE tb_name ADD  [COLUMN]  (col_name column_definition, ...)

            $$:ALTER TABLE names_tb ADD (sex TINYINT UNSIGNED NOT NULL DEFAULT 0, age TINYINT UNSIGNED NOT NULL DEFAULT 10);

    删除列:ALTER TABLE tb_name  DROP [COLUMN] col_name

            $$: ALTER TABLE names_tb DROP nick_name;

    添加主键约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] PRIMARY  KEY [index_type] (index_col_name, ...)

            $$:ALTER TABLE users ADD PRIMARY KEY (id);    

    添加自增约束: ALTER TABLE tb_name MODIFY col_name col_definition AUTO_INCREMENT

        $$: ALTER TABLE info_tb MODIFY id SMALLINT(5) UNSIGNED auto_increment;

    a添加唯一约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] UNIQUE  [INDEX  |  KEY] [index_name] [index_type] (index_col_name, ...)

            $$:ALTER TABLE users ADD UNIQUE KEY (token);

    添加外键约束:ALTER TABLE tb_name ADD [CONSTRAINT [symbol]] FOREIGN KEY  [index_name]  (index_col_name, ...)  reference_definition

            $$:ALTER TABLE users_info ADD FOREIGN KEY (u_id) REFERENCES users (id);

    添加/删除默认约束:ALTER TABLE tb_name ALTER  [COLUMN]  col_name  {SET  DEFAULT literal  |  DROP  DEFAULT}

            $$:ALTER TABLE users_info ALTER token SET DEFAULT '';

            $$:ALTER TABLE users_info ALTER token DROP DEFAULT;

    删除主键约束:  ALTER TABLE tb_name DROP PRIMARY KEY

            $$:ALTER TABLE names_tb DROP PRIMARY KEY;

    删除唯一约束:ALTER TABLE tb_name DROP {INDEX | KEY} index_name

            $$:ALTER TABLE names_tb DROP INDEX token;

    删除外键约束:ALTER TABLE tb_name DROP FOREIGN KEY  fk_symbol

            $$:ALTER TABLE users_info DROP FOREIGN KEY users_info_ibfk_1;

            删除建立外键时子表外键列建立的索引的key:

            $$: ALTER TABLE users_info DROP KEY u_id;

    修改列定义: ALTER TABLE tb_name MODIFY  [COLUMN] col_name  column_definition   [FIRST |  AFTER  col_name]

            $$: ALTER TABLE names_tb MODIFY token VARCHAR(32) NOT NULL DEFAULT '' AFTER id;

    修改列名称: ALTER TABLE tb_name CHANGE  [COLUMN] old_col_name  new_col_name  column_definition   [FIRST |  AFTER  col_name]

            $$: ALTER TABLE names_tb CHANGE name nick_name VARCHAR(20) NOT NULL DEFAULT '';

    数据表更名:

        1.ALTER  TABLE tb_name RENAME  [TO|AS]  new_tb_name

            $$: ALTER TABLE names_tb RENAME AS test_tb;

        2.RENAME TABLE tb_name  TO new_tb_name [, tb_name 2 TO new_tb_name2]...

            $$:RENAME TABLE test_tb TO info_tb;

    相关文章

      网友评论

          本文标题:表级操作、约束(键)说明

          本文链接:https://www.haomeiwen.com/subject/jsukcftx.html