一、MySQL基础学习

目录

  • 1、MySQL启动
  • 2、MySQL客户端连接
  • 3、SQL
    • 3.1、SQL语句分类
    • 3.2、DDL(数据库定义语言)
      • 3.2.1、操作数据库
      • 3.2.2、操作数据表
    • 3.3、DML(数据库操作语言)
      • 3.3.1、增加 insert into
      • 3.3.2、删除 delete
      • 3.3.3、修改 update
    • 3.4、DQL(数据库查询语言)
      • 3.4.1、基本查询
      • 3.4.2、条件查询
      • 3.4.3、聚合函数
      • 3.4.5、分组查询
      • 3.4.6、排序查询
      • 3.4.7、分页查询
      • 3.4.8、多表关系
        • 多表查询
      • 3.4.9、内连接查询
      • 3.4.10、外连接查询
      • 3.4.11、自连接和联合查询
      • 3.4.12、子查询
    • 3.5、DCL(数据库控制语言)
      • 3.5.1、管理用户
      • 3.5.2、权限管理

1、MySQL启动

管理员的身份运行cmd

net start mysql80	#80指的是安装的时候指定的注册到Windows中的系统服务的系统名称
net stop mysql80

2、MySQL客户端连接

  • 方式一:MySQL自带的客户端命令行
    在这里插入图片描述

  • 方式二:Windows系统自带的命令行工具执行指令

mysql -u root -p	#输入密码即可在cmd命令行窗口使用mysql

注意: 使用这种方式时,需要配置PATH环境变量
添加环境变量:
在这里插入图片描述
在这里插入图片描述

3、SQL

3.1、SQL语句分类

在这里插入图片描述

3.2、DDL(数据库定义语言)

3.2.1、操作数据库

--创建库
create database 库名;
--创建库时判断库是否存在,不存在则创建
create database if not exists 库名;
--查看所有数据库
show databases;
--使用指定数据库
use 库名;
--查看当前指定数据库包含的数据表
show tables;
--查看数据库的结构定义信息
show create database 库名;
--删除数据库
drop database 库名;
--修改数据库的字符集为utf8
alter database 库名 character set utf8;

3.2.2、操作数据表

--创建表
create table 表名 (字段1 字段1类型[comment 字段1注释],字段2 字段2类型[comment 字段2注释],字段3 字段3类型[comment 字段3注释],......字段n 字段n类型[comment 字段n注释]
)[comment 表注释];
-- 查看表结构
desc 表名;
-- 查看创建表的SQL语句
show create table 表名;
-- 修改表名
alter table 表名 rename to 新的表名;
--添加一个新的字段
alter table 表名 add 字段; 字段类型;
--修改字段名
alter table 表名 rename column 字段名 to 新的字段名;
--修改字段类型(注意类型修改前后数据是否兼容)
alter table 表名 modify column 字段名 新的字段类型;
--删除一个字段
alter table 表名 drop 字段名;
--删除表
drop table 表名;
--删除表时判断表是否存在,若存在则删除
drop table if exists 表名;
  • 数据类型:数值类型、字符串类型、日期时间类型
    • 数值类型
      在这里插入图片描述
      eg:age TINYINT UNSIGNED,score DOUBLE(4,1)小数一共4位,保留一位小数;

    • 字符串类型
      在这里插入图片描述

    • 日期时间类型
      在这里插入图片描述

3.3、DML(数据库操作语言)

3.3.1、增加 insert into

-- 写全所有列名
insert into 表名(列名1,列名2,...列名n) values(1,2,...值n);
-- 不写列名(所有列全部添加)
insert into 表名 values(1,2,...值n);
-- 插入部分数据
insert into 表名(列名1,列名2) values(1,2);

在这里插入图片描述

3.3.2、删除 delete

-- 删除表中数据
delete from 表名 where 列名  =;
-- 删除表中所有数据
delete from 表名;
-- 删除表中所有数据(高效 先删除表,然后再创建一张一样的表。)
truncate table 表名;

3.3.3、修改 update

-- 不带条件的修改(会修改所有行,更新整张表)
update 表名 set 字段名1=1,字段名2=2;
-- 带条件的修改
update 表名 set 字段名1=1,字段名2=2 where 列名=;

举例:
在这里插入图片描述
在这里插入图片描述

3.4、DQL(数据库查询语言)

