SQL
什么是SQL
- Structured Query Language : 结构化查询语句
- 定义了操作所有关系型数据库的规则
- 每一种数据库操作方式存在差异 -> 方言
SQL通用语法
- SQL 语句可以单行或多行书写, 以分号结尾
- 使用空格 或 制表符 增强可读性
- 数据库不区分大小写, 建议关键期使用大写
- 3 种注释:
- 单行注释:
* 注释内容
- 注释内容:
-- 或 # 注释内容
- 多行注释:
/* 注释内容 */
- 单行注释:
SQL 分类
1.DDL (Data Definition Language) 数据库定义语言:
- 用来定义数据库对象: 数据库, 表, 列等.
- 关键字: CREATE, DROP. ALTER 等
1.1操作数据库: CRUD
- C(CREATE): 创建
- 创建数据库 ->
CREATE DATABASE 数据库名称;
- 指定字符集 ->
SET CHARACTER 字符集;
- 判断数据库是否存在 ->
if not EXISTS 数据库名;
- 创建数据库, 判断是否存在, 并指定字符集 ->
CREATE DATABASE if not EXISTS 数据库名称 SET character 字符集;
- 创建数据库, 判断是否存在, 并指定字符集 ->
- 指定字符集 ->
- R(RETRIEVE): 查询
- 查询所有数据库的名称 ->
SHOW DATABASES
; - 查看某个数据库的创建信息 ->
SHOW CREATE DATABASE 数据库名称;
- U(UPDATE):修改
- 修改数据库的字符集 ->
ALTER DATABASE ~~数据库名称~~ CHARACTER SET ~~字符集~~;
- 修改数据库的字符集 ->
- D(DELETE):删除
- 删除数据库 ->
DROP DATABASE ~~数据库名称~~
- 判断是否存在, 删除 ->
DROP DATABASE if EXISTS ~~数据库名称~~
- 判断是否存在, 删除 ->
- 使用数据库
- 查询当前正在使用的数据库名称 ->
SELECT DATABASE();
- 使用数据库 ->
USE ~~数据库名称~~;
1.2操作表
- C(CREATE): 创建
CREATE TABLE ~~表名~~( 列名1 数据类型1, 列名2 数据类型2, ... 列名n 数据类型n );
- 数据类型
int
- 整数类型double(len, save)
- 小数类型(长度, 精度)- 日期类型
DATE
- 只包含年月日, yyyy-MM-ddDATETIME
- 年月日时分秒(yyyy-MM-dd HH:mm:ss)TIMESTAMP
- 时间错类型: 年月日时分秒(yyyy-MM-dd HH:mm:ss)- 如果没有赋值,或赋值为null,则默认使用当前系统时间来自动赋值
varchar(len)
- 字符串类型(字符长度) 汉字为两个字符
- 复制表 ->
CREATE TABLE ~~表名~~ LIKE ~~复制目标名~~;
- 创建学生表:
CREATE TABLE student( -> id INT, -> name VARCHAR(32), -> age INT, -> score DOUBLE(4,1), -> brithday DATE, -> insert_time TIMESTAMP(0) DEFAULT(CURRENT_TIMESTAMP(0)) -> );
- R(RETRIEVE): 查询
- 查询某个数据库中所有表的名 ->
SHOW TABLES;
- 查询表结构 ->
DESC ~~表名~~;
- 查询某个数据库中所有表的名 ->
- U(UPDATE):修改
- 修改表名 ->
ALTER TABLE ~~表名~~ RENAME TO ~~新表名~~;
- 修改表字符集 ->
ALTER TABLE ~~表名~~ CHARACTER SET ~~字符集~~;
- 添加列 ->
ALTER TBALE ~~表名~~ ADD ~~列名~~ ~~数据类型~~;
- 修改列名 / 类型
*ALTER TABLE ~~表名~~ CHANGE ~~列名~~ ~~新列名~~ ~~新数据类型~~;
ALTER TABLE ~~表名~~ MODIFY ~~列名~~ ~~新数据类型~~;
- 删除列 ->
ALTER TABLE ~~表名~~ DROP ~~列名~~;
- 修改表名 ->
- D(DELETE):删除
- 删除表 ->
DROP TABLE ~~表名~~;
- 删除列 ->
ALTER TABLE ~~表名~~ DROP ~~列名~~;
- 删除表并创建一样的空表 ->
TRUNCATE TABLE ~~表名~~;
- 删除表 ->
2.DML (Data Manipulation Language) 数据库操作语言:
- 用来对数据库中的表的数据进行增删改
- 关键字:
INSERT
,DELETE
,UPDATE
等
- 添加数据
- 语法 ->
INSERT INTO ~~表名~~(列名1,列名2,...,列名n) VALUES(值1,指2,...,值n);
- 注意:
- 列名和值要对应
- 如果表名后, 不定义列名, 则默认给所有列添加值
- 除了数字类型, 其它类型需要使用引号
- 注意:
- 语法 ->
- 删除数据
- 语法 ->
DELETE FROM ~~表名~~ [WHERE ~~条件~~];
- 语法 ->
- 修改数据
UPDATE ~~表名~~ SET 列名1=值1,列名2=值2,...,列名n=值n [WHERE 条件];
3.DQL (Data Query Language) 数据库查询语句:
- 用来查询数据库中的表的记录 (数据)
- 关键字:
SELECT
,WHERE
等 - 详细看目录
- 查询表中的记录
SELECT * FROM ~~表名~~;
4.DCL (Data Control Language) 数据库控制语言:
- 用来定义数据库的访问权限和安全级别, 及创建用户
- 关键字:
GRANT
,REVOKE
等