mysql笔记

-通用语法及分类

mysql笔记_第1张图片
SQL通用语法
1.SQL语句可以单行或多行书写,以分号结尾。
2.SQL语句可以使用空格/缩进来增强语句的可读性。
3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
4.注释:
单行注释:–注释内容或#注释内容(MySQL特有)
·多行注释:/注释内容/

DDL-数据库操作

查询

  • 查询所有数据库
    SHOW DATABASES;
  • 查询当前数据库
    SELECT DATABASE();
  • 创建
    CREATE DATABASE 「 IF NOT EXISTS ] 数据库名「DEFAULT CHARSET字符集] [ COLLATE排序规则];
  • 删除
    DROP DATABASE [ IF EXISTS]数据库名;
  • 使用
    USE 数据库名;

DDL-表操作-查询

  • 查询当前数据库所有表
    SHOW TABLES;
  • 查询表结构
    DESC表名;
  • 查询指定表的建表语句
    SHOW CREATE TABLE表名;

mysql笔记_第2张图片
mysql笔记_第3张图片
mysql笔记_第4张图片
常用DATE TIME DATETIME三种

DDL-表操作-修改

添加字段

  • ALTER TABLE表名ADD字段名类型(长度),[COMMENT注释][约束];
    案例:
    ==为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)

DDL-表操作-修改

  • 修改数据类型
    ALTER TABLE表名MODIFY字段名新数据类型(长度);
  • 修改字段名和字段类型
    ALTER TABLE表名CHANGE旧字段名新字段名类型(长度) [COMMENT注释] [约束];
  • 修改表名
    ALTER TABLE表名RENAME TO新表名;
  • 删除表
    DROP TABLE[ IF EXISTS]表名;
  • 删除指定表,并重新创建该表
    TRUNCATE TABLE表名;

DML增删改

DML英文全称是Data Manipulation Language(数据操作语言),用来对数据库中表的数据记录进行增删改操作。
添加数据(INSERT)

修改数据(UPDATE)
删除数据(DELETE)

  1. 给指定字段添加数据
    INSERT INTO表名(字段名1,字段名2,…)VALUES(值1,值2,…) ;

  2. 给全部字段添加数据
    INSERT INTO表名VALUES(值1,值2,…);

  3. 批量添加数据
    INSERT INTO表名(字段名1,字段名2,…)VALUES(值1,值2.….),(值1,值2,…),(值1,值2,…);
    INSERT INTO表名VALUES(值1,值2,…),(值1,值2,…),(值1,值2,…);

  4. 修改数据
    UPDATE表名SET字段1=值1,字段2=值2[WHERE条件];

  5. 删除数据
    DELETE FROM表名[ WHERE冬件];

DQL查询

  • SELECT
    字段列表
  • FROM
    表名列表
  • WHERE
    条件列表
  • GROUP BY
    分组字段列表
  • HAVING
    分组后条件列表
  • ORDER BY
    排序字段列表
  • LIMIT
    分页参数

1.查询多个字段
SELECT字段1,字段2,字段3… FROM表名;
SELECT * FROM 表名;
2.设置别名
SELECT字段1 [AS别名1],字段2[ AS 别名2]… FROM表名;
3.去除重复记录
SELECT DISTINCT字段列表FROM表名;
mysql笔记_第5张图片
聚合函数
mysql笔记_第6张图片
注意:null值不参与所有聚合函数运算。
mysql笔记_第7张图片

-排序查询

  1. 语法
    SELECT 字段列表 FROM表名[ WHERE条件 ] GROUP BY分组字段名[ HAVING分组后过滤条件];
  2. where与having区别
    执行时机不同: where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。判断条件不同: where不能对聚合函数进行判断,而having可以。

执行顺序: where >聚合函数>having

排序方式
ASC:升序(默认值)DESC:降序

-分页查询

语法:
SELECT 字段列表 FROM 表名 LIMIT 起始索引, 查询记录数;

例子:

-- 查询第一页数据,展示10条
SELECT * FROM employee LIMIT 0, 10;
-- 查询第二页
SELECT * FROM employee LIMIT 10, 10;

注意事项

  1. 起始索引从0开始,起始索引 = (查询页码 - 1) * 每页显示记录数
  2. 分页查询是数据库的方言,不同数据库有不同实现,MySQL是LIMIT
  3. 如果查询的是第一页数据,起始索引可以省略,直接简写 LIMIT 10

mysql笔记_第8张图片

DCL

管理用户
查询用户:

USER mysql;
SELECT * FROM user;

创建用户:
CREATE USER ‘用户名’@‘主机名’ IDENTIFIED BY ‘密码’;

修改用户密码:
ALTER USER ‘用户名’@‘主机名’ IDENTIFIED WITH mysql_native_password BY ‘新密码’;

删除用户:
DROP USER ‘用户名’@‘主机名’;

例子:

-- 创建用户test,只能在当前主机localhost访问
create user 'test'@'localhost' identified by '123456';
-- 创建用户test,能在任意主机访问
create user 'test'@'%' identified by '123456';
create user 'test' identified by '123456';
-- 修改密码
alter user 'test'@'localhost' identified with mysql_native_password by '1234';
-- 删除用户
drop user 'test'@'localhost';

注意事项
主机名可以使用 % 通配
权限控制
常用权限:

-用户管理

权限 说明
ALL, ALL PRIVILEGES 所有权限
SELECT 查询数据
INSERT 插入数据
UPDATE 修改数据
DELETE 删除数据
ALTER 修改表
DROP 删除数据库/表/视图
CREATE 创建数据库/表
更多权限请看权限一览表

权限控制

查询权限:
SHOW GRANTS FOR ‘用户名’@‘主机名’;

授予权限:
GRANT 权限列表 ON 数据库名.表名 TO ‘用户名’@‘主机名’;

撤销权限:
REVOKE 权限列表 ON 数据库名.表名 FROM ‘用户名’@‘主机名’;

注意事项
多个权限用逗号分隔
授权时,数据库名和表名可以用 * 进行通配,代表所有

函数-字符串函数

CONCAT(s1, s2, …, sn) 字符串拼接,将s1, s2, …, sn拼接成一个字符串
LOWER(str) 将字符串全部转为小写
UPPER(str) 将字符串全部转为大写
LPAD(str, n, pad) 左填充,用字符串pad对str的左边进行填充,达到n个字符串长度
-RPAD(str, n, pad) - -右填充,用字符串pad对str的右边进行填充,达到n个字符串长度-
TRIM(str) 去掉字符串头部和尾部的空格
SUBSTRING(str, start, len) 返回从字符串str从start位置起的len个长度的字符串

-- 拼接
SELECT CONCAT('Hello', 'World');
-- 小写
SELECT LOWER('Hello');
-- 大写
SELECT UPPER('Hello');
-- 左填充
SELECT LPAD('01', 5, '-');
-- 右填充
SELECT RPAD('01', 5, '-');
-- 去除空格
SELECT TRIM(' Hello World ');
-- 切片(起始索引为1)
SELECT SUBSTRING('Hello World', 1, 5);

数值函数

mysql笔记_第9张图片

日期函数

mysql笔记_第10张图片

流程函数

mysql笔记_第11张图片

约束

mysql笔记_第12张图片

你可能感兴趣的:(mysql,数据库,笔记)