在这里插入图片描述

3.4.1、基本查询

--查询多个字段
select 字段1,字段2,字段3…… from 表名;
select * from 表名;--设置别名
select 字段1 [as 别名1],字段2 [as 别名2]…… from 表名;
#select workadderss as '工作地址' from emp;
#select workadderss '工作地址' from emp;--去除重复记录
select distinct 字段列表 from 表名;
#select distinct workadderss '工作地址' from emp;

3.4.2、条件查询

select 字段列表 from 表名 where 条件列表;

在这里插入图片描述

BETWEEN…AND (在什么之间)和 IN( 集合):

-- 查询年龄大于等于20 小于等于30				
SELECT * FROM student WHERE age >= 20 &&  age <=30;
SELECT * FROM student WHERE age >= 20 AND  age <=30;
SELECT * FROM student WHERE age BETWEEN 20 AND 30;-- 查询年龄22岁,18岁,25岁的信息
SELECT * FROM student WHERE age = 22 OR age = 18 OR age = 25
SELECT * FROM student WHERE age IN (22,18,25);

is not null(不为null值) 与 like(模糊查询)、distinct(去除重复值)

-- 查询英语成绩不为null
SELECT * FROM student WHERE english  IS NOT NULL;_:单个任意字符%:多个任意字符
-- 查询姓马的有哪些? like
SELECT * FROM student WHERE NAME LIKE '马%';
-- 查询姓名第二个字是化的人			
SELECT * FROM student WHERE NAME LIKE "_化%";				
-- 查询姓名是3个字的人
SELECT * FROM student WHERE NAME LIKE '___';					
-- 查询姓名中包含德的人
SELECT * FROM student WHERE NAME LIKE '%德%';-- 关键词 DISTINCT 用于返回唯一不同的值。
-- 语法:SELECT DISTINCT 列名称 FROM 表名称
SELECT DISTINCT NAME FROM  student ;

3.4.3、聚合函数

将一列数据作为一个整体,进行纵向计算。
在这里插入图片描述
注意:null值不参与所有聚合函数运算

select 聚合函数(字表列段) from 表名;# 聚合函数
# 统计企业的员工数量
select count(*) from emp;
select count(*) from emp# 统计该企业员工的平均年龄
select avg(age) from emp;# 统计该企业员工的最大年龄
select max(age) from emp;# 统计该企业员工的最小年龄
select min(age) from emp;# 统计西安地区员工的年龄之和
select sum(age) from emp where workadderss = '西安';

3.4.5、分组查询

select 字段列表 from 表名 [where 条件] group by 分组字段名 [having 分组后过来条件];# 分组查询
# 根据性别分组,统计男性员工和女性员工的数量
select gender,count(*) from emp group by gender;# 根据性别分组,统计男性员工和女性员工的平均年龄
select gender,avg(age) from emp group by gender;# 查询年龄小于45的员工,并根据工作地址分组,获取员工数量大于等于3的工作地址
select workadderss ,count(*) from emp where age < 45 group by workadderss having count(*) > 3;

在这里插入图片描述
在这里插入图片描述

where和having的区别:

  • 执行时机不同:where是分组之前进行过滤,不满足where条件,不参与分组;而having是分组之后对结果进行过滤。
  • 判断条件不同:where不能对聚合函数进行判断,而having可以。

注意:

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

3.4.6、排序查询

select 字段列表 from 表名 order by 字段1 排序方式,字段2 排序方式2;

在这里插入图片描述

3.4.7、分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;# 分页查询
# 查询第1页员工数据,每页展示10条记录
select * from emp limit 0,10;select * from emp limit 10;# 查询第2页员工数据,每页展示10条记录 ------>(页码 - 1)* 页展示记录数
select * from emp limit 10, 10;

注意:

  • 起始索引从0开始,起始索引 = (查询页码 - 1)*每页显示记录数。
  • 分页查询是数据库的方言,不同的数据库有不同的实现,MySQL中是limit。
  • 如果查询的第一页数据,起始索引可以省略,直接简写为limit 10。

3.4.8、多表关系

在这里插入图片描述

在这里插入图片描述

多表查询

在这里插入图片描述

select * from emp, dept;    # 笛卡尔积
select * from emp, dept where emp.dept_id = dept.id;

在这里插入图片描述

3.4.9、内连接查询

