MySQL的基础(一)

MySQL的基础(一)

  • 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.mzph.cn/news/121252.shtml

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

相关文章

【Python基础】Python基本数据类型 (新人必备)

Python是一种弱类型语言&#xff0c;因此变量的数据类型可以动态改变。Python基本的数据类型包括以下几种&#xff1a; 整型&#xff08;int&#xff09;&#xff1a;表示整数&#xff0c;如1、2、3等。浮点数&#xff08;float&#xff09;&#xff1a;表示带有小数部分的数字…

calcite 校验层总结

1、校验的作用 1&#xff09;完善语义信息 例如在SQL语句中&#xff0c;如果碰到select * 这样的指令&#xff0c;在SQL的语义当中&#xff0c;“*” 指的是取出对应数据源中所有字段的信息&#xff0c;因此就需要根据元数据信息来展开。 2&#xff09;结合元数据信息来纠偏…

XTU-OJ 1253-Robot

Robot 题目描述 有N个任务需要Robot去完成&#xff0c;这个N个任务的地点在一个数轴上&#xff0c;坐标为1到n。每个任务需要先完成ai个任务才能开始去做。Robot可以在直线上左右移动&#xff0c;初始位置位于任务1的地点&#xff0c;方向朝向数轴正方向。请问Robot最少转换多少…

特殊类设计[下] --- 单例模式

