Mysql安装配置和Mysql使用六千字详解!!

news2024/11/18 19:35:15

目录

课前导读

一、Mysql的安装和配置

二、数据库简介:

1、数据库中典型代表:

2、数据库类型:

3、Mysql简介:

4、客户端和服务器简介:

三、初始MySQL

四、数据库操作

五、表的基本操作

六、表的基础增删查改(CRUD)

1、新增数据(C):

2、查询数据(R):

 3、修改数据(U) 

4、删除数据(D):

七、数据库约束

八、高级查询:

1、聚合函数查询: 

 2、分组查询:

3、联合查询(多表查询):

总结:



课前导读

本博主写的mysql代码,均在cmd命令行窗口实现,mysql有许多图形化界面,但我们日后学习工作需要熟练使用sql语句,所以我建议大家命令行窗口练习,这样虽然视觉效果不太好,但是能有效练习,没有图形化界面的提示,我们也能更快记住和使用。


一、Mysql的安装和配置

1、关于软件大家可以去官网下载:MySQL,也可以私聊博主领取软件,我这把建议下5.7版本的MySQL,更加稳定和适用,公司也能多在用,新版本的有很多潜在问题,不适合与新手。

2、软件的安装和配置问题可以去看咱大博哥的教学:mysql安装视频_哔哩哔哩_bilibili

3、如果前面有下载新版本需要卸载的友友,也可以去参考php网的卸载详细教程:mysql怎么卸载干净?-mysql教程-PHP中文网


二、数据库简介:

1、数据库中典型代表:

(1)Oracle

(数据库里最厉害的,但需要花钱而且还贵,很多大公司需要,对我们不适用)

(只有数据特别的特别重要的时候才会适用Oracle);

(2)MySQL

一个开源免费的数据库(白嫖~~),而且很多功能也比较全面和好用,对我们和中小型公司很适用;

(3)SQL Server 

很多高校都在要求使用的数据库,安装配置十分繁琐,卸载还很难完全卸载干净,典型吃力不讨好,咱也不懂为什么学习普遍适用,刚开始微软开发SQL Server是收费的,没有白嫖的mysql香,而且还是捆绑销售和window系统,企业服务器大多Linux系统,就导致SQL server根本不适用,这就使其发展很差!

(4)SQLite 

非常轻量的数据库,嵌入在安卓系统内部,很多app都在用这个数据库,整个数据库一共一个可执行文件,大小500多kb。

总结:三个数据库各有各自的优点,大同小异,我们只要掌握其中一个,工作用其他的,也能很快上手。

2、数据库类型:

(1)关系型数据库:

关系型数据库对数据的存储的格式有严格的要求,以类似于execl表格的方式进行存储,上面这几个就是典型代表。

(2)非关系型数据库:(Redis、MongoDB、HBase)

存储比较灵活,优势性能更快,同时更好能适用分布式环境,缺点是相对于关系型数据库,功能更少。

3、Mysql简介:

Mysql是一个客户端服务器结构的软件,安装MySQL的时候就已经把客户端和服务器一起安装好了。

4、客户端和服务器简介:

(1)客户端给服务器发送的数据,称为"请求"request;服务器给客户端返回的数据,称为"响应"response;

(2)客户端和服务器之间通过网络通信。

(3)一个服务器可以同时给多个客户端提供服务,多个客户端也可以同时给服务器发送请求,服务器进行对应的响应。

(4)客户端和服务器可以在同一个主机上,也可以在不同主机上,无论是不是在同一个主机上,都是通过网络进行通信的。当服务器和客户端不在一个主机上时,电脑不联网不影响数据库的使用,电脑有一个特殊的环回网卡,可以让主机发自己收,不通过网线/WiFi都可以通信。


------------------------接下来正式进入MySQL学习------------------------

三、初始MySQL

1、通过window+r打开运行窗口,输入cmd进入命令行窗口。

2、如果上面视频中的配置环境调节好了的,输入命令 mysql -u root -p 即可出现以下画面

 输入你下载时创建的密码即可进入MySQL(建议设置简单密码,避免忘记),出现如下所示的代码就证明MySQL打开成功了!

 3、如果出现各式各样不同的报错,需要百度自行搜索原因。


四、数据库操作

1、展示数据库:show databases;  即可展示你系统中所拥有的数据库了。

