数据表:
数据表的创建:
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;