MySQL数据库入门学习 #CSDN博文精选# #IT技术# #数据库# #MySQL#

大家好,小C将继续与你们见面,带来精选的CSDN博文~

又到周一啦,上周的系统化学习专栏已经结束,我们总共一起学习了20篇文章,这周将开启全新专栏《放假不停学,全栈工程师养成记》

在这里,你将收获:

  • 将系统化学习理论运用于实践,系统学习IT技术
  • 学习内容涵盖数据库、软件测试、主流框架、领域驱动设计和第三方生态等,离全栈工程师更近一步
  • 精心整理的CSDN技术大咖博文,假期学习实现弯道超车

 

下面就进入这个专栏的第一天学习吧~

 

本文转自CSDN博主@数学家是我的理想

1. 前言

作者作为一名大二在校生,因为正在学习网页设计,考虑到后台问题,所以便自学了数据库,可能给大家总结的不是很全,但是一些必要的点肯定会讲到。现在市场上有很多图形化的数据库,没有什么可讲的,读者如果愿意,自行下载研究即可,本文章讲的全是在DOS环境下的一系列操作。


2. MySQL基础知识

MySQL经常和“数据库”连在一起读,这很容易对新手造成误解,认为MySQL就是一个数据库,其实不是这样,MySQL是数据库的集合,MySQL里面有很多数据库,那么数据是直接存在数据库里的吗?并不,数据库底下还有一个叫做数据表的存储单元,数据表里面才存储数据。打个比方,好比一座大图书馆,就是MySQL,图书馆里面分南库,北库,这就是数据库,每个库里面的书都是放在书架上的,书架就是数据表,而放在书架上的很多本书,就是数据。这么说,读者应该理解了吧,所以按大小顺序排个序就应该是,MySQL>数据库>数据表>数据,所以我们接下来的内容也是按照这个顺序来展开。


3. 进入MySQL

工欲善其事必先利其器,如果连MySQL如何打开都不知道,那如何进行操作学习呢,所以接下来讲解的就是,如何在DOS环境下进入MySQL。
这里写图片描述

在这里,我们首先找到MySQL的安装路径,找到“bin”文件夹下的“mysql.exe”,记住这个路径,然后在DOS环境下输入你的路径“D:\BtSoft\WebSoft\mysql\MySQL5.7\bin\mysql -uroot -p”,这里解释一下后面加上“-uroot -p”的作用,因为进入MySQL是需要账号密码进行登陆的,账号密码默认都是“root”,所以当你输完路径之后,摁下回车,就会要求你输入密码。
这里写图片描述

既然讲到了账号密码,这里就给大家补充一点,如何免密码登陆

这里写图片描述

打开MySQL安装的文件夹,在里面找到一个名为“my.ini”的配置文件,通过记事本或者其他文本编辑的方式打开,在“[mysqld]”的下面加上一句话“skip-grant-tables”然后重启MySQL服务即可

这里写图片描述

再次进入MySQL的时候,出现“Enter password”要你输入密码,直接摁回车即可。然后会列出一系列MySQL的版本信息,不用管他,现在可以看到,底下出现了一个“mysql>”接下来就可以对MySQL数据库进行操作了

这里写图片描述


**4.数据库的基本操作 **

1. 查询数据库

show databases;

 

下面图片上展示的就是你当前有哪些数据库,这里因为作者之前创建过一些数据库,所以读者如果是第一次查询,可能我图片上的某些数据库你没有,这没有关系。这里要注意,因为数据库不止一个,即便是刚安装好的MySQL,里面默认存在的数据库也不止一个,所以是“databases”,千万别漏了“s”。

这里写图片描述

2. 创建数据库

create database XX(数据库名);

 

这里我创建了一个名为“hello”的数据库,显示“OK”,表示成功

这里写图片描述

在这里给大家补充一点,创建数据库的时候,默认的字符是”latin“,也就是拉丁文,现在读者可能体会不到有什么区别,等到数据表的操作的时候再讲。不过这里还是告诉大家,如何创建数据库的时候,自己定义为什么字符

create database XX(数据库名) charset = (字符编码,例如utf8);

 

我们平时学的中文的字符编码是“utf-8”,但是在MySQL里面,中文字符编码是“utf8”,这点希望读者注意。

创建数据库还有一些细节性的操作,这里也给读者提一下。

如果我们创建已存在的数据库,会发生什么事呢?下面我就创建一个已经存在的“test”数据库
这里写图片描述

果然,报错了,它告诉我,不能创建数据库“test”,因为这个数据库已经存在了,所以我们创建数据库的时候判断一下,如果不存在就创建

