MySQL
1. DDL(Data Defination Language) 数据定义语言
用来定义数据库对象,包括数据库,表,列等.
相关关键字包括:CREATE
,DROP
,ALTER
等.
2. DML(Data Manipulation Language) 数据操作语言
用来对数据库中的数据进行增删改查.
相关关键字包括:INSERT
,DELETE
,UPDATE
等.
3. DQL(Data Query Language) 数据查询语言
用来查询数据库表中的记录/数据.
相关关键字包括:SELECT
,WHERE
等.
4. DCL(Data Control Language) 数据控制语言
用来定义数据库访问权限和安全级别.
相关关键字包括:GRAND
,REVOKE
等.
5. TCL(Transaction Control Language) 事物控制语言
用来管理事务.
相关关键字包括:COMMIT
,ROLLBACK
等.
终端操作
- 登录本地MySQL服务(用户终端
./MySQL/MySQL/MySQL Server 8.0/bin>
)
mysql -u root -p
-u 指定用户名
-p 使用密码登录
- 创建数据库
CREATE DATABASE <dbname>;
- 查看当前已经存在的数据库
SHOW DATABASES;
- 删除数据库
DROP DATABASE <dbname>;
- 切换数据库
USE <dbname>;
- 创建表
CREATE TABLE <tablename> (
# 表的结构定义
<列名> <数据类型> [<其他设置>],
...
<列名> <数据类型> [<其他设置>],
)
数据类型:
## 数值类型
- 整数类型: INTEGER/INT , SMALLINT , TINYINT , MEDIUMINT , BIGINT
- 定点类型: DECIMAL , NUMERIC
- 浮点类型: FLOAT , DOUBLE
## 日期类型
- DATE , DATETIME , TIMESTAMP , TIME , YEAR
## 字符串类型
- CHAR , VARCHAR , BINARY , VARBINARY , BLOB , TEXT , ENUM , SET
其他设置:
- DEFAULT
- PRIMARY KEY
- 查询表结构
DESC <tablename>;
- 修改表结构
## 修改列的数据类型
ALTER TABLE <tablename> MODIFY COLUMN <列名> <新数据类型>;
## 修改列名
ALTER TABLE <tablename> RENAME COLUMN <列名> to <新列名>;
## 添加列
ALTER TABLE <tablename> ADD COLUMN <列名> <数据类型>;
## 删除列
ALTER TABLE <tablename> DROP COLUMN <列名>;
## 添加其他设置
ALTER TABLE <tablename> MODIFY <列名> <类型> <其他设置>;
- 清空表
TRUNCATE TABLE <tablename>;
- 删除表
DROP TABLE <tablename>;
数据的增删改查
- 增
INSERT INTO <tablename> [(<列名1>, <列名2>)] VALUES (<数据1>, <数据2>);
可以在后面用逗号隔开继续写
(<数据1>, <数据2>)
表示添加多组数据如果没有写
(<列名1>, <列名2>)
表示后面根据定义时的默认顺序赋值没有赋值也没有默认值的值为NULL
INSERT INTO <tablename> <查询结果>;
- 删
DELETE FROM <tablename> WHERE <condition>;
WHERE
:用来按照指定的条件过滤数据.
- 改
UPDATE <tablename> SET <列名>=<新数据> WHERE <condition>;
- 查
列名
用*
代替表示所有列
select <列名> from <tablename> [WHERE <condition>];
select <列名> from <tablename> ORDERED BY <列名1> [DESC];
表示根据
列名1
升序排列加上
DESC
表示降序排列
:
## AND / OR 条件连接
- <condition1> [AND|OR] <condition2>
## NOT
- NOT <condition>
## LIKE:用在where子句中搜索满足指定<模式>的值
- <列名> LIKE '<模式>'
## REGEXP:用在where子句中搜索满足指定<正则表达式>的值
- <列名> REGEXP '<正则表达式>'
## is / <=>
- <列名> [is|<=>] NULL
## BETWEEN:用来选取介于<数据1>和<数据2>之间的数据
- <列名> BETWEEN <数据1> AND <数据2>
## IN
- <列名> IN (<数据1>, <数据2>, ...)
正则表达式:
- 任意一个字符: .
- 开头: ^
- 结尾: $
- 其中一个字符: [abc]
- 范围内一个字符: [a-z]
- A或者B: A|B
- 多个字符: *
SELECT <列名>, <聚合函数(列名)> FROM <tablename> WHERE <condition> GROUP BY <列名> HAVING <聚合函数(列名)> <运算符> <数据>
聚合函数():
## 聚合函数
- 返回集合平均值: AUG()
- 返回集合中的项目数: COUNT()
- 返回最大值: MAX()
- 返回最小值: MIN()
- 求和: SUM()
- 四舍五入: ROUND()
GROUP BY
结合聚合函数使用,根据一个或多个列队结果集进行分组.
HAVING
用于筛选分组后的数据
## DISTINCT:数据去重
SELECT DISTINCT <列名> FROM <tablename>;
## LIMIT:限定返回记录的条数
SELECT <列名> FROM <tablename> LIMIT <数字>;
<子句1> [UNION|INTERSECT|EXCEPT] <子句2>;
子句就是那些select语句
UNION
:并集,默认去重,UNION ALL
不去重
INTERSECT
:交集
EXCEPT
:差集
- 表关联
SELECT <列名> FROM <tablename1> [INNER JOIN|LEFT JOIN|RIGHT JOIN|FULL JOIN] <tablename2> ON <tablename1>.<列名> = <tablename2>.<列名>;
INNER JOIN
:内连接
LEFT JOIN
:左连接
RIGHT JOIN
:右连接
FULL JOIN
:全连接
索引
在多数据时,提高查找效率
- 创建索引
CREATE INDEX <indexname> ON <tablename>(<列名>);
- 查询索引
SHOW INDEX FROM <tablename>;
- 删除索引
DROP INDEX <indexname> ON <tablename>;
- 给其他列添加索引
ALTER TABLE <tablename> ADD <indexname>(<列名>)
- 数据的导出
mysqldump -u root -p <dbname> [<tablename>] > <文件名>.sql
- 数据的导入
mysql -u root -p <dbname> < <文件名>.sql
使用cmd,不要用powershell