如果是这种情况,表示你没有输入完,应该加个 ; 号结束语句。

2、 创建数据库:create database mysqlfirst;创建自己的第一个数据库(注意:这里的database没有最后那个s)

 再通过show databases;展示就可以看见新增的数据库了。

3、选中指定数据库:use 数据库名  ,即可进入到整个数据库内部进行操作。

 Database changed就表示数据库变更成功,进入了你指定的数据库了。

4、删除数据库:drop database 数据库名,即可删除整个数据库里的内容和这个数据库

 

 再展示全部数据库就可以看见没有这个数据库了

 但是特别注意,删除数据库这个操作需要特别谨慎,不能随意删除!!!


五、表的基本操作

1、需要先进入某个数据库内部进行表操作,同上所示,我们进入数据库mysqlfirst

如果需要注释信息可以通过,(-- )来注释,--后面必须加个空格

2、展示数据库中的所有表:show tables; (前提是得use进入这个数据库)

 此时是空的,我们建个表后再去看,就能看见这个数据库中的表了。

 3、创建表:create table 自己取的表名 (列名 类型,列名 类型,~~~~列名 类型)

(特别注意:最后一个列名类型后面不加逗号)

类型:最常用整形的(int、double(M,D)(不准确)、decimal(M,D)(准确))

例如:id int  、  double(3,1) 3个有效数,1个小数,比如95.1,后面这个同上

类型:最常用的字符串:varchar()(变长字符串,括号里写它的最大长度)