相当于查询A、B交集部分数据
1.隐式内连接:使用where条件消除无用数据

-- 语法: 
select 字段列表 from 表名1,表名2 where 条件;
-- 查询员工表的名称,性别。部门表的名称
SELECT emp.name,emp.gender,dept.name FROM emp,dept WHERE emp.`dept_id` = dept.`id`;SELECT t1.name, -- 员工表的姓名t1.gender,-- 员工表的性别t2.name -- 部门表的名称
FROMemp t1,dept t2
WHERE t1.`dept_id` = t2.`id`;

2.显式内连接

-- 语法: 
select 字段列表 from 表名1 [inner] join 表名2 on 连接条件;
-- 例如:
SELECT * FROM emp INNER JOIN dept ON emp.`dept_id` = dept.`id`;   
SELECT * FROM emp JOIN dept ON emp.`dept_id` = dept.`id`; 

3.4.10、外连接查询

左外连接:查询左表所有数据,以及两张表交集部分数据

-- 语法:
select 字段列表 from1 left [outer] join2 on 条件;
-- 例子:
-- 查询所有员工信息,如果员工有部门,则查询部门名称,没有部门,则不显示部门名称
SELECT  t1.*,t2.`name` FROM emp t1 LEFT JOIN dept t2 ON t1.`dept_id` = t2.`id`;

右外连接:查询右表所有数据,以及两张表交集部分数据

-- 语法:
select 字段列表 from1 right [outer] join2 on 条件;
-- 例子:
SELECT  * FROM dept t2 RIGHT JOIN emp t1 ON t1.`dept_id` = t2.`id`;

3.4.11、自连接和联合查询

1、自连接

--语法:
select 字段列表 from 表A 别名A join 表名A 别名B on 条件……;
--例子
select a.name '员工', b.name '领导' from emp a join emp b on a.managerid = b.id;

2、联合查询
对于union查询,就是把多次查询的结果合并起来,形成一个新的查询结果集

--语法:
select 字段列表 from 表A …… 
union [all]
select 字段列表 from 表B ……;

对于联合查询的多张表的列数必须保持一致,字段类型也需要保持一致。
union all会将全部的数据直接合并在一起,union会对合并之后的数据去重

3.4.12、子查询

SQL语句中嵌套select语句,称为嵌套语句,又称子查询

--语法:
select * from t1 where column1 = (select column1 from t2);

在这里插入图片描述
1、标量子查询
子查询返回的结果是单个值(数字、字符串、日期等),最简单地形式,这种子查询称为标量子查询
常用的操作符:= <> > >= < <=

# a. 查询”销售部“部门ID
select id from dept where name = '销售部';# b. 根据销售部门ID,查询员工信息
select * from emp where dept_id = 4;
select * from emp where dept_id = (select id from dept where name = '销售部');

2、列子查询
子查询返回的结果是一列(可以是多行),这种查询称为列子查询

常用的操作符: in、 not in、 any 、some 、all
在这里插入图片描述

# 查询 销售部 和 市场部 的部门ID
select id from dept where name = '销售部' or name = '市场部';
# 根据部门ID,查询员工信息
select * from emp where dept_id in (select id from dept where name = '市场部' or name = '销售部');

3、行子查询
子查询返回的结果是一行(可以是多列),这种子查询称为行子查询。

常用的操作符:= 、 <> 、 in、 not in

# 行子查询
# 查询 张无忌 的薪资及直属领导相同的员工信息
select salary, managerid from emp where name = '张无忌';# 查询与 张无忌 的薪资及直属领导相同的员工信息
select * from emp where (salary, managerid) = (select salary, managerid from emp where name = '张无忌');

4、表子查询
子查询返回的结果是多行多列,这种子查询称为表子查询。

常用的操作符:in

# 表子查询
# 查询 鹿杖客、宋远桥 的职位和薪资
select job, salary from emp where name = '鹿杖客' or name = '宋远桥';# 查询与 鹿杖客、宋远桥 的职位和薪资相同的员工信息
select * from emp where (job, salary) in (select job, salary from emp where name = '鹿杖客' or name = '宋远桥');

3.5、DCL(数据库控制语言)

3.5.1、管理用户

---查询用户
use mysql;
select * from user;
---添加用户
CREATE USER '用户名'@'主机名' IDENTIFIED BY '密码';
---删除用户
DROP USER '用户名'@'主机名';

