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

数据表:

数据表的创建:

    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;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容