MySQL
MySQL 命令
数据库
-- 创建数据库
CREATE DATABASE database_name;
-- 删除数据库
DROP DATABASE database_name;
-- 选择数据库
USE database_name;
数据表
-- 创建数据表
CREATE TABLE table_name (
column1 datatype,
column2 datatype,
...
);
-- 创建数据表案例
-- AUTO_INCREMENT 自增
-- PRIMARY KEY 主键
-- NOT NULL 不为空
-- BOOLEAN 布尔类型
-- DEFAULT TRUE 默认为 TRUE
-- ENGINE=InnoDB 设置存储引起为InnoDB
-- CHARACTER SET utf8mb4 设置字符集为utf8mb4
-- COLLATE utf8mb4_general_ci 设置排序规则为utf8mb4_general_ci
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL,
email VARCHAR(100) NOT NULL,
birthdate DATE,
is_active BOOLEAN DEFAULT TRUE
)ENGINE=InnoDB CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
-- 删除数据表
DROP TABLE table_name ;
增/删/该数据
-- 插入数据
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
-- 更新数据
-- 一般需要通过WHERE来控制更新的数据范围
-- 防止全表更新这种错误操作
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
-- 删除数据
-- 通过WHERE控制数据范围,防止全部数据被删除
DELETE FROM table_name
WHERE condition;
查数据
SELECT * FROM table_name;
-- 条件查询
SELECT column1, column2, ...
FROM table_name
WHERE condition;
---------------------------------------------------------------------------------
-- 分页查询
SELECT column1, column2, ...
FROM table_name
LIMIT [offset] rows
-- 返回前10行数据
LIMIT 10
-- 从第21行开始,返回21~30的数据
LIMIT 20,10
---------------------------------------------------------------------------------
-- 模糊查询
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;
-- pattern为模糊匹配的模型,包含通配符
-- 通过符有_与%,_为匹配一个字符,%匹配多个字符
-- 通常使用%进行模糊匹配
-- 匹配a开头的数据
Like 'a%'
-- 匹配a结尾的数据
Like '%a'
-- 匹配包含a的数据
Like '%a%'
---------------------------------------------------------------------------------
-- 分组查询
-- GROUP BY通常与聚合函数一起使用
-- 可以根据多个字段分组
-- HAVING 为过滤分组后的数据,不需要可以去掉
SELECT column1, SUM(column2) as count1
FROM table_name
WHERE condition
GROUP BY column1...
HAVING condition;
---------------------------------------------------------------------------------
-- 排序查询
-- ORDER BY 排序ASC升序,DESC降序,默认为ASC升序
-- 可以多字段排序
-- 很多时候配合limit使用
SELECT column1, column2, ...
FROM table_name
ORDER BY column1 [ASC | DESC]...;
---------------------------------------------------------------------------------
-- 连接查询
-- INNER JOIN(内连接,或等值连接):获取两个表中字段匹配关系的记录。
SELECT column1, column2, ...
FROM table1
INNER JOIN table2 ON table1.column_name = table2.column_name;
-- LEFT JOIN(左连接):获取左表所有记录,即使右表没有对应匹配的记录
SELECT column1, column2, ...
FROM table1
LEFT JOIN table2 ON table1.column_name = table2.column_name;
-- RIGHT JOIN(右连接):与LEFT JOIN相反,用于获取右表所有记录,即使左表没有对应匹配的记录
SELECT column1, column2, ...
FROM table1
RIGHT JOIN table2 ON table1.column_name = table2.column_name;
-- UNION 操作符用于连接两个及以上的SELECT语句结果组合到一个结果集中,并去除重复行
-- UNION ALL效果一样,但是不会去除重复行
SELECT column1, column2, ...
FROM table1
WHERE condition1
UNION
SELECT column1, column2, ...
FROM table2
WHERE condition2
NULL值处理
SELECT column1, column2, ...
FROM table_name
-- column1 = NULL
WHERE column1 IS NULL;
-- column1 != NULL
WHERE column1 IS NOT NULL;
ALTER命令(修改命令)
-- 添加列
ALTER TABLE table_name
ADD COLUMN new_column_name datatype;
-- 修改数据类型
ALTER TABLE TABLE_NAME
MODIFY COLUMN column_name new_datatype;
-- 修改列名
ALTER TABLE table_name
CHANGE COLUMN old_column_name new_column_name datatype;
-- 删除列
ALTER TABLE table_name
DROP COLUMN column_name;
-- 添加主键
ALTER TABLE table_name
ADD PRIMARY KEY (column_name);
-- 添加外键
ALTER TABLE child_table
ADD CONSTRAINT fk_name
FOREIGN KEY (column_name)
REFERENCES parent_table (column_name);
-- 修改表名
ALTER TABLE old_table_name
RENAME TO new_table_name;
MySQL函数
MySQL有很多内置函数,这里仅列出比较实用的函数。
MySQL索引
-- 优化查询检测,相关详解请查看MySQL优化这篇文章
explain SQL
-- 查看表文件中已经存在的索引
SHOW INDEX FROM表
-- 创建索引
CREATE INDEX索引名 ON 表名 (字段...)
-- 删除索引
DROP INDEX索引名 on 表名
本文是原创文章,采用 CC BY-NC-ND 4.0 协议,完整转载请注明来自 七十七
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果