mysql基本知识总结,mysql基本用法
终极管理员 知识笔记 34阅读
MySQL的基础一 SQLSQL的语法特点主要包括以下几点一、 SQL - DDL -- 数据定义语言1.1 数据库操作1.1 显示现有的数据库1.2 创建数据库1.3 删除数据库1.4 使用 1.2 数据表操作1.2.1 表查询1.2.2 表创建1.2.3 修改表 1.2.4 小结 二、SQL - DML -- 数据操作语言2.1 添加数据 insert2.2 修改数据 update2.3 删除数据 delete2.4 总结一下 三、SQL - DQL -- 数据查询语言3.1 语句顺序3.1.1 书写顺序3.1.2 执行顺序 3.2 基本查询SELECT和FROM配合3.2.1.> 查询多个字段3.2.2> 设置别名3.2.3 去除重复记录 3.3 条件查询where3.3.1 SELECT 字段列表 FROM 表名列表 3.4.分组查询GROUP BY3.4.1 学习一下聚合函数一列的整体数据纵向的计算3.4.2 分组3.4.3 WHEREGROUP BY和HAVING3.4.4 排序查询ORDER BY排序字段列表 3.4.5.分页查询LIMIT 四、SQL - DCL -- 数据控制语言4.1 管理用户4.1.1查询用户4.1.2.创建用户4.1.3.修改用户密码4.1.4.删除用户 4.2权限控制4.2.1.查询权限4.2.2.授予权限4.2.3.撤销权限4.2.4.全部权限
SQL

SQL全称为结构化查询语言Structured Query Language是一种用于管理关系数据库的标准计算机语言。它可以用于数据库的创建、查询、更新和修改等操作。
SQL语言包括数据定义语言DDL、数据操作语言DML、数据查询语言DQL)、数据控制语言DCL等部分。
-- 创建表CREATE TABLE Students ( ID INT PRIMARY KEY, Name VARCHAR(20), Age INT);-- 插入数据INSERT INTO Students (ID, Name, Age) VALUES (1, Tom, 20);-- 查询数据SELECT * FROM Students;-- 更新数据UPDATE Students SET Age 21 WHERE ID 1;-- 删除数据DELETE FROM Students WHERE ID 1;
SQL的语法特点主要包括以下几点 SQL的关键字大小写不敏感可以以单行或多行书写空格/缩进–增强可读性并以分号结束
。SQL的注释有两种方式