文章目录 5.只能创建一个对象的类5.1设计模式[2.5 万字详解&#xff1a;23 种设计模式](https://zhuanlan.zhihu.com/p/433152245)5.2单例模式1.饿汉模式1.懒汉模式 6.饿汉模式7.懒汉模式7.1饿汉模式优缺点:7.2懒汉模式1.线程安全问题2.单例对象的析构问题 8.整体代码9.C11后可…

UVa129 Krypton Factor(困难的串)

1、题目 2、题意 如果一个字符串包含两个相邻的重复子串&#xff0c;则称它是“容易的串”&#xff0c;其他串称为“困难的串”。例如&#xff0c;BB、ABCDACABCAB、ABCDABCD都是容易的的串&#xff0c;而D、DC、ABDAB、CBABCBA 都是困难的串。 输入正整数 k k k 和 L L L&a…

K8S基础架构租赁(Lease )

分布式系统通常需要租约(leases)&#xff0c;租约提供了锁定共享资源和在一组成员之间协调活动的机制。 在Kubernetes中&#xff0c;租约的概念由协调(k8s.io) API组中的Lease对象表示。 在Kubernetes中&#xff0c;Lease对象用于协调集群中的节点和组件之间的通信和协作。例如…

Linux虚拟机部署与发布项目(Windows版本)

目录 前言 一、虚拟机部署项目的流程 二、单机项目 1. 本机测试 2.虚拟机部署项目 三、前后端分离项目 前言 在软件开发过程中&#xff0c;部署和发布项目是非常重要的一环。使用虚拟机技术可以方便、灵活且可重复使用地部署和发布项目。本篇博客将介绍如何在 Windows 环…

【密评】商用密码应用安全性评估从业人员考核题库(十四)

商用密码应用安全性评估从业人员考核题库&#xff08;十四&#xff09; 国密局给的参考题库5000道只是基础题&#xff0c;后续更新完5000还会继续更其他高质量题库&#xff0c;持续学习&#xff0c;共同进步。 3251 单项选择题 根据GB/T 39786《信息安全技术 信息系统密码应用…

Go基础——基础语法

1、简介 Go&#xff08;又称Golang&#xff09;是Google开发的一种静态强类型、编译型、并发型&#xff0c;并具有垃圾回收功能的编程语言。语法类似于C&#xff0c;专为高性能和并发程序而设计。通常用于网络编程、云服务器、游戏服务器、DevOps、Web应用、分布式系统、容器虚…

LeetCode--1991.找到数组的中间位置

1 题目描述 给你一个下标从 0 开始的整数数组 nums , 请你找到 最左边 的中间位置 middleIndex &#xff08;也就是所有可能中间位置下标最小的一个&#xff09; 中间位置 middleIndex 是满足 nums[0] nums[1] ... nums[middleIndex-1] nums[middleIndex1] nums[middleI…

【知识串联】概率论中的值和量(随机变量/数字特征/参数估计)【考研向】【按概率论学习章节总结】(最大似然估计量和最大似然估计值的区别)

就我的概率论学习经验来看&#xff0c;这两个概念极易混淆&#xff0c;并且极为重点&#xff0c;然而&#xff0c;在概率论的前几章学习中&#xff0c;如果只是计算&#xff0c;对这方面的辨析不清并没有问题。然而&#xff0c;到了后面的参数估计部分&#xff0c;却可能出现问…

mysql-linux归档版安装

什么是归档版安装&#xff1f;简单来说就是编译好的软件压缩打包版。 说明&#xff1a;我这里服务器之前已经装过一个不同版本的mysql&#xff0c;已经占用了3306端口&#xff0c;所以这里我用3307端口来演示&#xff0c;命令和官方的稍有不同&#xff0c;不过步骤都是差不多的…

搜索引擎搜索技巧总结

晚上在B站上刷到一个关于搜索技巧的干货视频&#xff0c;这个视频真的不错&#xff0c;结尾还提到了AI时代的搜索思路之前自己也零碎的探索出了一些搜索技巧&#xff0c;但是没有总结&#xff0c;就没法稳定的加入自己的工作流&#xff0c;持续提高效率受到这个视频的启发&…

计算机视觉 激光雷达结合无监督学习进行物体检测的工作原理

一、简述 激光雷达是目前正在改变世界的传感器。它集成在自动驾驶汽车、自主无人机、机器人、卫星、火箭等中。该传感器使用激光束了解世界,并测量激光击中目标返回所需的时间,输出是点云信息,利用这些信息,我们可以从3D点云中查找障碍物。 从自动驾驶汽车的角度看激光雷达…

mysql存在10亿条数据,如何高效随机返回N条纪录,sql如何写

1 低效方案 1.使用ORDER BY RAND()&#xff1a; SELECT * FROM your_table ORDER BY RAND() LIMIT 1; 这将随机排序表中的所有行&#xff0c;并且通过LIMIT 1仅返回第一行&#xff0c;从而返回一个随机记录。然而&#xff0c;对于大型表来说&#xff0c;ORDER BY RAND()可能会…

机器学习笔记:逆置换

1 介绍 给定一个排列 p&#xff0c;它的逆置换&#xff08;inverse permutation&#xff09;是一个排列 invp&#xff0c;满足 invp[p[i]] i 和 p[invp[i]] i 对所有 i 成立。 2 python实现 计算一个排列的逆排列给定一个排列 p&#xff0c;它的逆排列是一个排列 invp&…

PyTorch中的intrusive_ptr

PyTorch中的intrusive_ptr 前言 intrusive_ptr與unique_ptr&#xff0c;shared_ptr等一樣&#xff0c;都是smart pointer。但是intrusive_ptr比較特別&#xff0c;它所指向的物件類型必須繼承自intrusive_ptr_target&#xff0c;而intrusive_ptr_target必須實現引用計數相關的…

OpenCV 相机相关函数

一、变换参数矩阵的求解 1. 计算三个二维点对之间的仿射变换矩阵&#xff1a;getAffineTransform() 2. 计算多个二维点对之间的最优放射变换矩阵&#xff08;误差最小准则&#xff09;&#xff1a;estimateRigidTransform();或者findHomography(); 3. 计算四个二维点对之间的…

软考 系统架构设计师系列知识点之设计模式(7)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之设计模式&#xff08;6&#xff09; 所属章节&#xff1a; 老版&#xff08;第一版&#xff09;教材 第7章. 设计模式 第2节. 设计模式实例 相关试题 3. 某公司欲开发一套窗体图形界面类库。该类库需要包含若干预定…

针对多分类问题,使用深度学习--Keras进行微调提升性能

前面的文章对二分类问题用Keras进行了Fine-tune,使得模型的准确率进一步提升,此处对于多分类问题,尝试使用Fine-tune来提升性能。 1. 准备数据集 为了演示,本次选用了博文keras系列︱图像多分类训练与利用bottleneck features进行微调(三)中提到的数据集,原始的数据集…