MySQL 中的SQL(1)

结构化查询语言(英语:Structured Query Language,缩写:SQL),是一种特殊目的之编程语言,用于数据库中的标准数据查询语言,IBM公司最早使用在其开发的数据库系统中。 不过各种通行的数据库系统在其实践过程中都对SQL规范作了某些编改和扩充。所以,实际上不同数据库系统之间的SQL不能完全相互通用。 ### 数据库操作 #### 创建数据库 CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] character_name `{}`表示为必选项,即必填参数。`|`表示选项,即其中选取一项即可。`[]`表示为可选项。 `character_name`参数为指定数据库的编码方式,不填则使用MySQL配置的字符集编码。 #### 查看当前服务器下的数据表列表 SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr] #### 删除数据库 DROP {DATABASE | SCHEMA} [IF NOT EXISTS] db_name #### AUTO_INCREMENT 自动编号,且必须与主键组合使用。 数值型数据。 默认情况下,起始值为1,每次的增量为1。 #### 约束 1.保证数据的完整性和一致性。 2.分为表级约束(针对两个或两个以上的字段进行约束)和列级约束(针对某一个字段进行约束)。 3.类型包括: * NOT NULL 非空约束 * PRIMARY KEY 主键约束 * UNIQUE KEY 唯一约束 * DEFAULT 默认约束 * FOREIGN KEY 外键约束 CREATE TABLE t6(id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY, username VARCHAR(20) NOT NULL UNIQUE KEY, sex ENUM('1', '2', '3') DEFAULT '3'); ![](/uploads/article/2017/05/31/20170531222204_2348.png) INSERT t6 (username) VALUES ('Chars'); ![](/uploads/article/2017/05/31/20170531222257_2158.png) #### 空值与非空值 NULL,字段值可以为空。 NOT NULL,字段值禁止为空。不存在表级约束。 #### PRIMARY KEY 主键约束。 每张数据表只能存在一个主键。 主键保证记录的唯一性。 主键自动为NOT NULL。 **注意:** `AUTO_INCREMENT`必须与`PRIMARY KEY`一起使用。但是,`PRIMARY KEY`不一定与`AUTO_INCREMENT`一起使用。 #### UNIQUE KEY 唯一约束。 唯一约束可以保证记录的唯一性。 唯一约束的字段可以为空值(NULL)。 每张数据表可以存在多个唯一约束。 **注意:UNIQUE KEY与PRIMARY KEY区别** PRIMARY KEY每张数据表只能有一个,且不能为空。 UNIQUE KEY每张数据表可以有多个,且可以为空。 #### 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相同。 **注意:**物理外键即使用FOREIGN KEY关键字定义表。逻辑外键即定义表的时候按照某种联系,但是不使用FOREIGN KEY关键字修饰。 #### 编辑数据表的默认存储引擎 MySQL配置文件 `default-storage-engine=INNODB` 示例: create table provinces(id smallint unsigned primary key auto_increment, pname varchar(20) not null); create table users(id smallint unsigned primary key auto_increment, username varchar(10) not null, pid bigint, foreign key(pid) references provinces(id)); # 报错 # ERROR 1215 (HY000): Cannot add foreign key constraint # 因为类型不匹配 # 正确命令应该是: create table users(id smallint unsigned primary key auto_increment, username varchar(10) not null, pid smallint unsigned, foreign key(pid) references provinces(id)); ![](/uploads/article/2017/05/31/20170531222816_2399.png) ![](/uploads/article/2017/05/31/20170531222837_6549.png)
联系我们

邮箱 626512443@qq.com
电话 18611320371(微信)
QQ群 235681453

Copyright © 2015-2022

备案号:京ICP备15003423号-3