数据库的CURD操作
创建数据库
CREATE DATABASE `数据库名`;
DROP DATABASE `数据库名`;
USE `数据库名`;
创建表
CREATE TABLE IF NOT EXISTS `表名`(
`列名` 数据类型(长度) NOT NULL AUTO_INCREMENT COMMENT ‘注释’,
PRIMARY KEY(`列名`)
)ENGINE = INNODB DEFAULT CHARSET = utf8mb4
添加外键
KEY `FK_NAME` (`列名`),
CONSTRAINT `约束名` FOREIGN KEY (`列名`) REFERENCES `表名` (`所在表中的列名`)
或
ALTER TABLE `表名`
ADD CONSTRAINT `约束名` FOREIGN KEY (`列名`) REFERENCES `表名` (`列名`);
修改表
ALTER TABLE `表名` RENAME AS `表名`;
ALTER TABLE `表名` ADD `列名` 数据结构(长度);
–修改约束
ALTER TABLE `表名` MODIFY `列名` 数据结构(长度);
–重命名列
ALTER TABLE `表名` CHANGE`列名` `新列名` 数据结构(长度);
–删除表的字段
ALTER TABLE `表名` DROP `列名`;
删除表
DROP TABLE IF EXISTS `表名`;
DML语言
–增
INSERT INTO TABLE_NAME (COLUMN_NAME) VALUES(‘DATA’);
–删
DELETE FROM TABLE_NAME WHERE …;
TRUNCATE:清空一个表,其中表的结构和索引约束不会改变
两者区别:TRUNCATE删除后自增会归零,DELETE不会影响自增
–改
UPDATE TABLE_NAME SET COLUMN_NAME = ‘VALUE’ WHERE…;
当不写where时,修改所有数据
= | 等于 |
---|---|
< > <= != | |
BETWEEN…AND | 在…之间 |
AND | && |
OR | || |
–查
SELECT
FROM
JOIN
WHERE
GROUP BY
HAVING
ORDER BY
LIMIT
查询所有数据
SELECT * FROM TABLE_NAME;
查询指定字段
SELECT COLUMN_NAME FROM TABLE_NAME;
–起别名
SELECT COLUMN_NAME AS 别名 FROM TABLE_NAME AS 别名;
CONCAT(A,B)连接字符串
–去重DISTINCT
SELECT DISTINCT COLUMN_NAME FORM TABLE_NAME;
–查询自增步长
SELECT @@AUTO_INCREMENT_INCREMENT;
模糊查询
%代表0或任意个字符,_代表一个字符
操作符 | 描述 |
---|---|
IS NULL | …操作符为NULL |
IS NOT NULL | |
LIKE | …与…符合 |
IN | 在某个集合中 |
SELECT COLUMN_NAME FROM TABLE_NAME
WHERE COLUMN_NAME LIKE ‘XXX_X%’;
多表查询
JOIN–七种join理论
SELECT COLUMN_NAME FROM TABLE_NAME(主表) AS 主表别名
INNER JOIN TABLE_NAME(从表) AS 从表别名
WHERE 主表别名.COLUMN_NAME = 从表别名.COLUMN_NAME
操作 | 描述 |
---|---|
INNER JOIN | 如果表中至少一个匹配,则返回行 |
LEFT JOIN | 会返回左表中所有的值,即使右表中不匹配 |
RIGHT JOIN | 会右表中返回所有的值,即使左表中不匹配 |
JOIN ON ->连接查询
WHERE ->等值查询
自连接
将一张表拆成两张表
分页与排序
排序
升序ASC,降序DESC
ORDER BY COLUMN_NAME DESC/ASC;
分页
每页只显示几条数据
LIMIT 起始值,页面大小
子查询与嵌套查询
子查询
本质是在WHERE中再嵌套一个SELECT查询语句
MYSQL常用函数
常用函数
数学运算
ABS()取绝对值 CEILING()向上取整 FLOOR向下取整 RANG()返回0到1之间的随机数 SIGN()返回符号
字符串函数
CHAR_LENGTH()返回字符段长度 CONCAT()拼接字符串 INSERT(‘字符串’,位置1,长度,’替换字符串’)在指定位置替换字符串
LOWER()转小写 UPPER()转大写 REPLACE() CURRENT_DATE()获取当前日期
聚合函数
函数名 | 含义 |
---|---|
COUNT(指定列) | 指定列名时会忽略NULL,*和1不会忽略NULL,本质是计算行数 |
SUM() | |
AVG() | |
MAX() | |
MIN() |
GROUP BY COLUMN_NAME 按照什么字段来分组
HAVING 过滤分组记录必须满足的条件
事务
SET AUTOCOMMIT = 0;关闭自动提交事务
SET AUTOCOMMIT = 1;开启自动提交事务
–事务开启
START TRANSACTION; 标记一个事务的开始
–提交事务
COMMIT
–事务回滚
ROLLBACK
SAVEPOINT NAME 设置一个保存点
ROLLBACK TO SAVEPOINT
RELEASE SAVEPOINT 删除保存点
索引
PRIMARY KEY 主键索引 -> 唯一标识,不可重复
UNIQUE KEY 唯一索引 -> 避免重复的列出现,多个列都可标识为唯一索引,但每个列的值不可重复
KEY/INDEX 常规索引 ->默认的,可以用INDEX或KEY设置
FULLTEXT 全文索引 -> 在特定的数据库引擎下有
SHOW INDEX FROM TABLE_NAME
–增加索引
ALTER TABLE TABLE_NAME.COLUMN_NAME ADD INDEX `INDEX_NAME`(`COLUMN_NAME`);
–创建函数
DELIMITER $$ 写函数之前必须写的分隔符
CREATE FUNCTION 函数名()
RETURN 数值类型
BEGIN
END;
权限管理
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/tech/database/288039.html