create database if not exists XX(数据库名); 

 

这段代码的好处是显而易见的,在我们这里可能体现不出来,但如果是做项目的时候或者在企业中,数据库非常非常多,你用肉眼看都要看花了,到底哪些数据库已经存在了,名字被用过了?所以就可以用上面这句代码,下面我们用这段代码创建一下“test”数据库,看会发生什么事情
这里写图片描述

看到没,显示“OK”,没有报错了,但是有一个警告,这个警告就是告诉用户,”test“这个数据库存在。

还有个问题,有的人创建数据库起的名字和关键字相同,会发生什么呢?(关键字就是MySQL中有特定作用的词,比如说“show”、“create”)
这里写图片描述

这里英文太长了,有兴趣的读者可以自己去翻译一下,但是这里我们可以确实看到的是,名为“create”的这个数据库没有创建成功,报错了,那如果有的人说我就想创建一个名为“create”的数据库,怎么办呢?下面给出解决办法

create database `XX`(数据库名);(注意,这里``是反引号,在键盘tab上面)

 

这里写图片描述

3. 显示数据库信息

show create database XX(数据库名);

 

这里写图片描述

这里可以看到,我刚才创建的“test”数据库,默认的字符是拉丁的,我之前创建的数据库,我设定了它的字符是中文,所以显示是“utf8”

4. 更改数据库的字符编码

alter database XX(数据库名) character set utf8;

 

5. 删除数据库

drop database XX(数据库名);

 

下面我删除刚创建的“hello”数据库
这里写图片描述

还是老问题,如果这个数据库不存在,我删除它,会发生什么呢?
这里写图片描述

很明显,报错了,因为不存在“a”这个数据库,我们可以判断一下,这个数据库存在才删除,下面给出代码。这里就不演示了,跟创建一样的。

drop database if exists XX (数据库名字);	

 

5. 选择数据库
这是数据库的最后一个基本操作,我们如果想要创建数据,必须要创建一个数据库,然后在数据库当中创建数据表,在数据表中进行操作,但是这么多数据库,计算机怎么知道我们选择的是哪个数据库呢?下面给出代码

use XX(数据库名);

 

这里写图片描述

选择数据库在我的理解更像是“进入数据库”,因为好比图书馆,我得进入一个某一个库,才能进行书架和图书的操作。


**5.数据表的基本操作 **

数据表的基本操作全都是在选择了数据库的前提下,请读者注意,下面的所有例子,都是在“test”的数据库内的操作

1. 创建表

create table XX(表名)(
字段1名 数据类型,
字段2名 数据类型,
.......
字段n名 数据类型
);

 

在讲解代码之前,请读者先想想,如果要你用Excel做一份班级成绩表,你会怎么做?肯定先有个标题吧,比方说“16级软件一班期末成绩表”,这里的标题就相当于我们的表名。标题有了,我们得在第一行写上“学号”、“姓名"、“总成绩"吧,来告诉看这个表的人,每一列代表的什么东西,这里的“学号”、“姓名"、“总成绩"就相当于我们的字段名。到这里,都这应该对这段代码有所了解了,下面我们创建一个数据表。

这里写图片描述

这里需要给大家补充一点MySQL数据类型的知识

数据类型:int 整型
		 tinyint 整型(0-256) 
		 decimal 浮点型(总位数,小数位数) 例如 decimal(3,1)
	     char(X) 定长字符型 例如 char(10)
		 varchar(X) 可变长度字符型 例如varchar(10)
		 text 大段文本
		 binary 二进制(存储照片等)

 

具体的没必要多说,只要了解常用的数据类型即可。现在我可以讲讲“Latin”和“utf8”的区别了,如果是在“Latin”字符下创建的数据表,那么一个中文等于两个字符,也就相当于,如果名字是四个字,就要char(8)。但如果是在“utf8”字符下创建的数据表,一个中文等于一个字符,如果名字是四个字,只需要char(4)就够了。

提醒读者一句,如果用关键字做字段名或者表名,要用反引号

创建数据表还有一些字段属性的设置,比方说

null:空
not null:不为空
default 'XXXX':默认值
auto_increment:自动增长
primary key:主键(主键的特点,不为空,不重复,一个表只能有一个主键,但是一个主键可以由多个列组成)

这些初学者用不到,讲起来很复杂,所以这里就不讲了,有兴趣的读者可以去百度自行了解。

2. 查看所有表

show tables;

我在前面就提过,一个MySQL里面有多个数据库,所以,一个数据库里面也可以有多个表,当然,一个表里面也可以有多个数据

这里写图片描述

这里因为我只在“test”数据库里创建了一个数据表“stu”,所以显示了一个

