Structured Query Language
数据查询 | Select |
---|---|
数据操纵 | Insert、Delete、Update |
数据定义 | Create、Drop、Alter |
数据控制 | Grant、Revoke |
事务处理 | begin transaction、commit、rollback |
指针、游标控制(CCL) | DECLARE CURSOR、FETCH INTO、UPDATE、WHERE CURRENT |
数据库的数据类型
- 数值型
- 整数:INT、BIGINT、SMALLINT、TINYINT
- 小数/浮点数:DECIMAL(p,s)(精确小数,通过字符串的方式存储每一位)、FLOAT、DOUBLE
👉 用法区别: - 钱这种对精度敏感的,一般用 DECIMAL。
- 科学计算、近似计算常用 FLOAT/DOUBLE。
- 字符型
- 定长:CHAR(n)(总是固定长度,不够会补空格)
- 变长:VARCHAR(n)(更常用,按需存储)
- 大文本:TEXT、CLOB
- 日期 / 时间型
- DATE(只存年月日)
- TIME(只存时分秒)
- DATETIME / TIMESTAMP(完整时间戳)
- INTERVAL(时间间隔,PostgreSQL 有)
- 二进制型
- BLOB(Binary Large Object,存图片、音频、视频等)
- 布尔型
- BOOLEAN(值为 TRUE / FALSE,有的数据库用 1/0 表示)
DML:Data Manipulation Language(数据操纵语言)
DDL:Data Definition Language(数据定义语言)
定义
它用来 定义和管理数据库对象的结构,比如表、视图、索引、模式(schema)等等。
比如:
- CREATE:创建数据库、表、视图、索引等
- ALTER:修改表结构(加一列、改数据类型…)
- DROP:删除表、数据库、索引等
- TRUNCATE:清空表数据(但保留表结构)
常用操作
- CREATE(创建)
- 创建数据库
CREATE DATABASE school;
- 创建表
CREATE TABLE student (id INT PRIMARY KEY,name VARCHAR(50),age INT,birthday DATE
);
👉 小提示:定义表时要顺便考虑主键、数据类型、约束。
- ALTER(修改)
- 添加一列
ALTER TABLE student ADD email VARCHAR(100);
- 修改列的数据类型
ALTER TABLE student MODIFY age SMALLINT;
- 删除一列
ALTER TABLE student DROP COLUMN birthday;
- 修改表名
ALTER TABLE student RENAME TO pupil;
- DROP(删除)
- 删除数据库
DROP DATABASE school;
- 删除表(结构和数据一起删光)
DROP TABLE student;
```sql
4. TRUNCATE(清空表数据,但保留结构)
```sql
TRUNCATE TABLE student;
👉 和 DELETE 的区别是:DELETE 属于 DML,可以带条件、可回滚;而 TRUNCATE 属于 DDL,执行后不可回滚,效率更高。
- 约束(Constraints)
DDL 里经常和 CREATE/ALTER 一起用:
- PRIMARY KEY(主键)
- FOREIGN KEY(外键)
- UNIQUE(唯一约束)
- NOT NULL(不能为空)
- CHECK(检查条件)