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,一经查实,立即删除!

相关文章

calcite 校验层总结

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

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

文章目录 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…

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应用、分布式系统、容器虚…

mysql-linux归档版安装

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

搜索引擎搜索技巧总结

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

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

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

专业135总分400+西安交通大学信息与通信工程学院909/815考研经验分享

今年初试发挥不错&#xff0c;400&#xff0c;专业课135&#xff0c;将近一年复习一路走来&#xff0c;感慨很多&#xff0c;希望以下经历可以给后来的同学提供一些参考。 初试备考经验 公共课&#xff1a;三门公共课&#xff0c;政治&#xff0c;英语&#xff0c;数学。在备考…

轮转数组(Java)

大家好我是苏麟 , 这篇文章是凑数的 ... 轮转数组 描述 : 给定一个整数数组 nums&#xff0c;将数组中的元素向右轮转 k 个位置&#xff0c;其中 k 是非负数。 题目 : 牛客 NC110 旋转数组: 这里牛客给出了数组长度我们直接用就可以了 . LeetCode 189.轮转数组 : 189. 轮…

Nginx 的配置文件(负载均衡,反向代理)

Nginx可以配置代理多台服务器&#xff0c;当一台服务器宕机之后&#xff0c;仍能保持系统可用。 cmd查找端口是否使用&#xff1a;netstat -ano Nginx出现403 forbidden #解决办法&#xff1a;修改web目录的读写权限&#xff0c;或者是把nginx的启动用户改成目录的所属用户&…

田忌赛马(贪心算法)

分为两种情况&#xff1a; 1.田最快 快于 王最快&#xff08;田最快面对任何都赢&#xff09; ->故和王最快比&#xff0c;消耗王最快 2.田最快 小于等于 王最快&#xff08;王最快面对任何都可赢&#xff09; 则比最慢&#xff08;意在找一匹无法赢任何马的马&#…

20.1 OpenSSL 字符BASE64压缩算法

OpenSSL 是一种开源的加密库&#xff0c;提供了一组用于加密和解密数据、验证数字证书以及实现各种安全协议的函数和工具。它可以用于创建和管理公钥和私钥、数字证书和其他安全凭据&#xff0c;还支持SSL/TLS、SSH、S/MIME、PKCS等常见的加密协议和标准。 OpenSSL 的功能非常…

shell实验

1&#xff0e;编写脚本for1.sh&#xff0c;使用for循环创建20账户&#xff0c;账户名前缀由用户从键盘输入&#xff0c;账户初始密码由用户输入&#xff0c;例如&#xff1a;test1、test2、test3、....、test10 编写脚本&#xff0c;使用read -p提醒用户从键盘输入账户名前缀以…

[论文笔记]GTE

引言 今天带来今年的一篇文本嵌入论文GTE, 中文题目是 多阶段对比学习的通用文本嵌入。 作者提出了GTE,一个使用对阶段对比学习的通用文本嵌入。使用对比学习在多个来源的混合数据集上训练了一个统一的文本嵌入模型,通过在无监督预训练阶段和有监督微调阶段显著增加训练数…

hdlbits系列verilog解答(移位寄存器)-23

文章目录 一、问题描述二、verilog源码三、仿真结果 一、问题描述 您将获得一个具有两个输入和一个输出的模块 my_dff &#xff08;实现 D 触发器&#xff09;。实例化其中的三个&#xff0c;然后将它们链接在一起以形成长度为 3 的移位寄存器。端口 clk 需要连接到所有实例。…

三篇论文:速览GPT在网络安全最新论文中的应用案例

GPT在网络安全领域的应用案例 写在最前面论文1&#xff1a;Chatgpt/CodeX引入会话式 APR 范例利用验证反馈LLM 的长期上下文窗口&#xff1a;更智能的反馈机制、更有效的信息合并策略、更复杂的模型结构、鼓励生成多样性和GPT类似的步骤&#xff1a;Conversational APR 对话式A…

Windows VS C++工程:包含目录、库目录、附加依赖项、附加包含目录、附加库目录配置与静态库、动态库的调用——以OCCI的配置为例

文章目录 1 包含目录&#xff08;Include Directories&#xff09;/ 附加包含目录&#xff08;Additional Include Directories&#xff09;1.1 区别和作用1.2 设置路径 2 库目录&#xff08;Library Directories&#xff09;/ 附加库目录&#xff08;Additional Library Direc…

element ui el-table表格纵向横向滚动条去除并隐藏空白占位列

需求 当table内容列过多时&#xff0c;可通过height属性设置table高度以固定table高度、固定表头&#xff0c;使table内容可以滚动 现在需求是右侧滚动条不好看&#xff0c;需要去除滚动条&#xff0c;并隐藏滚动条所占列的位置 // ----------修改elementui表格的默认样式-…