mysql知识点回顾

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;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。