3. 显示创建表

show create table XX(表名);
show create table XX(表名) \G;

上面两段代码都是显示创建表,只不过显示的样式不同,读者随意选择一种即可

show create table stu

show create table stu \G;

4. 显示表结构

describe(或desc) XX(表名);

显示表结构就会展示表中有哪些字段,分别是什么类型,有没有默认值,为不为空,哪个是主键

这里写图片描述

5. 删除表(删除多个表)

drop table XX(表名);
drop table XX,XX,XX......; 

上面的一句代码是删除一个表,下面的代码是一次性删除多个表


**5.数据的基本操作 **

数据的操作算是整个MySQL中最复杂的部分,虽然概括起来无非就是“增删查改”,但每一项底下包含的内容非常之多,作者在这里只能尽量为大家解释比较重要的操作

1. 插入数据(增加)

insert into XX(表名) (字段1,字段2,字段3......) values (值1,值2,值3.......);

这里写图片描述

这里,我插入两组数据,分别是学号为“2016101”,姓名为“李白”,成绩是“83”和学号为“2016102”,姓名为“杜甫”,成绩是“91”的两位同学的信息

这里还需要给大家做一点补充,如果大家还记得之前我们创建数据表的时候,“id”和“name”都是varchar型,也就是字符串型,字符串型的数据,插入的时候就要加上""
字段可以和数据库中的字段顺序不一致,但是值和插入字段的顺序必须一致
插入字段是可以省略的,这时插入的值和数据表的字段顺序和个数必须一致

2. 查询数据(查)

这里本来应该按照顺序给大家讲删除数据的,但是因为想给的大家看一下插入数据之后,表内变成什么样了,让大家加深印象,所以这里讲查询数据,首先给大家介绍一个知识点——运算符

比较运算符 >、>=、<、<=、=(比较和赋值都是"=")、<>(不等于)
逻辑运算符 and(与)、or(或)、非(not)

  • 查询该表内的所有数据
select * from XX(表名);

举个例子,我们查询stu表下的所有数据,因为我等会讲的例子涉及到“性别”,所以我提前新增了一个字段名叫“sex”

这里写图片描述

  • 查询该表内某字段的所有数据
select 字段1,字段2,字段3......(或用"*"代替所有字段) from XX(表名);

举个例子,我们查询“id”字段底下所有的数据,那么”id“下有哪些数据,就会展现出来

  • 查询某条件的所有数据
select * from XX(表名)where 字段1 = 值1 and 字段2 = 值2 and ......;

这段代码的意思是,从某个表中找出满足条件一且满足条件二的数据,例如,我们想要寻找成绩等于91分,且性别为女的学生信息

这里写图片描述

这里也可以改成,我们想寻找成绩大于90分或者成绩小于60分的学生信息,那么代码就应该是

select * from stu where score > 90 or score < 60;
  • 由低到高排序
select * from XX(表名) order by 字段x asc;(默认就是升序)
  • 由高到低排序
select * from XX(表名) order by 字段x desc;
  • 按某条件排序
select * from XX(表名) where 字段x = 值x oreder by 字段x asc(desc);
  • 取前n条数据
select * from XX(表名) limit n;
  • 从第n条开始(起始位置是0)取m条
select * from XX(表名) limit n,m;
  • 查询某排序下的前n条数据
select * from XX(表名) order by 字段x asc(desc) limit n;

这几条语句之所以不附上例子,是因为考虑到读者如果有耐心看到了这里,那么你应该基本掌握了MySQL的语法,不再需要例子去模仿,只需要告诉你使用什么语句,所以下面的代码也是一样,不再附上例子

3. 删除数据(删)

delete from XX(表名) where 字段x = 值x;

4. 修改数据(改)

update XX(表名) set 字段1 = 值1,字段2 = 值2 where 条件;
update XX(表名) set 字段1 = 值1;

下面一条的作用是修改某一字段的所有值,所以不需要加条件

5.聚合函数

  • sum(); 求和 select sum(字段x) from XX(表名);
  • avg(); 求平均值 select avg(字段x) from XX(表名);
  • max(); 求最大值 select max(字段x) from XX(表名);
  • min(); 求最小值 select min(字段x) from XX(表名);
  • count(); 记录数 select count(字段x) from XX(表名);/select max(*) from XX(表名);
  • 在某字段条件下使用函数 select 函数名() from XX(表名) where 字段x = 值x;

 

如果你对这篇文章感兴趣,请戳链接移步博主首页查看更多!

https://mathor.blog.csdn.net

关注高校俱乐部,更多精彩内容等着你~