SQL相关指令整理
SQL是用于数据库查询,删改等的一种语言,方便对数据库进行操作。本文主要讲述MySQL下的SQL相关指令。 每一行指令结束记得写分号;
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
1 表
数据库管理着表以及表和表之间的关系,表中存储着数据,我们绝大多数的操作也都是针对于表。
数据表由行(row)和列(column)组成,是一个二维的网格结构。每个列都是一个字段,每一行是一个记录。字段由字段名称和字段的数据类型以及一些约束条件组成。
常见的约束条件:
NOT NULL:该字段的值不能为空
PRIMARY KEY: 主键,有唯一约束,不能为空,
FOREIGN KEY:外键,数据表2中索引数据表1中主键的键
NOT NULL: 非空约束
UNIQUE : 唯一约束
DEFAULT :如果插入数据时没有给该字段赋值,则使用默认值
1.1 数据类型
常见的数据类型有数值型,字符串类型和日期时间类型:
数值型
- 整数型
- TINYINT 非常小的整数
- SMALLINT 小整数
- MEDIUMINT 中等大小的整数
- INT 正常大小的整数
- BIGINT 大整数 - 浮点型(近似值)
- FLOAT 一个小的(单精度)浮点数
- DOUBLE 正常大小(双精度)浮点数 - 定点型(精确值)
- DECIMAL 定点数
字符串型
- CHAR
- VARCHAR
CHAR(X)的长度确定,VARCHAR(X)的长度可变,当X=5时,对于CHAR若输入一个字符,会用空格补齐 - BINARY
- VARBINARY
- BLOB
- TEXT
- ENUM
- SET
日期时间类型
- TIME
- DATE
- DATETIME
- TIMESTAMP
- YEAR
1.2表的创建
对于postgresSQL,创表的时候必须显示定义主键。对于MySQL,当创建表时没有显示定义主键时。首先判断表中是否有非空的整形唯一索引,如果有,则该列为主键(这时候可以使用 select _rowid from table 查询到主键列);如果没有符合条件的则会自动创建一个6字节的主键(该主键是查不到的).
所以创表的时候还是应该显示定义主键。
CREATE TABLE <table_name> (
column_name1 type1,
column_name2 type2,
...
column_nameN typeN
);
#例:
CREATE TABLE IF NOT EXISTS user(
id INT,
account VARCHAR(50) NOT NULL,
name VARCHAR(20) NOT NULL,
age INT,
gender ENUM('male','female','unknown') DEFAULT 'unknown',
PRIMARY KEY(id)#如果多个字段组合成一个主键,用逗号隔开。
#也可以在定义id时直接写成 id INT PRIMARY KEY
);
1.3 表的删除
DROP TABLE <table_name>;
);
#例
DROP TABLE user;
1.4 表的修改
使用ALTER TABLE。
1)加入column
ALTER TABLE <table_name>
ADD