智警杯数据库学习(1)

CentOS中安装MySQL数据库

检测系统是否自带安装 MySQL

首先检查是否自带mysql

rpm -qa | grep mysql

如果有删除

rpm -e mysq

未安装,开始安装

进入software目录,解压安装包mysql5.7.25
cd /root/software
tar -xvf mysql-5.7.25-1.el7.x86_64.rpm-bundle.tar
安装组件rpm -ivh

在安装组件是存在一定的先后顺序,还是按照以下顺序来安装避免浪费时间

rpm -ivh mysql-community-common-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-libs-compat-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.25-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.25-1.el7.x86_64.rpm

组件的包就在software下面,分别是common,libs,libs-5,client,server,找到去用rpm -ivh安装

初始化mysql数据库
# 不使用root用户,密码为空
/usr/sbin/mysqld --initialize-insecure --user=mysql

后台启动服务
/usr/sbin/mysqld --user=mysql &

免密登录

如果出现免密登录报错的情况应该是在安装组件的时候顺序不对,而且可以在初始化数据库的语句后面加“&”

mysql -uroot

修改mysql登陆密码(教学改为:123456)
use mysql
update mysql.user set authentication_string=password('123456') where user='root';
flush privileges;

创建用户
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

执行 flush privileges命令立即生效
flush privileges;
查询数据库的用户
SELECT DISTINCT CONCAT('User: ''',user,'''@''',host,''';') AS query FROM mysql.user;

数据库与数据表的管理

mysql语句

创建数据库

create database name;

如果存在数据库就会显示数据库已存在

创建相同数据库,使用if not exixts,防止报错

查看所有数据库

show databases;

有些是默认创建的数据库

查看指定数据库

show database create name;

修改数据库

核心的关键字是alteralter database用于更改数据库全局特性,用户必须具有数据库 修改权限,才可以使用alter database修改数据库。语法后面的默认字符集以及默认校对规则是可选项,不是必选项。

alter database db_name character set new_charset;

alter database为修改数据库的固定语法格式。 db_name为要修改的数据库名称。 character set表示修改的是数据库的字符集。 new_charset为新的字符集名称。

删除数据库

 语法关键是dropif exists也是可选项,如果不加该语句,删除不存在的数据库就会报错。与if not exists语句正好相反,同样也是具有避免抛错的作用。

drop database name;
创建表
create table student(
id INT(8),
name VARCHAR(20),
gender VARCHAR(1),
age INT(2)
);

查看student表的基本结构
desc student;
查看student表的详细结构
show create table student;
修改表名
student表的名称修改为sxt_student
alter table student rename to sxt_student;
alter table student rename sxt_student;

修改之后通过查询所有表来判断是否修改成功,查询表结构和之前是否完全相同

修改一个字段的数据类型
sxt_student表中的“id”字段的数据类型由int(8)修改为int(10)
alter table sxt_student modify id int(10);
使用desc语句查看表的基本结构,验证数据类型是否修改成功
desc sxt_student;

修改多个字段的数据类型
sxt_student表中的“id”字段的数据类型修改为int(20),将“name”字段的数据类型修改为varchar(10)
alter table sxt_student modify id int(20), modify name varchar(10);
使用desc语句查看表的基本结构,验证数据类型是否修改成功
desc sxt_student;

修改字段名
alter table 表名 change 字段名 改为什么
sxt_student表中“gender”的字段名修改为“sex”
alter table sxt_student change gender sex varchar(1);
使用desc语句查看表的基本结构,验证字段名是否修改成功

增加字段
alter table 表名 add 添加内容 位置or类型
sxt_student表的最后位置添加一个名为“score”的字段,数据类型为float
alter table sxt_student add score float;

sxt_student表的第一个位置添加一个名为“phone”,数据类型为varchar(11)的字段
alter table sxt_student add phone varchar(11) first;
之后使用desc语句查看表的基本结构,验证字段是否增加成功

修改字段的排列位置
将“id”字段移动到表的第一个位置。
alter table sxt_student modify id int(20) first;

删除字段
 alter table 表名 drop 删除字段
alter table sxt_student drop phone;
删除使用desc语句查看表的基本结构,是否删除成功
删除表
drop table 表名
使用show tables语句查看数据库中所有的表,检查表是否删除成功

数据库基本语句

插入数据

插入数据的四种方式:为所有字段插入数据,为指定字段插入数据,同时插入多条数据,插入查询结果

为所有字段插入数据
insert [into] table_name [(column_name1, column_name2, ···)] values|value (value1, value2, ···);

AUTO_INCREMENT 表示该字段的值会自动递增,每次插入新记录时,数据库会自动生成一个唯一的整数值。

PRIMARY KEY 是主键约束,表示 stu_id 是表的主键,唯一标识表中的每一行记录。

DEFAULT是设置默认值为‘nan’

unique是唯一性约束,代表这个表中只能存在一个这个数据,不能出现重复的数据

为指定字段插入数据
insert [into] table_name (column_name1, column_name2, ···) values|value (value1, value2, ···);

column_name1column_name2分别指定添加数据的字段名。 value1value2分别表示column_name1字段和column_name2字段的值。 在此需要注意的是,value值要和指定字段的顺序、数据类型相对应,即value1对应column_name1字段,value2对应column_name2字段。

同时插入多条数据

MySQL中提供了同时插入多条数据的SQL语句,其可以实现为所有字段或指定字段同时插入多条数据

为所有字段同时插入多条数据
insert [into] table_name [(column_name1, column_name2, ···)]
values|value (value11, value21, ···),
(value12, value22, ···),
···;

为指定字段同时插入多条数据
insert [into] table_name (column_name1, column_name2, ···)
values|value (value11, value21, ···),
(value12, value22, ···),
···;

插入查询结果

MySQL中还可以通过insert语句将从一张表中查询到的结果直接插入到另一张表中,这样就间接地实现了数据的复制功能

insert [into] table_name1(column_list1)
select column_list2 from table_name2 where where_condition;

通过select查询之后的结果放入到新表中,相当于是把旧表复制到新表中,类似子查询

更新指定记录

更新指定记录的前提是根据条件找到指定的记录,SQL语句需要结合使用updatewhere语句

update table_name
set column_name1 = value1[, column_name2 = value2, ···]
where where_condition;

将原表中zhangsan的名字和email更新为新值

更新全部记录

在SQL语句基础上去掉where子句即可

update table_name set column_name1 = value1[, column_name2 = value2, ···];

将原表中所有人的年龄更新为20

删除指定记录

根据条件找到指定的记录,需要结合使用deletewhere语句

delete from table_name where where_condition;

删除全部记录

在上述的语句中去掉where

delete from table_name;

使用truncate语句删除数据
truncate [table] table_name;

删除学号大于6的

所有字段的查询
select column_name1, column_name2, ··· , column_namen from table_name;

select * from table_name;

查询所有的字段可以使用select来指定所有的字段名,也可以用*通配符来匹配所有的字段名

指定字段的查询
select column_name1, column_name2, ··· from table_name;

select指定查询的字段就行

去除重复记录的查询

使用distinct去除重复部分

select distinct column_name1, column_name2, ··· from table_name;
使用算术运算符的查询

使用字段别名的查询

用as来命名字段的别名

select column_name1 [as] othername1, column_name2 [as] othername2, ··· from table_name;
设置数据显示格式的查询

用concat函数设计数据显示的格式

数据库进阶查询

实训
数据库支持中文字符
Set character_set_database='utf8';
Set character_set_server='utf8';

创建数据库并且插入数据之后

统计每个学生的成绩总分

select a+b+c as new name from table_name

1.将表中姓名和班级连起来,格式为:张飞(2);
2.指定分隔符(-)对数据中姓名、语数外进行连接。

第一问是要把姓名和班级连起来,就要改变数据的显示格式,用concat来实现

CONCAT 函数用于将多个字符串连接在一起

第二问指定分隔符连接

GROUP_CONCAT 函数可以用来将分组后的数据进行连接,并可以指定分隔符

聚合函数
1.计算各班级学生数学平均成绩
2.计算1班中语文最高分

第一题用聚合函数求平均分,再使用group by分组查询,因为涉及各班级的平均分

第二题计算一班语文最高分

分组 group by

1.计算各班级学生数学平均成绩

各班级平均分,分组查询,求数学平均成绩

2.计算数学平均分80以上的班级

Having

having的使用

过滤聚合结果:在数据分组后,根据聚合结果进行筛选。

复杂条件过滤:在聚合函数结果的基础上添加复杂条件。

对特定分组进行进一步分析:在分组后,进一步筛选需要关注的特定分组。

having和where的区别

WHERE 子句用于过滤原始数据,在数据被分组之前进行过滤。

HAVING 子句用于过滤分组后的数据,通常和聚合函数一起使用。

case when检索函数

CASE WHEN 是 SQL 中用于实现条件逻辑的表达式,允许根据条件对数据进行分类、计算或选择。它类似于编程语言中的条件语句,如 if-else

CASE 关键字开始 CASE WHEN 表达式。

每个 WHEN 子句后面跟随一个条件 (condition) 和一个结果 (result)。

可以有多个 WHEN 子句,每个条件可以是复杂的逻辑表达式。

ELSE 子句是可选的,用于指定所有条件都不满足时的默认结果 (else_result)。

END 结束 CASE WHEN 表达式。

1.对英语成绩进行划分,>90为优秀,<=90 and >=60为良好,<60为不及格。

2.对英语成绩进行划分,>90为优秀,<60为不及格,null为缺考,其他为良好。

3.对英语成绩进行评估,统计有多少学生成绩为优秀

视图

视图(View)是一种虚拟的表,它是基于 SQL 查询结果定义的命名查询。视图并不存储实际的数据,而是根据定义的查询从一个或多个表中获取数据。通过视图,可以将复杂的查询结果保存为一个可重复使用的对象,简化了数据访问和提高了安全性

创建视图名为‘班级人数’,按照班级分组,进行各班人数计数。

create view 视图名称(<视图列名1>,<视图列名2>,......) as <select 查询语句>;

子查询

将一个查询语句包含在另一个查询语句中,那么这个查询语句就是子查询语句。可以认为是将定义视图的select语句直接用于from子句中

哪些学生的数学成绩比“张飞”的高?

关联子查询

关联子查询(Correlated Subquery)是一种特殊的子查询形式,在执行过程中与外部查询相关联。与普通的子查询不同,关联子查询的每一次执行都依赖于外部查询的当前行。这种关联关系使得子查询的执行次数通常比外部查询的行数多,因此可能会对性能产生影响

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

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

相关文章

【决战欧洲杯巅峰】欧洲杯含金量比世界杯高吗?有走地数据分析软件吗?

关于欧洲杯和世界杯的含金量对比&#xff0c;这是一个相当主观的问题&#xff0c;因为两者的价值和重要性很大程度上取决于个人的喜好和观点。但我可以从一些关键方面来为你提供比较的视角。 首先&#xff0c;从参赛队伍和竞技水平来看&#xff0c;世界杯无疑是全球范围内最具…

[渗透测试学习] SolarLab-HackTheBox

SolarLab-HackTheBox 信息搜集 nmap扫描端口 nmap -sV -v 10.10.11.16扫描结果如下 PORT STATE SERVICE VERSION 80/tcp open http nginx 1.24.0 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows n…

C/S、B/S架构(详解)

一、CS、BS架构定义 CS架构&#xff08;Client-Server Architecture&#xff09;是一种分布式计算模型&#xff0c;其中客户端和服务器之间通过网络进行通信。在这种架构中&#xff0c;客户端负责向服务器发送请求&#xff0c;并接收服务器返回的响应。服务器则负责处理客户端的…

浅谈RC4

一、什么叫RC4&#xff1f;优点和缺点 RC4是对称密码&#xff08;加密解密使用同一个密钥&#xff09;算法中的流密码&#xff08;一个字节一个字节的进行加密&#xff09;加密算法。 优点&#xff1a;简单、灵活、作用范围广&#xff0c;速度快 缺点&#xff1a;安全性能较差&…

Pytorch编写Transformer

本文参考自https://github.com/datawhalechina/learn-nlp-with-transformers/blob/main/docs/ 在学习了图解Transformer以后&#xff0c;需要用Pytorch编写Transformer&#xff0c;下面是写代码的过程中的总结&#xff0c;结构根据图解Transformer进行说明。 import numpy as …

前字节员工自爆:我原腾讯一哥们,跳槽去小公司做小领导,就签了竞业,又从小公司离职去了对手公司,结果被发现了,小公司要他赔80万

“世界那么大&#xff0c;我想去看看”&#xff0c;这句曾经火遍网络的辞职宣言&#xff0c;说出了多少职场人心中的渴望。然而&#xff0c;当我们真的迈出跳槽那一步时&#xff0c;才发现&#xff0c;现实远比想象中残酷得多。 最近&#xff0c;一起前字节跳动员工爆料的事件…

年终奖发放没几天,提离职领导指责我不厚道,我该怎么办?

“年终奖都发了&#xff0c;你还跳槽&#xff1f;太不厚道了吧&#xff01;” “拿完年终奖就走人&#xff0c;这不是典型的‘骑驴找马’吗&#xff1f;” 每到岁末年初&#xff0c;关于“拿到年终奖后是否应该立即辞职”的话题总会引发热议。支持者认为&#xff0c;这是个人…

如何验证Rust中的字符串变量在超出作用域时自动释放内存?

讲动人的故事,写懂人的代码 在公司内部的Rust培训课上,讲师贾克强比较了 Rust、Java 和 C++ 三种编程语言在变量越过作用域时自动释放堆内存的不同特性。 Rust 通过所有权系统和借用检查,实现了内存安全和自动管理,从而避免了大部分内存泄漏。Rust 自动管理标准库中数据类…

PID控制算法学习笔记分享

目录 一、参数设定 二、PID计算公式 三、位置式PID代码实现 四、增量式PID代码实现 五、两种控制算法的优缺点 六、PID算法的改进 一、参数设定 比例系数&#xff08;kp&#xff09;&#xff1a;P项的作用是根据当前误差的大小来产生一个控制量。它直接与误差成正比&#…

【机器学习300问】126、词嵌入(Word Embedding)是什么意思?

人类的文字&#xff0c;作为一种高度抽象化的符号系统&#xff0c;承载着丰富而复杂的信息。为了让电脑也能像人类一样理解并处理这些文字&#xff0c;科学家们不断探索各种方法&#xff0c;以期将人类的语言转化为计算机能够理解的格式。 一、One-Hot编码的不足 在自然语言处…

NSSCTF中的[WUSTCTF 2020]朴实无华、[FSCTF 2023]源码!启动! 、[LitCTF 2023]Flag点击就送! 以及相关知识点

目录 [WUSTCTF 2020]朴实无华 [FSCTF 2023]源码&#xff01;启动! [LitCTF 2023]Flag点击就送&#xff01; 相关知识点 1.intval 绕过 绕过的方式&#xff1a; 2.session伪造攻击 [WUSTCTF 2020]朴实无华 1.进入页面几乎没什么可用的信息&#xff0c;所以想到使用dis…

Spring MVC学习记录(基础)

目录 1.SpringMVC概述1.1 MVC介绍1.2 Spring MVC介绍1.3 Spring MVC 的核心组件1.4 SpringMVC 工作原理 2.Spring MVC入门2.1 入门案例2.2 总结 3.RequestMapping注解4.controller方法返回值4.1 返回ModelAndView4.2 返回字符串4.2.1 逻辑视图名4.2.2 Redirect重定向4.2.3 forw…

Shopee菲律宾本土店允许中途无理由退货,如何应对退货后库存混乱问题?

Shopee菲律宾本土店最近实施了一项新政策&#xff0c;自2024年6月10日起&#xff0c;允许买家在商品仍在运输途中申请退货与退款&#xff0c;此即“在途退货/退款”功能&#xff0c;主要的目的是为了提升买家的购物体验&#xff0c;增强市场竞争力。 图源&#xff1a;Shopee菲律…

一年前 LLM AGI 碎片化思考与回顾系列⑤ · 探索SystemⅡ复杂推理的未知之境

阅读提示&#xff1a; 本篇系列内容的是建立于自己过去一年在以LLM为代表的AIGC快速发展浪潮中结合学术界与产业界创新与进展的一些碎片化思考并记录最终沉淀完成&#xff0c;在内容上&#xff0c;与不久前刚刚完稿的那篇10万字文章 「融合RL与LLM思想&#xff0c;探寻世界模型…

vue3delete请求报403forbidden,前后端解决方式,cookie无效问题

在做开发时&#xff0c;前期已经在Controller类加上CrossOrigin(origins "*")&#xff0c;发送get和post请求都没问题&#xff0c;但遇到delete请求时&#xff0c;又报出跨域问题 一.前端添加proxy代理服务器&#xff08;未能解决&#xff09; 在vue.config.js中使…

连接Huggingface报requests.exceptions.SSLError错误

最近在学习使用 SHAP 算法解释 BERT 模型的输出结果&#xff0c;然而在从 Huggingface 上导入模型和数据集的过程中出现了网络连接相关的错误&#xff0c;本文用于记录错误类型和解决错误的方法。 1 代码示例 SHAP 官方展示的代码如下&#xff1a; import datasets import nu…

Linux screen命令使用

文章目录 1. 前言2. screen是什么?3. screen使用场景描述3. screen常用命令4. 小结5. 参考 1. 前言 实际开发中用到的云服务器&#xff0c;如果项目使用的是python&#xff0c;需要利用项目运行一些时间较长的项目程序脚本的话&#xff0c;由于我们通过ssh连接远端服务器&…

一文详解扩散模型

文章目录 1、常见的生成模型2、变分推断简介3、文生图的评价指标4、Diffusion Models5、其他技术交流群精选 节前&#xff0c;我们星球组织了一场算法岗技术&面试讨论会&#xff0c;邀请了一些互联网大厂朋友、参加社招和校招面试的同学。 针对算法岗技术趋势、大模型落地…

2024年通信安全员ABC证证考试题库及通信安全员ABC证试题解析

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2024年通信安全员ABC证证考试题库及通信安全员ABC证试题解析是安全生产模拟考试一点通结合&#xff08;安监局&#xff09;特种作业人员操作证考试大纲和&#xff08;质检局&#xff09;特种设备作业人员上岗证考试大…

项目3:从0开始的RPC框架(扩展版)-3

七. 负载均衡 1. 需求分析 目前我们的RPC框架仅允许消费者读取第一个服务提供者的服务节点&#xff0c;但在实际应用中&#xff0c;同一个服务会有多个服务提供者上传节点信息。如果消费者只读取第一个&#xff0c;势必会增大单个节点的压力&#xff0c;并且也浪费了其它节点…