SQL: 结构化查询语句 (Structured Query Language)
DDL 数据定义语句
DDL: 数据定义语句 (Data Definition Language)
库
1 2
| CREATE DATABASE example;
|
1 2 3 4 5
| USE example;
SELECT DATABASE();
|
1 2 3
|
CREATE DATABASE example CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
|
表
1 2 3 4
| CREATE TABLE example;
SHOW TABLES;
|
实例:
要注意的是, 枚举型数据 ENUM
只允许插入字母,下划线和数字的字符组合
因此, 别想着在这里默认插入中文字符
1 2 3 4 5 6 7
| CREATE TABLE example.users( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(10) NOT NULL, gender ENUM("male", "female") NOT NULL DEFAULT "male", age INT(12) NOT NULl, PRIMARY KEY (id) );
|
DML
DML: 数据操作语句 (Data Manipulation Language)
数据添加
1 2 3 4 5
| INSERT INTO example.table (key1, key2, ...) VALUES (value1, value2, ...);
INSERT INTO example.table VALUES ( value1, value2, ...);
|
数据删除
注意, 如果省略了 WHERE
, 整个表的记录都会被删除
1 2
| DELETE FROM example.table WHERE id = 0;
|
数据更新(修改)
一定要指定 WHERE
否则所有记录都将更新
1
| UPDATE table_1 SET colum_1 = data_2 WHERE colum_1 = data_1;
|
DQL
DQL: Data Query Language
特征是以 WHERE
开头
IN 语句
这一语句是用于过滤数据
假设我们有一个名为表 test
, 有 name
和 bender
两个字段
我们只想查询性别为女的行(记录)就可以用到以下语句
1
| SELECT name,bender FROM test WHERE sex IN ("male")
|
多表联合查询
INNER JOIN
内连接
1 2 3
| SELECT colum_1,cloum_2 FROM table_1 INNER JOIN table2 ON table_1.colum_1 = table_2.colum_3
|
分组 GROUP By
DCL
DCL: Data Control Language
1 2 3 4 5 6 7
| CREATE TABLE students ( sid INT NOT NULL AUTO_INCREMENT, stuname VARCHAR(20) NOT NULL, stunum VARCHAR(20) NOT NULL, stuage INT, PRIMARY KEY (sid) );
|
其他
修改 root 账户
进入 mysql
库, 修改 user
表
1 2 3 4 5 6
|
UPDATE mysql.user SET authentication_string=password("密码") WHERE user="root"
UPDATE mysql.user SET authentication_string="密码" WHERE user="root";
|