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');

INSERT t6 (username) VALUES ('Chars');

空值与非空值

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));

联系我们

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

Copyright © 2015-2024

备案号:京ICP备15003423号-3