mysql 第1章 创建数据库 mysql 第1章 创建数据库

2022-07-14

①、创建

USE test;
SELECT DATABASE();
SHOW TABLES;
SHOW TABLES FROM mysq1;
CREATE TABLE tb1( 
    id SMALLINT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(20) NOT NULL UNIQUE KEY DEFAULT '',
    age TINYINT UNSIGNED,
    salary FLOAT(8,2) UNSIGNED NULL
)ENGINE=InnoDB;
SHOW COLUMNS FROM tb1; //查看数据表结构

②、约束

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

  • 默认约束:DEFAULT

  • 主键约束:PRIMARY KEY

  • 非空约束:NOT NULL

  • 外键约束:FOREIGN KEY,1.父表和子表必须使用相同的存储引擎,而且禁止使用临时表。2.数据表的存储引擎只能为InnoDB。3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。4.外键列和参照列必须创建索引。如果外键列不存在索引的话,MySQL将自动创建索引。

CREATE TABLE provinces( 
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT, 
    pname VARCHAR(20) NOT NULL
);
CREATE ABLE users(
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
    username VARCHAR(10)NOT NULL,
    FOREIGN KEY(pid)REFERENCES provinces (id) ON DELETE CASCADE
);
SHOW INDEXES FROM provinces \G;
  • 1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行

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

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

  • 4.NOACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

③、utf8_general_ci/cs、utf8_unicode_ci、utf8_bin

utf8_general_cs:区分大小写(cs:case sensitiveci 大小写敏感)

utf8_general_ci:不区分大小写,校对快、准确度差(ci:case insenstive 大小写不敏感)

utf8_unicode_ci:不区分大小写,校对慢、准确度高

utf8_bin:区分大小写,可存储二进制内容

④、mysql 中 char、varchar、text 的区别

A、char的总结:

char 最大长度是 255 字符,注意是字符数和字符集没关系。可以有默认值,尾部有空格会被截断。

B、varchar的总结:

varchar 的最大长度 65535 是指能存储的字节数,其实最多只能存储 65532 个字节,还有 3 个字节用于存储长度。
注意是字节数这个和字符集有关系。一个汉字字符用 utf8 占用 3 字节,用 gbk 占用 2 字节。可以有默认值,尾部有空格不会截断。

C、text的总结:

text 和 varchar 基本相同。text 会忽略指定的大小这和 varchar 有所不同,text 不能有默认值。尾部有空格不会被截断。
text 使用额外的 2 个字节来存储数据的大小,varchar 根据存储数据的大小选择用几个字节来存储。
text 的 65535 字节全部用来存储数据,varchar 则会占用 1-3 个字节去存储数据大小。

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开微信扫一扫,即可进行扫码打赏哦

阅读 706