例如:varchar(50)最长为50的字符串,他会动态适应你需要的字符串,最大不超过50.

 类型:最常用日期函数:datetime   (千年虫警告⚠

例如:创建一个有学号和姓名的学生表

 4、查询表的结构:desc 表名,(desc=describe)可以查询表中的具体信息。

5、删除表操作:drop table 表名 ,可以删除表及其中的所有信息(谨慎操作⚠)


六、表的基础增删查改(CRUD)

C create(新增) R retrieve(查询) U update(修改) D delete(删除)

1、新增数据(C):

insert into 表名 values(列,列,列····); 每次新增都是新增一行(先选中相应数据库!!!)。

这样就能看见数据插入到student表中了。(数据与定义表中的类型一定要匹配!)

show variables like '%character%';可以看数据库中的字符集是什么,如果是拉丁文就不能新增中文数据,可以参考这个博主博客:(66条消息) 【MySQL】修改MySQL中的编码方式_恒等于C的博客-CSDN博客_mysql编码格式修改

也可以在创建数据库时指定字符集,不过每次创建都需要写,比较繁琐,修改my.ini文件一直适用

 insert使用时也可以一次插入多条数据,例如:

也可以指定列插入,例如:(未插入的值会被desc中的default中的值替代)

2、查询数据(R):

  (1)全列查询:select * from student;  (*表示占位符,指代全部列的意思)

 (2)指定列查询:select name from student; (指定name这个字段列查询)

 (3)查询列与列之间计算的结果:select name,chinese+math+english from score;

(查询语数英三科总分)

 (4)查询时给列起别名:select name,chinese+math+english as sum from score;

(通过as关键字加在列的后面可以给它起别名,也可以空格起别名但不建议,加as可读性更高

 (5)查询的时候针对列进行去重:select distinct chinese from score;

distinct关键字可以指定一个列,也可以指定多个列,但指定多个列时只有全部列都相同才会进行去重操作!!(切记distinct关键字必须写在select后面,字段名前面,语法规定)

通过全列查询我们可以看到悟空和白龙马的成绩重复了,我们就可以通过distinct关键字去重

 

 (6)针对查询结构进行排序:select * from score order by chinese; (通过语文成绩升序排序)

order by关键字介绍:排序关键字,后面接排序的字段名,如果字段名后不加排序方式默认asc(升序排序), 加上desc则是降序排序。

1.如果排序中有null,null默认是最小值,比任何负数都小。

2.排序也可以针对表达式和别名进行排序。

3.排序还可以指定多个列进行排序,每个字段后面都能加asc和desc,但先以第一个字段进行排序,第一个字段相同再使用第二个字段进行排序,以此类推。

扩展知识:数据库中的排序方式,大概率时归并排序或是基于归并排序的加强算法。

 通过语文成绩降序排序

 针对别名和表达式进行排序:

 多个列进行排序:

 

(7)条件查询:select * from score where name='唐僧'; (查询姓名为唐僧的信息)

where关键字介绍:根据查询的结果进行筛选,把查询到的每一列都带入到where后面的条件中,看条件是真是假,把条件为真的保留作为临时表的结果,条件为假的舍弃。

条件筛选运算符:

 这里特别强调一个like运算符,这是个模糊匹配,和进行搜索查询等有关,%是通配符可以表示多个字符,_是占位符,只能表示一个字符。

select * from score where name like'唐_';(查询性唐的两个字的人名的信息)

 select * from score where name like '白%’ ;(查询姓白的人的信息)

 

(8)分页查询:select * from score limit 2; (查询从第一条开始的两条信息)

limit关键字介绍:分页关键字,很多时候数据较多一条展示出来看不完,就需要对数据进行分页,limit后面跟着的是查询的数据位置,后面可以跟个逗号写个数字表示起始索引,起始索引默认是0,如果你写作limit 2,1表示从第二条数据开始查到第三条,但不建议这样写,可以写作 limit 2 offset 1 ,这样可读性更高!(offset的值也是从0开始计算)

从默认索引开始查两条数据。

 3、修改数据(U) 

update 表名 set 列名 = 值 where 条件;

例如:update score set chinese =100 where name='悟空';(把悟空的语文成绩改为100分)

 还可以通过表达式进行成绩修改

例如:update score set chinese=chinese-5; (不加条件时默认是全部人,但不会对null行进行计算,不能写作-=这样,会报错)。

 

4、删除数据(D):

delete from 表名 where 条件; (谨慎操作!☠)

例子:delete from score where name='白龙马';  (删除白龙马的数据)

 


七、数据库约束

关系型数据库的一个重要功能,需要确保数据的完整性和正确性。

约束就是让数据库帮助程序猿更好的检查数据是否正确。

约束介绍:都需要在建表的时候进行添加!

 在primary key关键字指定时可以在他后面加上auto_increment,自增主键,自动根据添加数据的多少进行增加;

例子:create table adc(id int primary key auto_increment,name varchar(20) not null, idnumber int unique); (建立自增id主键约束,建立非空名字约束,建立唯一学号约束)

 


八、高级查询:

1、聚合函数查询: 

聚合函数查询主要是针对行行进行查询。

例如:select count(*) from score;

 2、分组查询:

select * from 表名 where + 条件 group by 列名 having +条件;

有三种情况:

1、分组前指定条件:先筛选再分组 where

2、分组后指定条件:先分组再筛选 having

3、分组前后都指定条件

例子:select role,avg(salary) from emp group by role order by avg(salary) desc; (根据职业进行分组再通过平均工资降序排序)

 sql的执行顺序:

3、联合查询(多表查询):

1、 多表查询的基本执行过程:笛卡尔积

笛卡尔积定义:两个表中的每个数据都互相进行一次组合,行变为两表行之积,列变为两表列之和。

准备两张关联表

 直接进行多表查询求得两张表的笛卡尔积

 但笛卡尔积中有很多无效数据,就是学生表中的班级id和班级表id不相同的即是无效数据,我们就需要对其进行筛选!

2、通过表名 . 列名可以访问到这个表中的对应列,防止两表列名相同访问冲突的情况。

select * from student,class where student.class_id=class.id;(通过班级id进行筛选)

得到两表联合的有效数据:

3、join on查询:select * from 表 join 表 on +条件

例子:select * from student join class on student.class_id=class.id;

三张表以上进行内连接时,需要先from 表1 join 表2 on 条件 join 表3 on 条件; 这样操作  

 4、内连接和外连接:内连接和外连接大多情况下没有区别。

如果要连接的两个表,里面的数据时一一对应的,这个时候,他们就没有什么区别,如果不是一一对应的,内外连接就有区别了。(如果是上面那样班级id一一对应的查询,内外连接就没有区别)

这时候我们就可以通过左外连接和右外连接来解决这种不是一一对应的问题了!

左外连接:select * from 表名 left join 表名 on 条件

(包含全部左表数据,包含满足条件的右表数据)

右外连接:select * from 表名 right join 表名 on 条件

(包含全部右表数据,包含满足条件的左表数据)

例子:我们可以看见嘻嘻嘻同学所在的四班是没有的,所以进行联合查询时就不能得到嘻嘻嘻同学的数据,但我们可以通过左外连接来进行联合就能得到其数据

 看不见嘻嘻嘻同学的信息

左外连接:这样就能看见嘻嘻嘻同学的信息了

 4、自连接:

就是数据库操作的小技巧,可以通过自己和自己连接,对其中的列进行操作!

 select * from 表1 as 别名 join 表1 as 别名 on 条件

但特别注意需要对表进行取别名操作,因为表名相同在进行条件筛选时会有重复导致无法执行。

例子:select * from student as s1 join student as s2 on s1.id=s2.id;

5、子查询:(慎用!!) 

子查询通俗来讲就是嵌套查询,无线套娃!!

select * from 表名 where 条件=(select * from 表名 where 条件); (就是让多个查询进行嵌套)

注意,当子查询返回结果有多个时,where条件里要用in接收。如果数据较多时可以用exits来替换in

例子:select * from student where id=(select id from student where id=1);

 


总结:

以上就是关于sql的全部基本用法以及操作了,只要你熟悉以上所有操作且能在特定场景进行特点的使用,你就能胜任公司大多数操作了,关键是得基础牢靠,sql语句必须熟悉,这很可能是我们以后进公司的日常工作,如果连个最简单的数据库操作都不能熟练掌握以及运用,我们又怎么能胜任项目工作呢?

所以所有成功的开始还得基于牢靠的基础,努力学习,坚持编码,编程伴随每一天!

以上内容有所借鉴和引用,如果有所冒犯,联系删除!

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

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

相关文章

虚拟主机、WordPress 主机和云主机之间的区别

💂 个人网站:【海拥】【摸鱼游戏】【神级源码资源网站】🤟 前端学习课程:👉【28个案例趣学前端】【400个JS面试题】💅 想寻找共同学习交流、摸鱼划水的小伙伴,请点击【摸鱼学习交流群】💬 免费且…

[附源码]JAVA毕业设计校园失物招领管理系统(系统+LW)

[附源码]JAVA毕业设计校园失物招领管理系统(系统LW) 项目运行 环境项配置: Jdk1.8 Tomcat8.5 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目…

港科夜闻|罗康锦教授获委任为香港科大工学院院长

关注并星标每周阅读港科夜闻建立新视野 开启新思维1、罗康锦教授获委任为香港科大工学院院长。该委任任期由2023年1月1日开始。罗康锦教授服务香港科大多年,是智慧交通系统、智慧城市和可持续发展的杰出学者,在学术研究方面屡获殊荣。罗教授拥有丰富的学…

阿里巴巴内部最新发布SpringCloud ALiBaBa全彩版

就在昨天,阿里巴巴发布了最新的SpringCloud ALiBaBa全解第三版同时也是全彩版,话不多说我们直接来看干货! 由于文章的篇幅有限,下面只能为大家展示目录内容,需要领取完整版可以文末免费获取章节目录 微服务介绍 微服务…

Go 实现插入排序算法及优化

Go 实现插入排序算法及优化插入排序算法实现算法优化小结耐心和持久胜过激烈和狂热。 哈喽大家好,我是陈明勇,今天分享的内容是使用 Go 实现插入排序算法。如果本文对你有帮助,不妨点个赞,如果你是 Go 语言初学者,不妨…

python基于SVM的疫情评论情感数据分析

1、构建SVM情感分析模型 读取数据 使用pandas的库读取微薄数据读取并使进行数据打乱操作 import pandas as pd test pd.read_csv(".\\weibo.csv") test_data pd.DataFrame(test)[:1000] test_data 打乱数据 re_test_data test_data.sample(frac1).reset_index(…

代码随想录训练营第44天|完全背包、LeetCode 518. 零钱兑换 II、 377. 组合总和 Ⅳ

完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。 完全背包和01背包问题唯一不同…

前端工程化实践——快速入门treeshaking

treeshaking treeshaking本质是去除多余代码算法。在前端的性能优化中,es6 推出了tree shaking机制,tree shaking就是当我们在项目中引入其他模块时,他会自动将我们用不到的代码,或者永远不会执行的代码摇掉,在…

【Java设计模式】用盖房子案例讲解建造者模式(生成器模式)

一、前言 今天学习了Java设计模式中的建造者模式,细心整理了学习笔记以及对这个模式的自我理解,希望大家喜欢! 二、需求介绍 现在我们需要建房子,过程为打桩、砌墙、封顶。房子有各种各样的,比如普通房,…

【Java开发】 Spring 10 :Spring Boot 自动配置(Auto Configuration)原理及手动实现

用了这么久的 SpringBoot ,我们再来回顾一下它,本文介绍 Spring Boot 的自动配置,这是它区别于 Spring 的最大的点,本文的自动配置项目包含三个项目,建议拉取仓库里的代码进行实践:尹煜 / AutoConfigDemo …

SOFA Weekly|MOSN v1.3.0 版本发布、公众号半自助投稿、本周 Contributor QA

SOFA WEEKLY | 每周精选 筛选每周精华问答,同步开源进展欢迎留言互动~SOFAStack(Scalable Open Financial Architecture Stack)是蚂蚁集团自主研发的金融级云原生架构,包含了构建金融级云原生架构所需的各个组件&#…

不接受反驳,性能最强,功能最强的Java日志框架

Logback 算是JAVA 里一个老牌的日志框架,从06年开始第一个版本,迭代至今也十几年了。不过logback最近一个稳定版本还停留在 2017 年,好几年都没有更新;logback的兄弟 slf4j 最近一个稳定版也是2017年,有点凉凉的意思。…

tep支持pytest-xdist分布式执行用例及合并Allure报告

tep近期更新频率较快,一方面是作者在积极投入到tep工具开发中;另一方面是我们聚集了20位小伙伴,一起合力打造EasyPytest测试平台,teprunner的FastAPI升级版本,依托于tep,帮你高效管理pytest测试用例。陆续也…

使用OpenGPT(ChatGPT)搭建 QQ 机器人

本教程来自:OpenGPT搭建QQ机器人-憨憨博客 有问题可来我博客询问:我的博客 准备 一个服务器:Windos,Centos,Ubuntu 环境:Python 一个 QQ 号用作机器人 一个 OpenAI 账号 (注册教程自行搜索) 搭建 这里我用…

Java最流行的Spring框架该怎么学?阿里、腾讯、字节跳动等大厂面试中关于Spring都会问什么?

Spring作为现在最流行Java 开发技术,其内部源码设计非常优秀。如果你不会Spring,那么很可能面试官会让你回家等通知。 Spring是什么? 有一个工地,几百号人在用铁锹铲子挖坑。 如果开一辆挖掘机来,用一天时间干的活就…

【数据结构与算法】图

目录 一、图的基本概念 二、图的存储结构 1、邻接矩阵 2、邻接表 三、图的遍历 1、DFS 2、BFS 四、最小生成树 1、Kruskal算法 2、Prim算法 五、最短路径问题 1、Dijkstra 2、Bellman-Ford 3、Floyd-Warshall 总结 一、图的基本概念 图是由顶点集合及顶点间的关…

tslearn学习:快速入门

文章目录前言一、安装二、时间序列格式2.1 格式化时间序列2.2 读取标准数据集三、机器学习算法3.1 分类3.2 回归3.3 最近邻搜索3.4 聚类前言 tslearn快速入门学习。官网:tslearn quick-start 一、安装 采用pip install安装tslearn库 pip install tslearn二、时间…

基于C#制作一个音乐播放器

此文主要基于C#制作音乐播放器,可实现导入本地歌曲、音乐播放、音量设置、歌词显示等。 实现流程1.1、创建项目1.2、准备素材1.3、功能开发实现流程 1.1、创建项目 打开Visual Studio,右侧选择创建新项目。 搜索框输入winform,选择windows窗…

测控一体化闸门 灌区智能控制闸门 渠道智能测控闸门系统解决方案

平升电子测控一体化闸门系统/灌区智能控制闸门/渠道智能测控闸门系统解决方案集闸门远程/自动控制、渠道水位流量监测、远程通信、图像/视频监控等功能于一体,具备多种闸门启闭控制方式和多种流量计量方式,应用于支渠、斗渠、农渠的精准用水控制与计量。…

数据库原理及MySQL应用 | 程序流程控制

解决复杂问题不可能通过一个SQL语句完成,我们需要执行多个SQL操作。流程控制语句的作用就是控制存储过程或存储函数中SQL语句的执行顺序,是我们完成复杂操作必不可少的一部分。 流程控制语句是指可以控制程序运行顺序的语句,程序运行顺序主要…