欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

MySQL语句(三)补充部分

程序员文章站 2022-05-12 17:27:26
...

表的查询:
SHOW TABLES [ FROM db_name ] [ LIKE ‘pattern’ | WHERE expr];

列的查询:
SHOW COLUMNS FROM tbl_name;

对表添加索引:
ALTER TABLE tbl_name ADD INDEX 索引名 (字段名);

建表时可能会用到的几种条件:

**约束:**保证数据的一致性和完整性

**分类1:**分为列级约束和表级约束。列级约束只能对单个字段起作用,列级可对多个。且列级约束可以再列声明的前后使用,而表级约束只能在列声明以后使用。

**分类2:**分为主键约束、唯一约束、外键约束、默认约束、非空约束。
其中的非空约束NOT NULL和默认约束DEFAULT很好理解,即这一字段不能为空和字段的某一个值使用默认值。这两种都属于列级约束。

(1)主键约束 PRIMARY KEY 一个表中只能有一个主键约束,且默认主键不能为空

(2)唯一约束 UNIQUE KEY 一个表中可以有多个唯一约束,且该字段可以为空

(3)外键约束 FOREIGN KEY 从其他表中参照过来的,实现表的一对一或一对多

     外键约束有一定的使用条件,即父表(被参照的表)和子表(有外键的表)
     要使用相同的存储引擎InnoDB,并且不能是临时表。
     其次,外键所在的列与父表中被参照的列必须有相同的数据类型
     (如果是数字、符号要求其长度要一致;如果是字符,则长度可以不一致)

说到这里,顺便解释一下AUTO_INCREMENT (自动编号),系统中要求它必须与主键PRIMARY KEY放在一起才能使用,不能单独使用;但设定主键时不要求一定有AUTO_INCREMENT。

     例:CREATE TABLE tb1(
            id  SMALLINT  UNSIGNED AUTO_INCREMENT PRIMARY KEY,
            username  VARCHAR(30) NOT NULL
            );

因为外键约束的操作涉及到至少两张表,所以对FOREIGN KEY 进行一下详细介绍:

          CREATE TABLE  XX (
              id  SMALLINT UNSIGNED  PRIMARY KEY AUTO_INCREMENT,
              username VARCHAR(20) NOT NULL,
              pid  SMALLINT UNSIGNED,
              FOREIGN KEY (pid) REFERENCES 参照的表名(参照的列名) ON DELETE CASCADE
              );

从中看出FOREIGN KEY的语法是:

             FOREIGN KEY (子表列名) REFERENCES 父表名(父表列名);

这一例子中用到了之前跳到的自动编号和主键约束、非空约束以及外键约束,而最后使用的CASCADE 的用法是:

                                        ON XX CASCADE

是指“在对父表进行XX操作时(删除或更新等)对子表进行同步的操作”。

除了CASCADE外还可以使用 RESTRICT 和 NO ACTION 来拒绝对父表的删除或更新操作,即父表改变,子表不进行相应变化。

**tip:**想要对有外键的表进行插入(INSERT)操作时,需要先对父表插入,再对子表插入。

下面我们对不同约束的使用进行说明:

①:主键约束的添加和删除

           ALTER TABLE tbl_name  ADD [ CONSTRAINT [ symbol ] ] 
           PRIMARY KEY [ index_type ] (index_col_name);

其中, [ CONSTRAINT [ symbol ] ] 是对创建的主键约束进行命名,可有可无;index_type一般有两种,哈希和B tree ,一般情况下默认为第二种。

删除:

         ALTER TABLE tbl_name DROP PRIMARY KEY ;

②:唯一约束的添加和删除

       ALTER TABLE tbl_name ADD [ CONSTRAINT [ symbol ] ] UNIQUE KEY [ INDEX | KEY ]
       [ index_name] [ index_type ] ( index_col_name,.....);

index_col_name是被添加约束的字段名。

删除:

     ALTER TABLE tbl_name DROP UNIQUE { INDEX | KEY } index_name;

③:外键约束的添加和删除

        ALTER TABLE tbl_name ADD [ CONSTRAINT [ symbol ] ] 
        FOREIGN KEY [ index_name ] ( index_col_name,...)
        reference_definition ;

      例: ALTER TABLE users ADD FOREIGN KEY (子表列名) REFERENCE 参照表名(参照列名);

删除:

       ALTER TABLE tbl_name DROP FOREIGN KEY [ 约束名 ];
       约束名即 [ CONSTRAINT [ symbol ] ]

④:默认约束的添加和删除

      ALTER TABLE tbl_name ALTER [ COLUMN ] col_name 
      { SET DEFAULT litera | DROP DEFAULT };
      litera 是具体值