mysql知识点回顾
数据库与表
创建数据库
CREATE DATABASE [数据库名];
选择数据库
USE [数据库名];
显示所有数据库
SHOW DATABASES;
创建数据表
CREATE TABLE (
<字段> <类型> <约束>,
<字段> <类型> <约束>,
...
<字段> <类型> <约束>
) DEFAULT CHARSET=utf8;
延伸:类型
https://www.runoob.com/sql/sql-datatypes-general.html
延伸:约束
AUTO_INCREMENT -- 自动递增
NOT NULL -- 不为空
UNIQUE -- 唯一 # 一个表可能存在多个唯一
PRIMARY KEY -- 主键【NOT NULL + UNIQUE】 # 一个表只能有一个主键
FOREIGN KEY -- 外键
CHECK -- 符合条件
DEFAULT -- 默认值
显示所有数据表
SHOW TABLES;
显示创建数据库或者特定MySQL语句
SHOW CREATE DATABASE [数据库名];
SHOW CREATE TABLE [数据表名];
删除数据库&数据表
DROP DATABASE [数据库];
DROP TABLE [数据表];
清空数据表
TRUNCATE TABLE [数据表];
修改数据表
ALTER TABLE [数据表] ADD [列名] [类型] -- 增
ALTER TABLE [数据表] DROP COLUMN [列名] -- 删
ALTER TABLE [数据表] MODIFY [列名] [类型] -- 改
数据表四大操作: [增] + [删] + [改] + [查]
[增]
INSERT INTO -- 向数据表插入新数据
方式一:无需指定列名
INSERT INTO [数据表名]
VALUES (
value1, value2, value3,
...
);
方式二:指定列名
INSERT INTO [数据表名] (
column1, column2, column3,
...
)
VALUES (
value1, value2, value3,
...
);
难点:
INSERT INTO SELECT 与 SELECT INTO FROM
insert into scorebak select * from socre where neza='neza' -- 插入一行,要求表 scorebak 必须存在
select * into scorebak from score where neza='neza' -- 也是插入一行,要求表 scorebak 不存在
[删]
DELETE -- 从数据表删除数据
DELETE FROM [数据表] WHERE some_column=some_value; # 慎用DELETE,因为如果没有设WHERE条件,就会删除数据表所有数据
[改]
UPDATE [数据表]
SET column1=value1, column2=value2, ...
WHERE some_column=some_value; # 注意UPDATE,因为如果没有设WHERE条件,就会更新数据表所有数据
[查]
SELECT column1, column2, ...
FROM table_name;
延伸: 查询连接 UNION
UNION条件:
- 内部的每个SELECT语句必须拥有相同数量的列
- 列也必须拥有相似的数据类型
UNION: 没有重复
UNION ALL: 可以重复
排序
SELECT column1, column2, ...
FROM [数据表]
ORDER BY column ASC|DESC, column ASC|DESC -- 升序|降序
聚合
SELECT column1, aggregate_function(column2)
FROM [数据表]
WHERE column [条件]
GROUP BY column1
HAVING aggregate_function(column2); # WHERE不能和聚合函数一起使用,因此使用HAVIING
延伸: 表连接 JOIN
JOIN【INNER JOIN】 -- 内连接
LEFT JOIN -- 左连接
RIGHT JOIN -- 右连接
FULL JOIN -- 全连接【MySQL没有】
延伸:
聚合函数 SQL Aggregate 函数
AVG() -- 返回平均值
COUNT() -- 返回计数
MAX() -- 返回最大值
MIN() -- 返回最小值
SUN() -- 总和
日期函数 DATE 函数
NOW() -- 返回当前日期和时间
CURDATE() -- 返回当前日期
CURTIME() -- 返回当前时间
DATE() -- 提取日期或日期/时间表达式的日期部分
EXTRACT() -- 返回日期/时间的单独部分
DATE_ADD() -- 向日期添加指定时间间隔
DATE_SUB() -- 向日期减去指定时间间隔
DATEDIFF() -- 返回两个日期的天数
DATE_FORMAT() -- 用不同的格式显示日期/时间
视图
[新增+更新]
CREATE VIEW [视图名] AS
SELECT column, column, ...
FROM [数据表]
WHERE condition;
[删除]
DROP VIEW [视图名];
索引
[增]
方式一: 允许重复
CREATE INDEX [索引名]
ON [数据表名] (column1,column2);
方式二: 不允许重复
CREATE UNIQUE INDEX [索引名]
ON [数据表名] (column1,column2);
[删]
ALTER TABLE [数据表名] DROP INDEX [索引名];
其他
显示用户权限
SHOW GRANTS;
显示异常或者错误
SHOW ERROR;