记录自己学习MySQL笔记.
◆视频教程来自慕课网:
https://www.imooc.com/learn/122
当前用户所打开的数据库:
USE DATABASE();
age TINYINT UNSIGNED,
那表时,最一项不用逗号
在当时数据库下查看其他数据库下的表:
SHOW TABLES FROM my_db;
查看数据表结构:
SHOW COLUMNS FROM tbl_name;
插入记录:
INSERT [INTO] tb1 [(col_name,...)] VALUES(val,...)
column名称如果省略,则需要按照插入全部列对应的VALUE.
记录查找:
SELECT expr,... FROM tb1
NULL,字段值可以为空
NOT NULL, 字段值禁为空
AUTO_INCREMENT
自动编号,且必须与主键组合使用
默认情况下,起始值为1,每次的增量为1
主键约束(primary key)
每张数据表只能存在一个主键
主键保证记录的唯一性
主键自动为NOT NULL
唯一约束(unique key)
唯一约束可以保证记录的唯一性
唯一约束的字段可以为空值(NULL)
每张数据表可以存在我个唯一约束
默认值(DEFAULT)
当插入记录时,如果没有明确为字段赋值,则自动赋予默认值
sex ENUM('M','F','U') DEFAULT 'U'
约束:
约束保证数据的完整性和一致性.
约束分为表级约束和列级约束.
约束类型包括:
NOT NULL
PRIMARY KEY
UNIQUE KEY
DEFAULT
FOREIGN KEY(外键约束)
外键约束:
保证数据一致性,完整性
实现一对一或一对多关联
要求:
1.父表,子表必须使用相同的存储引擎,而且禁止使用临时表
2.数据表的存储引擎只能为InnoDB
3.外键列和参照列必须具有相似的数据类型.其中数字的长度或是否有符号位必
须相同;而字符的长度则可以不同.
4.外键列和参照列必须创建索引.如果外键列不存在索引的话,MySQL将自动创建
索引.
编辑数据表的默认存储引擎
MySQL配置文件
default-storage-engine=INNODB
show create table table_name; -- 显示create database 语句是否能够创建
指定的数据库。
有外键的表称为子表
查看索引:
SHOW INDEXES FROM provinces\G;
外键约束的参照操作
CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
-->FOREIGN KEY(pid) REFERENCE provinces(id) ON DELETE CASCADE
SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL.如果使用该选项
,必须保证子表列没有指定NOT NULL
RESTRICT:拒绝对父表的删除或更新操作
NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同.
物理约束
逻辑约束
表级约束与列级约束
对一个数据列建立的约束,称为列级约束(较多)
对多个数据列建立的约束,称为表级约束(较少)
列级约束即可以在列定义时声明,也可以在列定义后声明
表级约束只能在列定义后声明
修改数据表
添加单列:
>ALTER TABLE users1 ADD password VARCHAR(32) NOT NULL AFTER username;
>ALTER TABLE users1 ADD truename VARCHAR(20) NOT NULL FIRST;
添加多列:
>ALTER TABLE users1 ADD (sex varchar(1), city varchar(10));
删除列:
>ALTER TABLE users1 DROP password;
>ALTER TABLE users1 DROP password, DROP age;
添加主键约束:
>ALTER TABLE users2 ADD contraint pk_users2_id PRIMARY KEY (id);
添加唯一约束:
>ALTER TABLE users2 ADD UNIQUE (username);
添加外键约束:
>ALTER TABLE users2 ADD FOREIGN KEY (pid) REFERENCES provinces (id);
添加/删除默认约束:
>ALTER TABLE users2 ALTER age SET DEFAULT 15;
>ALTER TABLE users2 ALTER AGE DROP DEFAULT;
删除主键约束:
>ALTER TABLE users2 DROP PRIMARY KEY;
删除唯一约束:
>ALTER TABLE users2 DROP INDEX username;
删除外键约束:
>ALTER TABLE users2 DROP FOREIGN KEY users2_ibfk_1;
>SHOW CREATE TABLE users2;
修改列定义:
>ALTER TABLE users2 MODIFY id SMALLINT UNSIGNED NOT NULL first;
>ALTER TABLE users2 MODIFY id TINYINT UNSIGNED NOT NULL;
-->从大类型改成小类型,有可能会造成数据丢失.
修改列名称:
>ALTER TABLE users2 CHANGE pid p_id TINYINT UNSIGNED NOT NULL;
数据表更名:(尽量少用,引用,视图出错可能性)
>ALTER TABLE users2 RENAME users3;
>RENAME TABLE users3 to users2;