• MySQL的基础(一)


    如果本地存存在两个版本的mysql怎么cmd到另一个

    在这里插入图片描述

    SQL

    SQL,全称为结构化查询语言(Structured Query Language),是一种用于管理关系数据库的标准计算机语言。它可以用于数据库的创建、查询、更新和修改等操作。

    SQL语言包括数据定义语言(DDL)、数据操作语言(DML)、数据查询语言(DQL)、数据控制语言(DCL)等部分。
    
    • 1
    -- 创建表
    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;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    SQL的语法特点主要包括以下几点:

    SQL的关键字大小写不敏感,可以以单行或多行书写,空格/缩进–增强可读性,并以分号结束。SQL的注释有两种方式:

    1. (1)单行注释:使用--或者# 注释开始,直到行尾。
      (2) 多行注释:使用/*开始,*/ 结束。

    注意:
    虽然SQL的关键字大小写不敏感。但是,对于字符串和字符数据类型的值,是区分大小写的。
    但是推荐使用小写,方便

    1. 反引号(`)用于包裹数据库名称,字段,数据表名称。是TAb键上方,数字1左边的英文状态的键。
    2. 以分号结束也可使用\g或者\G
      (1)以分号结尾_show databases;
      在这里插入图片描述
      (2)以\g结尾_ show databases\g和分号效果是一样的。
      在这里插入图片描述
      (3)以\G结尾_show databases\G 以一给信息为“一段”后换行,纵向排列的
      在这里插入图片描述

    一、 SQL - DDL – 数据定义语言

    DDL(Data Definition Language,数据定义语言)语句: 数据定义语言,主要是进行定义数据库、表的结构、数据类型、表之间的链接等操作。 例如:关键字有 CREATE用于创建数据表和数据表、ALTER用于修改表、DROP用于删除库和表 等。

    1.1 数据库操作

    1.1 显示现有的数据库

    (1)查看MySQL服务器下的所以被创建出来的数据库

    SHOW DATABASES
    在这里插入图片描述

    (2)查看当前数据库

    SELECT DATABASE()
    下方的NULL是因为,没有选择数据库
    在这里插入图片描述
    在DataGrip中
    我们可以选择对应的数据库即可,或者切换数据库
    在这里插入图片描述

    (3)查看指定的数据库的创建信息

    show create database 数据库名称;

    在这里插入图片描述

    1.2 创建数据库

    创建: 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 字符集
    在这里插入图片描述

    1.3 删除数据库

    DROP DATABASE [IF EXISTS] 数据库名
    在这里插入图片描述
    [IF EXISTS] 是为了进一步确认存在。

    1.4 使用

    USE 数据库名
    在这里插入图片描述
    查看当前数据库名用前面,并切换数据库
    在这里插入图片描述

    1.2 数据表操作

    对数据库中的表结构进行增删查改等操作,在这之前我们需要准备一张数据表。

    1.2.1 表查询

    先use指令找到数据库,
    (1)查询当前所有表
    show tables;

    在这里插入图片描述
    (2)查询表结构
    DESC 表名;
    在这里插入图片描述
    (3)查询指定表的建表语句
    SHOW CREATE table 表名;

    在这里插入图片描述

    1.2.2 表创建

    创建库–使用库–创建表

    CREATE [字段类型] TABLE [if  not  exists]表名(
    字段1 字段1类型[COMMENT   字段1注释]
    字段2 字段2类型[COMMENT   字段2注释]
    字段3 字段3类型[COMMENT   字段3注释]
    ... 
    字段n 字段n类型[COMMENT   字段n注释])
    [COMMENT   表注释];
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    在这里插入图片描述
    验证 – 查询表结构

    DESC 表名;
    在这里插入图片描述

    在这里插入图片描述

    1.2.3 修改表

    (1)添加字段

    ALTER RABLE 表名 ADD 字段名 类型(长度) [comment 注释] [约束];
    在这里插入图片描述
    修改字段名和类型

    ALTER RABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [comment 注释] [约束]
    在这里插入图片描述
    在这里插入图片描述
    删除字段

    ALTER TABLE 表名 DROP 字段名

    在这里插入图片描述
    修改表名

    ALTER table 表名 RENAME TO 新表名;
    在这里插入图片描述

    删除:

    删除表

    (1)TROP TABLE [IF EXISTS]表名;
    删除指定表,并重新创建该表 --剩下表结构,数据被清除
    在这里插入图片描述
    (2)TRUNCATE TABLE 表名;
    在这里插入图片描述

    1.2.4 小结

    (1)库操作

    show databases;
    create database 数据库名;
    use 数据库名;
    select database();
    drop database 数据库名;
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    (2)表操作

    show tables;
    create table 表名(字段 字段类型 ,字段 字段类型);
    desc 表名;
    show create table 表名;
    alter table 表名 add/modify/change/drop/rename to ..
    drop table 表名;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    二、SQL - DML – 数据操作语言

    DML(Data Manipulation Language)语句: 主要是对数据进行增加、删除、修改操作。常用的语句关键字有 INSERT添加数据、UPDATE修改数据、DELETE删除数据 等。

    2.1 添加数据 insert

    ( 1 )给指定的字段添加

    `INSERT INTO 表名(字段1.,,字段2)VALUES(值1.值2....);`
    
    • 1

    ( 2 )给全部的字段添加数据

    `INSERT INTO 表名 values(值1.。值b);`
    
    • 1

    ( 3 ) 批量添加数据

    INSERT INTO 表名(字段1.,,字段2VALUES(值1.2....)(值1.2....).(值1.2....);
    
    
    INSERT INTO 表名 values(值1.。值n),(值1.。值n),(值1.。值n);
    
    • 1
    • 2
    • 3
    • 4

    注意:

    1. 插入时期,指定字段顺序,键值一一对应
    2. 字符串、日期应该在引号之中
    3. 大小、长度应该在规定的字段的范围之内
      在这里插入图片描述
      如果是插入多条数据,就多来点语句或者(3)的方请添加图片描述

    2.2 修改数据 update

    UPDATE 表名 SET 字段名1 =1,字段名2 =2[where 条件]; 
    
    • 1

    修改语句的条件可以有,也可无。如果没有条件,则修改整张表的所有数据
    请添加图片描述

    这项操作是不安全的,容易破坏元数据的----但可以同意
    请添加图片描述

    成功完全替换掉

    请添加图片描述

    2.3 删除数据 delete

    `DELETE FROM 表名 [WHERE 条件]`
    
    • 1

    注意: (1)条件可有可无,没有就是所有的数据

    (2)DELETE 语句不能删除某个字段的值(可以用UPDATE)

    请添加图片描述

    2.4 总结一下

    (1)添加数据:
    INSERT INTO 表名 (字段1,字段2,)VALUES(值1,值2,)[,(值1,值2,..)..];

    (2)修改数据
    UPDATE 表名 SET 字段1=值1 ,字段2 =值2 [WHERE 条件]l

    (3)删除数据
    DELETE FROM 表名 [WHERE 条件];

    三、SQL - DQL – 数据查询语言

    3.1 语句顺序

    3.1.1 书写顺序
    SELECT
    		字段列表    		字段名[AS]别名
    FROM
    		表名列表
    WHERE 
    		条件列表   		分组之前过滤
    GROUP BY
    		分组字段列表  
    HAVING
    		分组后条件列表   分组之后过滤
    ORDER BY 
    		排序字段列表  	升序ASC 降序DESC
    LIMIT
    		分页参数   		起始索引从0开始
    		
    		
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    3.1.2 执行顺序
    FROM
    		表名列表
    WHERE
    		条件列表
    GROUP BY
    		分组字段列表
    HAVING
    		分组后条件列表
    SELECT
    		字段列表
    ORDER BY
    		排序字段列表
    LIMIT
    		分页参数
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    3.2 基本查询(SELECT和FROM配合)

    3.2.1.> 查询多个字段

    (1)SELECT 字段1 ,字段2,字段3..FROM 表名;
    在这里插入图片描述

    (2)SELECT *FROM 表名;
    SELECT* 的*为通配符,效率低
    在这里插入图片描述

    3.2.2> 设置别名

    as可以省略写

    SELECT 字段1[AS 别名1] ,字段2[AS 别名2],..FROM 表名;

    真名和替换名使用

    select id,id as stu_id,name,name as stu_name from username;
    
    • 1

    在这里插入图片描述

    3.2.3 去除重复记录

    SELECT DISTINCT 字段列表 FROM 表名

    去除的时候,不能在distinct前面有其他的字段,要不然“长度”不对呀,会报错
    在这里插入图片描述

    在这里插入图片描述

    3.3 条件查询(where)

    注意事项:

    对于selct语句执行顺序  FROM   WHERE  GROUP BY  HAVING   SELECT   ORDER BY  LIMIT
    
    • 1
    3.3.1 SELECT 字段列表 FROM 表名列表

    ‘>’ ‘>=’ '< ’ '<= ‘=’
    不等于 '<> 或者 !=
    BETWEEN…AND 介于某个范围之间
    IN(…)介于in列表之间的某个值
    LIKE 站位符 模糊查询【_匹配单个字符 ,%匹配多个字符】
    IS NULL
    AND 与 && 、 OR 与|| 、 NOT与 !,他们各自效果是一样的

    ·
    注意事项
    between ……and……语句 上下包含。
    between…and不能写反

    3.4.分组查询(GROUP BY)

    3.4.1 学习一下聚合函数(一列的整体数据纵向的计算)

    count 、max、 min、 avg、 sum 直接作用字段,且null值不参与聚合函数运算

    SELECT 聚合函数(字段列表)FROM 表名

    在这里插入图片描述

    3.4.2 分组
    SELECT 字段列表 FROM[WHERE 条件]GROUP BY 分组字段名[HAVING 分组后的过滤条件];
    
    • 1

    请添加图片描述

    3.4.3 WHERE,GROUP BY和HAVING

    在SQL中,WHERE,GROUP BY和HAVING都是用于筛选和分组数据的关键字,但它们的使用场景和方式有所不同。

    • WHERE子句用于筛选FROM子句中指定的操作所产生的行。它在数据分组之前进行筛选。WHERE不对聚合函数进行判断,但可以使用Having

    • GROUP BY子句用于对WHERE子句的输出进行分组。它可以将多行数据根据指定的列进行分组。

    • HAVING子句用于从分组的结果中筛选行。它在数据分组之后进行筛选,主要用于对分组后的数据进行条件筛选。

    • 所以,如果你想在分组后对统计结果进行筛选,你必须使用HAVING,而不能使用WHERE

    SELECT 列名, 聚合函数(列名)
    FROM 表名
    WHERE 列名 运算符 值
    GROUP BY 列名
    HAVING 聚合函数(列名) 运算符 值;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    注意事项
    执行顺序:where > 聚合函数 > having
    分组后,查询的字段一般为聚合函数和分组字段,查询其他字段无任何意义

    3.4.4 排序查询ORDER BY排序字段列表
    SELECT 字段列表 FROM 表名 ORDER BY 字段1 排序方式1,字段2,排序方式2;
    
    • 1

    (1)排序方式:

    ASC:升序 (默认)

    DESC:降序

    (2)排序先按第一个方式,再第二个方式

    在这里插入图片描述

    3.4.5.分页查询LIMIT

    SELECT 字段列表 FROM LIMIT 起始索引,查询记录数;
    
    
    • 1
    • 2

    在这里插入图片描述
    如果你想要实现分页查询,你可以使用OFFSET关键字,语法如下:

    SELECT 列名
    FROM 表名
    LIMIT 数量 OFFSET 数量;
    
    • 1
    • 2
    • 3

    LIMIT语句的简写形式也是对的。如果你只想限制返回的记录数,而不指定起始索引,你可以直接写LIMIT 数量。

    四、SQL - DCL – 数据控制语言

    DCL(Data Control Language)是数据控制语言的缩写,主要用于控制不同数据的权限和访问级别,这种语言包括两个部分:GRANT和REVOKE。GRANT用于授予用户权限,而REVOKE用于撤销用户的权限。

    4.1 管理用户

    4.1.1,查询用户
    use mysql;
    SELECT * FROM user;
    
    • 1
    • 2

    在这里插入图片描述

    4.1.2.创建用户
    CREATE USER ‘用户名’@'主机名' IDENTIFIED BY '密码'
    
    • 1

    在这里插入图片描述

    检测有没有权限访问其他数据库
    在这里插入图片描述
    在任意主机访问

    CREATE user 'GG'@'%' identified  by '123456';
    
    • 1
    4.1.3.修改用户密码
    ALTER USER '用户名'@'主机名' IDENTIFIED WITH mysql_native_password BY '新密码'
    
    
    ALTER USER 'HH'@'localhost' IDENTIFIED with mysql_native_password BY '10000';
    
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    4.1.4.删除用户
    DROP USER '用户名'@‘主机名’;
    
    
    • 1
    • 2

    在这里插入图片描述
    注意事项:

    主机名可以用%通配;

    主要有DBA数据库管理员使用

    4.2权限控制

    4.2.1.查询权限
    show grants for '用户名'@'主机名'
    
    • 1
    4.2.2.授予权限
    grant 权限列表 on
    数据库名.表名 to '用户名'@'主机名'
    
    • 1
    • 2
    4.2.3.撤销权限
    revoke 权限列表 on
    数据库名.表名 from
    '用户名'@'主机名'
    
    • 1
    • 2
    • 3
    4.2.4.全部权限
    GRANT ALL PRIVILEGES ON *.* TO 'username'@'localhost';
    
    • 1
  • 相关阅读:
    金仓数据库KingbaseES客户端编程接口指南-DCI(6. 附录-DCI错误码)
    远程服务器上,再次配笔记1、2、11、12相同的深度学习和gcc环境
    Java定时器(多线程的知识)----会一种就好,一看就懂
    Linux入门教程:P12->压缩解压类
    jasypt组件死锁bug案例分享
    wincc定时器功能介绍
    软件开发项目文档系列之十二如何撰写用户培训方案
    mybatis1
    杭电oj--求奇数的乘积
    第十三届蓝桥杯大赛软件赛决赛(Java 大学A组)
  • 原文地址:https://blog.csdn.net/m0_74154295/article/details/133943563