--
或者#
注释开始直到行尾。(2) 多行注释使用
/*
开始*/
结束。 注意
虽然SQL的关键字大小写不敏感。但是对于字符串和字符数据类型的值是区分大小写的。
但是推荐使用小写方便
\g
或者\G
(1)以分号结尾_
show databases;
(2)以
\g
结尾_ show databases\g
和分号效果是一样的。(3)以
\G
结尾_show databases\G
以一给信息为“一段”后换行纵向排列的一、 SQL - DDL – 数据定义语言
DDLData Definition Language数据定义语言语句 数据定义语言主要是进行定义数据库、表的结构、数据类型、表之间的链接等操作。 例如关键字有 CREATE用于创建数据表和数据表、ALTER用于修改表、DROP用于删除库和表 等。
1.1 数据库操作 1.1 显示现有的数据库1查看MySQL服务器下的所以被创建出来的数据库
SHOW DATABASES
2查看当前数据库
SELECT DATABASE()
下方的NULL是因为没有选择数据库
在DataGrip中
我们可以选择对应的数据库即可或者切换数据库
3查看指定的数据库的创建信息
show create database 数据库名称
;
创建 CREATE DATABASE [IF NOT EXISTS] 数据库名 [DEFAULT CHARSET 字符集] [COLLATE 排序规则]
1简单创建
有无反引号都可以
都存在
2不可创建同名的数据库存在即不创建create database if not exists 数据库名称
3设置指定的字符集
utf8 -存储长度 3个字节【不建议】
utf8mb4 - 4字节
create database ss default utf8mb4
如果已经存在了该库但没指定字符集那就指定通过修改的方式来了。
alter database 库名 default character set 字符集
DROP DATABASE [IF EXISTS] 数据库名
[IF EXISTS] 是为了进一步确认存在。
USE 数据库名
查看当前数据库名用前面并切换数据库
对数据库中的表结构进行增删查改等操作在这之前我们需要准备一张数据表。
1.2.1 表查询先use指令找到数据库
1查询当前所有表show tables
2查询表结构DESC 表名
3查询指定表的建表语句SHOW CREATE table 表名
创建库–使用库–创建表
CREATE [字段类型] TABLE [if not exists]表名(字段1 字段1类型[COMMENT 字段1注释]字段2 字段2类型[COMMENT 字段2注释]字段3 字段3类型[COMMENT 字段3注释]... 字段n 字段n类型[COMMENT 字段n注释])[COMMENT 表注释];
验证 – 查询表结构
DESC 表名
1添加字段
ALTER RABLE 表名 ADD 字段名 类型长度 [comment 注释] [约束];
修改字段名和类型
ALTER RABLE 表名 CHANGE 旧字段名 新字段名 类型长度 [comment 注释] [约束]
删除字段
ALTER TABLE 表名 DROP 字段名
修改表名
ALTER table 表名 RENAME TO 新表名
删除
删除表
1TROP TABLE [IF EXISTS]表名;
删除指定表并重新创建该表 --剩下表结构数据被清除
2TRUNCATE TABLE 表名;
1库操作
show databases;create database 数据库名;use 数据库名;select database();drop database 数据库名;
2表操作
show tables;create table 表名字段 字段类型 字段 字段类型desc 表名;show create table 表名;alter table 表名 add/modify/change/drop/rename to ..drop table 表名;
二、SQL - DML – 数据操作语言 DMLData Manipulation Language语句: 主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT添加数据、UPDATE修改数据、DELETE删除数据 等。
2.1 添加数据 insert1 给指定的字段添加
INSERT INTO 表名字段1.,,字段2VALUES值1.值2....);
2 给全部的字段添加数据
INSERT INTO 表名 values值1.。值b
( 3 ) 批量添加数据
INSERT INTO 表名字段1.,,字段2VALUES值1.值2....)值1.值2....).值1.值2....);INSERT INTO 表名 values值1.。值n,值1.。值n,值1.。值n
注意
插入时期指定字段顺序键值一一对应字符串、日期应该在引号之中大小、长度应该在规定的字段的范围之内如果是插入多条数据就多来点语句或者3的方 2.2 修改数据 update
UPDATE 表名 SET 字段名1 值1字段名2 值 2 [where 条件];
修改语句的条件可以有也可无。如果没有条件则修改整张表的所有数据。
这项操作是不安全的容易破坏元数据的----但可以同意
成功完全替换掉
2.3 删除数据 deleteDELETE FROM 表名 [WHERE 条件]
注意 1条件可有可无没有就是所有的数据
2)DELETE 语句不能删除某个字段的值可以用UPDATE
2.4 总结一下1添加数据INSERT INTO 表名 字段1字段2VALUES(值1值2[值1值2....];
2修改数据UPDATE 表名 SET 字段1值1 字段2 值2 [WHERE 条件]l
3删除数据DELETE FROM 表名 [WHERE 条件];
SELECT字段列表 字段名[AS]别名FROM表名列表WHERE 条件列表 分组之前过滤GROUP BY分组字段列表 HAVING分组后条件列表 分组之后过滤ORDER BY 排序字段列表 升序ASC 降序DESCLIMIT分页参数 起始索引从0开始
3.1.2 执行顺序 FROM表名列表WHERE条件列表GROUP BY分组字段列表HAVING分组后条件列表SELECT字段列表ORDER BY排序字段列表LIMIT分页参数
3.2 基本查询SELECT和FROM配合 3.2.1.> 查询多个字段 1SELECT 字段1 字段2字段3..FROM 表名;
2SELECT *FROM 表名;
SELECT* 的*为通配符效率低
as可以省略写
SELECT 字段1[AS 别名1] 字段2[AS 别名2]..FROM 表名;
真名和替换名使用
select id,id as stu_id,name,name as stu_name from username;
3.2.3 去除重复记录 SELECT DISTINCT 字段列表 FROM 表名
去除的时候不能在distinct前面有其他的字段要不然“长度”不对呀会报错
注意事项
对于selct语句执行顺序 FROM WHERE GROUP BY HAVING SELECT ORDER BY LIMIT
3.3.1 SELECT 字段列表 FROM 表名列表
‘>’ ‘>’ < ’ < ‘’
不等于 <> 或者
BETWEEN…AND 介于某个范围之间
IN(…)介于in列表之间的某个值
LIKE 站位符 模糊查询【_匹配单个字符 %匹配多个字符】
IS NULL
AND 与 && 、 OR 与|| 、 NOT与 他们各自效果是一样的
·
注意事项
between ……and……语句 上下包含。
between…and不能写反
count 、max、 min、 avg、 sum
直接作用字段,且null值不参与聚合函数运算
SELECT 聚合函数字段列表FROM 表名
SELECT 字段列表 FROM[WHERE 条件]GROUP BY 分组字段名[HAVING 分组后的过滤条件];
3.4.3 WHEREGROUP BY和HAVING 在SQL中WHEREGROUP BY和HAVING都是用于筛选和分组数据的关键字但它们的使用场景和方式有所不同。
WHERE子句用于筛选FROM子句中指定的操作所产生的行。它在数据分组之前进行筛选。WHERE不对聚合函数进行判断但可以使用Having
GROUP BY子句用于对WHERE子句的输出进行分组。它可以将多行数据根据指定的列进行分组。
HAVING子句用于从分组的结果中筛选行。它在数据分组之后进行筛选主要用于对分组后的数据进行条件筛选。
所以如果你想在分组后对统计结果进行筛选你必须使用HAVING而不能使用WHERE
SELECT 列名, 聚合函数(列名)FROM 表名WHERE 列名 运算符 值GROUP BY 列名HAVING 聚合函数(列名) 运算符 值;
注意事项
执行顺序where > 聚合函数 > having
分组后查询的字段一般为聚合函数和分组字段查询其他字段无任何意义
SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1字段2排序方式2;
1排序方式
ASC升序 默认
DESC降序
2排序先按第一个方式再第二个方式
3.4.5.分页查询LIMITSELECT 字段列表 FROM LIMIT 起始索引查询记录数
如果你想要实现分页查询你可以使用OFFSET关键字语法如下
SELECT 列名FROM 表名LIMIT 数量 OFFSET 数量;
LIMIT语句的简写形式也是对的。如果你只想限制返回的记录数而不指定起始索引你可以直接写LIMIT 数量。
四、SQL - DCL – 数据控制语言DCL(Data Control Language)是数据控制语言的缩写主要用于控制不同数据的权限和访问级别这种语言包括两个部分GRANT和REVOKE。GRANT用于授予用户权限而REVOKE用于撤销用户的权限。
4.1 管理用户 4.1.1查询用户use mysqlSELECT * FROM user;
4.1.2.创建用户 CREATE USER ‘用户名’主机名 IDENTIFIED BY 密码
检测有没有权限访问其他数据库
在任意主机访问
CREATE user GG% identified by 123456;
4.1.3.修改用户密码 ALTER USER 用户名主机名 IDENTIFIED WITH mysql_native_password BY 新密码ALTER USER HHlocalhost IDENTIFIED with mysql_native_password BY 10000;
4.1.4.删除用户 DROP USER 用户名‘主机名’;
注意事项
主机名可以用%通配
主要有DBA数据库管理员使用
4.2权限控制 4.2.1.查询权限show grants for 用户名主机名
4.2.2.授予权限 grant 权限列表 on数据库名.表名 to 用户名主机名
4.2.3.撤销权限 revoke 权限列表 on数据库名.表名 from用户名主机名
4.2.4.全部权限 GRANT ALL PRIVILEGES ON *.* TO usernamelocalhost;