MySQL的基础(一)

news2024/9/29 23:40:24

文章目录

  • SQL
    • SQL的语法特点主要包括以下几点:
    • 一、 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 添加数据 insert
      • 2.2 修改数据 update
      • 2.3 删除数据 delete
      • 2.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 条件查询(where)
        • 3.3.1` SELECT 字段列表 FROM 表名列表`
      • 3.4.分组查询(GROUP BY)
        • 3.4.1 学习一下聚合函数(一列的整体数据纵向的计算)
        • 3.4.2 分组
        • 3.4.3 WHERE,GROUP BY和HAVING
        • 3.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的注释有两种方式:

  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   表注释];

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

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 数据库名;

(2)表操作

show tables;
create table 表名(字段 字段类型 ,字段 字段类型);
desc 表名;
show create table 表名;
alter table 表名 add/modify/change/drop/rename to ..
drop table 表名;

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

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

2.1 添加数据 insert

( 1 )给指定的字段添加

`INSERT INTO 表名(字段1.,,字段2)VALUES(值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);

注意:

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

2.2 修改数据 update

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

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

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

成功完全替换掉

请添加图片描述

2.3 删除数据 delete

`DELETE FROM 表名 [WHERE 条件]`

注意: (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开始
		
		
3.1.2 执行顺序
FROM
		表名列表
WHERE
		条件列表
GROUP BY
		分组字段列表
HAVING
		分组后条件列表
SELECT
		字段列表
ORDER BY
		排序字段列表
LIMIT
		分页参数

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;

在这里插入图片描述

3.2.3 去除重复记录

SELECT DISTINCT 字段列表 FROM 表名

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

在这里插入图片描述

3.3 条件查询(where)

注意事项:

对于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不能写反

3.4.分组查询(GROUP BY)

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

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

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

在这里插入图片描述

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

请添加图片描述

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 聚合函数(列名) 运算符 值;

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

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

(1)排序方式:

ASC:升序 (默认)

DESC:降序

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

在这里插入图片描述

3.4.5.分页查询LIMIT

SELECT 字段列表 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 mysql;
SELECT * 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 'HH'@'localhost' 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 'username'@'localhost';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1129759.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Kotlin基础——函数、变量、字符串模板、类

函数、变量、字符串模板、类 函数变量字符串模板类 函数 函数组成为 fun 函数名(参数名: 参数类型, …): 返回值{} fun max(a: Int, b: Int): Int {return if (a > b) a else b }上面称为代码块函数体&#xff0c;当函数体由单个表达式构成时&#xff0c;可简化为表达式函…

Java New对象分配内存流程

一、流程图 二、流程介绍 1、进行逃逸分析&#xff0c;判断是否能够分配到栈上&#xff1a; Y&#xff1a; 如果能分配到栈上&#xff0c;则进行分配。等方法出栈时&#xff0c;对象内存销毁&#xff0c;可有效减少GC的次数。 N&#xff1a;无法分配到栈上&#xff0c;则判断是…

阿里7年经验之谈 —— 如何实现前端项目的自动化测试?

这其实就是我们常说的“UI自动化测试”&#xff0c;针对这个问题&#xff0c;我先告知答题思路如下&#xff1a; 1、什么是UI自动化&#xff1f;有什么优势&#xff1f; 2、UI自动化实践中会遇到什么难题&#xff1f; 3、如何解决难题&#xff0c;将UI落实到实践中&#xff1f;…

Go学习第七章——数组arr,切片slice和映射map

Go数组arr&#xff0c;切片slice和映射map 1 数组1.1 快速入门1.2 数组的内存布局1.3 四种初始化数组的方式1.4 数组的遍历1.5 注意事项以及分析1.6 数组反转1.7 二维数组 2 切片2.1 快速入门2.2 内存解析2.3 切片的使用和遍历2.4 注意事项和细节说明2.5 string和slice关系2.6 …

基于大数据的社交平台数据爬虫舆情分析可视化系统 计算机竞赛

文章目录 0 前言1 课题背景2 实现效果**实现功能****可视化统计****web模块界面展示**3 LDA模型 4 情感分析方法**预处理**特征提取特征选择分类器选择实验 5 部分核心代码6 最后 0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于大数据…

充气膜结构的内压设计应考虑哪几种状态?

内压是充气膜结构独有的设计参数&#xff0c;也是结构形成刚度维持稳定的核心因素。同时&#xff0c;作为一种长期荷载保持结构在外荷载作用下具有的合理刚度&#xff0c;调整结构形态&#xff0c;以免产生过大变形、膜材失效褶皱等状况。结构的内压随不同气候条件进行调整&…

【MySQL-->数据操作】

文章目录 前言一、insert1.单行插入2.多行插入3.插入更新/替换 二、select1.全列查询2.指定列插入3.列别名4. 表达式计算5.去重6.where条件查询7.排序8.limit分页显示 三、update四、delete五、插入查询结果六、聚合函数六、聚合分组1.格式2.where和having的区别 前言 一、inse…

文心一言 VS 讯飞星火 VS chatgpt (120)-- 算法导论10.3 5题

五、用go语言&#xff0c;设 L 是一个长度为 n 的双向链表&#xff0c;存储于长度为 m 的数组key、prev 和next 中。假设这些数组由维护双链自由表 F的两个过程 ALLOCATE-OBJECT 和 FREE-OBJECT 进行管理。又假设 m 个元素中&#xff0c;恰有 n 个元素在链表 L 上&#xff0c;m…

BUUCTF 乌镇峰会种图 1

BUUCTF:https://buuoj.cn/challenges 题目描述&#xff1a; 乌镇互联网大会召开了&#xff0c;各国巨头汇聚一堂&#xff0c;他们的照片里隐藏着什么信息呢&#xff1f;&#xff08;答案格式&#xff1a;flag&#xff5b;答案&#xff5d;&#xff0c;只需提交答案&#xff0…

Linux NFS的整体架构与核心代码解析

前面文章我们从应用层面对NFS进行了介绍&#xff0c;接下来的文章我们将进入实现层面。本文首先从整体上对Linux的NFS软件架构进行介绍&#xff0c;然后介绍代码与实际业务逻辑介绍一下NFS的处理流程。 NFS文件系统的架构分析 NFS分布式文件系统是一个客户端-服务端架构&#…

从力扣[203]理解递归思想

本文旨在通过使用递归方法的使用来进一步了解递归思想 class Solution {public ListNode removeElements(ListNode head, int val) {if (head null) {return head;}head.next removeElements(head.next, val);return head.val val ? head.next : head;} }既然要使用递归算法…

LVS+keepalive高可用集群

keepalive简介 keepalive为LVS应用延伸的高可用服务。lvs的调度器无法做高可用。但keepalive不是为lvs专门集群服务的&#xff0c;也可以为其他的的代理服务器做高可用。 keepalive在lvs的高可用集群&#xff0c;主调度器和备调度器(可以有多个) 一主两备或一主一备。 VRRP: k…

【全国数据】全国各省点状地名(村)矢量数据下载

文章目录 全国数据预览分省数据预览 全国数据预览 分省数据预览 青海省&#xff1a; 甘肃省&#xff1a; 安徽省&#xff1a; 湖南省&#xff1a;

freeCAD不合并导入step文件

1.问题描述 在使用freeCAD导入step文件的时候&#xff0c;一开始会导入成一个成体&#xff0c;想隐藏某些部件&#xff0c;却只能隐藏整个装配体&#xff0c;就是图示位置无法展开。 2.解决方法 找到首选项把第5步里面的不打钩就可以了。 3.freeCAD的用处 这个主要的用处还是用…

NOIP2023模拟1联测22 爆炸

NOIP2023模拟1联测22 爆炸 题目大意 ​ 自己看 思路 当一个炸弹被引爆后&#xff0c;它的方向是固定的。如果被竖着引爆&#xff0c;那么应该选择横着引爆&#xff0c;否则选择竖着引爆&#xff0c;这是显然 的。 考虑对于每个炸弹 ( i , j ) (i , j) (i,j) 将第 i i i 行…

前端视角看 Docker : 加速开发和部署的利器

Docker 是一个开源的容器化平台&#xff0c;大大的降低了运维相关的工作。在日常开发中&#xff0c;中小公司很少有专职运维&#xff0c;所以在开发中通过使用 Docker&#xff0c;前端相关工作可以更加高效地构建、打包、部署和运行应用程序。此系列将从前端的视角出发&#xf…

LeetCode刷题---简单组(二)

文章目录 &#x1f352;题目一 14. 最长公共前缀&#x1f352;解法一&#x1f352;find函数 &#x1f352;题目二 13. 罗马数字转整数&#x1f352;解法一&#x1f352;题目三 9. 回文数&#x1f352;解法一 &#x1f352;题目一 14. 最长公共前缀 编写一个函数来查找字符串数组…

使用kettle进行正则表达式组件日志分析

使用Kettle&#xff08;Pentaho Data Integration&#xff09;进行日志分析是一种常见的数据处理任务&#xff0c;特别是当你需要从大量的日志文件中提取和分析数据时。以下是一般步骤&#xff1a; 准备数据源&#xff1a; 确保你有日志文件的数据源&#xff0c;这可以是本地文…

公司内部文件、文档、设计图、源代码、音视频等核心文件数据自动智能透明加密保护,防泄密软件 | 防止外泄系统

天锐绿盾是一种企业级数据加密解决方案&#xff0c;可以实现对办公终端电脑上的文件、文档、设计图、源代码、音视频等数据的透明加密&#xff0c;以防止数据泄露。 天锐绿盾的工作原理是采用内核级透明加密技术&#xff0c;在不影响员工正常工作的情况下&#xff0c;对需要保护…

Vulnhub系列靶机---mhz_cxf: c1f

靶机文档&#xff1a;&#xff1a;mhz_cxf: c1f 下载地址&#xff1a;Download (Mirror): 网卡配置 靶机开机后按住shift&#xff0c;出现界面如图&#xff0c;按e键进入安全模式&#xff1a; 找到ro&#xff0c;删除该行后边内容&#xff0c;并将ro 。。。修改为&#xff1a…