3.5.2、权限管理

-- 查询权限
SHOW GRANTS FOR '用户名'@'主机名';
SHOW GRANTS FOR 'lisi'@'%';-- 授予权限
grant 权限列表 on 数据库名.表名 to '用户名'@'主机名';
-- 给张三用户授予所有权限,在任意数据库任意表上
GRANT ALL ON *.* TO 'zhangsan'@'localhost';-- 撤销权限:
revoke 权限列表 on 数据库名.表名 from '用户名'@'主机名';
REVOKE UPDATE ON db3.`account` FROM 'lisi'@'%';

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

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

相关文章

用python模拟天体运动(二体运动与天体轨道稳定问题)

目录 1. 模拟天体运动的代码 2. 运行效果 3. 非平方反比(轨道稳定性问题) 1. 模拟天体运动的代码 接下来我们将用python模拟实现天体运动 以下是我们所需要的库&#xff1a; import matplotlib.pyplot as plt import matplotlib.animation as animation import numpy …

Java安装及环境配置详细教程

1.1 下载 Java 安装包 官网下载链接[点击跳转] 建议下载202版本&#xff0c;因为202版本之后的 Oracle JDK 是商用收费的&#xff08;个人使用不收费&#xff09; 1.2 勾选红框中内容&#xff0c;然后点击下方下载 1.3 如果没有登录 Oracle 则会跳转到该页面&#xff0c;因为…

使用多元线性回归简单预测

模型和代码 数据格式如下&#xff1a;前21列作为模型输入X&#xff0c;最后5列作为模型输出Y。 训练集&#xff1a; 测试集&#xff1a; 代码&#xff1a; from numpy import genfromtxt import numpy as np from sklearn.ensemble import GradientBoostingRegressor from …

解锁编程潜能:ChatGPT如何革新软件开发

目录 一、背景 二、功能描述 三、总结 一、背景 在这个飞速发展的数字时代&#xff0c;软件开发的效率和质量成了衡量一个开发者能力的重要标准。随着人工智能技术的不断进步&#xff0c;越来越多的开发者开始寻找能够提升工作效率的新方法。我就是其中之一&#xff0c;最近…

蓝桥杯刷题(十一)

1.卡片 反向思考&#xff0c;看k种卡片可以分给几位同学 代码 n int(input()) k 1 while k*(k1)<2*n:k1 print(k)2.美丽的2 代码 def f(x)->bool:while x:if x%102:return Truex//10return False cnt 0 for i in range(1,2021):if f(i):cnt1 print(cnt)3.单词分析 …

vue3+vite项目打包遇到的问题

一、项目打包出现空白页 vite.config.js中&#xff0c;添加base: ./ import { defineConfig } from vite import vue from vitejs/plugin-vueexport default defineConfig({base: ./, })router/index.js&#xff0c;将路由模式改成hash模式 import { createRouter, createWe…

【c++】string类---标准库(STL)中的string类

主页&#xff1a;醋溜马桶圈-CSDN博客 专栏&#xff1a;c_醋溜马桶圈的博客-CSDN博客 gitee&#xff1a;mnxcc (mnxcc) - Gitee.com 目录 1.STL(标准库) 1.1 什么是STL 1.2 STL的版本 1.3 STL的六大组件 1.4 STL的重要性 1.5 如何学习STL 6.STL的缺陷 2. 为什么要学习st…

C++有关内存的那些事

个人主页&#xff1a;PingdiGuo_guo 收录转栏&#xff1a;C干货专栏 前言 本篇博客是讲解关于C内存的一些知识点的。 文章目录 前言 1.内存函数 1.1memcpy函数 1.2memmove函数 1.3 memset函数 2.各数据类型占用 2.1bool类型 2.2char类型 2.3short、int、long类型及整数…

SegFormer 项目排坑记录

SegFormer 项目排坑记录 任务记录创建conda环境 准备数据库和预训练参数程序配置修改测试可视化训练 任务 需要复现SegFormer分割项目&#xff0c;似乎还有点麻烦&#xff0c;参考这几个进行复现&#xff0c;记录下过程&#xff1a; SegFormer mmsegmentation CSDN博客 知乎博…

Docker 安装 Nginx 容器部署前端项目

先安装docker Docker安装详情 安装Nginx镜像 1、拉去取Nginx镜像 Nginx官方镜像 docker pull nginx 下载最新版Nginx镜像 (其实此命令就等同于 : docker pull nginx:latest ) docker pull nginx:xxx 下载指定版本的Nginx镜像 (xxx指具体版本号)我们拉去1.24.0的nginx镜像 …

视频号视频下载需要小程序提供下载支持!

前言&#xff1a;和大家分享一个视频号视频下载的方法&#xff01;可以帮助用户使用的工具将视频号视频保存到手机相册的&#xff01; 有时候在刷视频号的时候碰到自己喜欢的视频就情不自禁的想要把他下载下来&#xff0c; 1&#xff1a;遇到喜欢的视频视频怎么下载 例如&am…

中国传统游戏-幻方-c/c++实现

幻方&#xff08;Magic Square&#xff09;是一种将数字安排在正方形格子中&#xff0c;使每行、列和对角线上的数字和都相等的方法。 幻方也是一种中国传统游戏。旧时在官府、学堂多见。它是将从一到若干个数的自然数排成纵横各为若干个数的正方形&#xff0c;使在同一行、同…

Pytorch框架—文本情感分类问题项目(二)

整体过程就是首先拿到了数据集微博100K&#xff0c;对个这个评论数据集进行处理&#xff0c;分类标签和评论内容。对评论内容进行分词处理&#xff0c;之后进行词频统计对高词频的进行编码&#xff0c;低词频的进用《UNK》表示&#xff0c;并使用《PAD》把他们扩展到等长列表便…

MATLAB编译器配置:MinGW

使用 MATLAB 2022b版本&#xff0c;查询编译器时如上&#xff0c;想安装个MinGW编译器&#xff0c;自带的附加资源管理不好使&#xff0c;只能换个别的法子&#xff0c;经过一些参考&#xff0c;总结如下。 步骤1.在这里下载一个MinGW.最新版本是10.3.0.然后默认安装&#xff…

蓝桥杯刷题|03入门真题

目录 [蓝桥杯 2020 省 B1] 整除序列 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2020 省 AB3] 日期识别 题目描述 输入格式 输出格式 输入输出样例 说明/提示 代码及思路 [蓝桥杯 2019 省 B] 特别数的和 题目描述 输入格式 输出格…

谷歌的后量子密码学威胁模型

1. 引言 若现在不使用量子安全算法来加密数据&#xff0c;能够存储当前通信的攻击者最快十年内就能对其解密。这种先存储后解密的攻击是当前采用后量子密码学 (post-quantum cryptography&#xff0c;PQC) 背后的主要动机&#xff0c;但其他未来的量子计算威胁也需要一个深思熟…

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据

GEC6818——QT开发之两个UI界面切换与表格显示DHT11数据 使用环境: ubantu16 QT5.7 开发板GEC6818 实现要求&#xff1a; 利用A53按键1、按键2与温湿度传感器完成QT界面动态显示温湿度记录&#xff0c;并指定温湿度记录超过指定范围&#xff0c;进行报警&#xff08;LED&#…

天锐绿盾|公司开发部门源代码泄露防护系统,无感透明加密软件

#代码加密、代码防泄密、开发部门源码防泄漏、源代码透明加密、办公透明加密系统# 天锐绿盾作为一款针对企业数据安全的专业软件&#xff0c;特别是在防止公司开发部门源代码泄露方面&#xff0c;提供了智能无感透明加密保护系统。 德人合科技 | 天锐绿盾 PC地址&#xff1a; …

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体

【经验分享】Wubuntu------体验Windows和Ubuntu的结合体 最近看到有一款Wubuntu的文章&#xff0c;对于习惯使用windows操作系统&#xff0c;又不熟悉ubuntu系统的程序员小白来说&#xff0c;可以说是福音了。目前的Wubuntu兼容性可能还有一点问题&#xff0c;如果再迭代几次的…

Python库Gym:打开机器学习与强化学习的大门

Python库Gym&#xff1a;打开机器学习与强化学习的大门 强化学习作为人工智能领域的重要分支&#xff0c;已经在各种领域展现出了巨大的潜力。为了帮助开发者更好地理解和应用强化学习算法&#xff0c;Python库Gym应运而生。Gym提供了一个开放且易于使用的环境&#xff0c;供开…