MySQL数据库
在学习之前,我们要了解什么是MySQL数据库?
MySQL数据库是一个开源的关系型数据库管理系统,我们可以使用SQL(Structured Query Language)作为开发语言,对数据进行操作,并且,该数据库支持多用户,多线程,多种存储引擎,因此被广泛的应用于Web开发中。
简单来说,MySQL数据库就是一个存储数据的仓库,结构大体为:数据库管理系统+数据的存储,也是一种C/S框架的数据库。(C/S框架:即客户端/服务器框架,它将客户端与服务器分开,客户端负责发送请求,服务端负责接收并处理请求,然后将结果返回给客户端)
MySQL数据库的优点
相对于普通文件的存储,使用MySQL数据库有以下三个优点:
1.可以提供更好的数据组织和管理:MySQL数据库可以将数据存储在表格中,每个表可以包含多个字段,方便数据的组织和管理。同时,MySQL还支持索引、事务等功能,进一步提高了数据的组织和管理能力。
2.支持并发访问:MySQL数据库可以支持多个用户同时访问数据库,而不会发生数据冲突、数据丢失等问题。这是因为数据库会对并发访问进行锁定和隔离,确保每个用户都可以安全地访问和修改数据。
3.拥有更好的性能和可扩展性:MySQL数据库可以通过优化查询、调整参数等方式提高查询性能,同时还支持主从复制、分区等功能,可以提高系统的可扩展性。
4.数据安全性更高:MySQL数据库可以对数据进行加密、备份、恢复等操作,确保数据不会遭受丢失、损坏或被盗窃。
因此在大型应用系统的开发中,数据库被广泛的应用,这也是我们必须要学习的理由。
MySQL数据库的基础操作
首先我们需要在Linux中使用以下语句进入MySQL数据库
mysql -uroot//没有密码,直接进入数据库
mysql -uroot -p//有密码,需要输入,成功则进入
由于是学习,这里我们不去讨论为数据库创建密码,我们这里直接登录即可。
对于MySQL数据库的操作,由于我们使用的是SQL语句,所以有以下三点注意事项:
- 每条SQL语句总是以;作为结尾
- SQL语句中的关键字不区分大小写,不区分单引号和双引号
- SQL中库的名称,表的名称,字段的名称不能与关键字重名,如果我们必须要重名,就必须以` xxx `的形式写出,如下所示:
本来我们的desc是查看表的结构,但这里我们使用反引号强行将desc作为数据库的名称,这里我们也需要注意,如果我们使用该数据库时,也需要用反引号将其引起使用,告诉数据库,这个desc并不是操作符,而是数据库名称。
库的操作
下面我们来看下在库方面的基本操作:
1.查看全部数据库
show databases;//查看MySQL数据库中的所有库
2.创建数据库
create database 数据库名称;//创建数据库,若存在,则会报错
create database if not exists 数据库名称;//若数据库存在,则不会创建;若不存在,则创建
3.选择数据库
use 数据库名称//选择我们需要使用的数据库名称
登录成功后,会出现以下改变
如果不放心,我们也可以使用指令
select database();//查看当前所使用的数据库
4.查看指定数据库的创建语句
show create database 数据库名称;
5.删除数据库
drop database 数据库名称;//删除指定数据库
以上都是操作在数据库层面的语句,操作和理解都比较简单,接下来我们来看数据库中数据的存储类型。
数据类型
这里的数据类型,我主要举例的是我们常使用的类型,共分为四类:
- 数值类型:整形(int),浮点型(float,double),定点数(decimal)等。其中,定点数的使用举例:decimal(M,D),M指一个数值有多少位,D指小数点后位数
- 字符串类型:定长字符串(char),变长字符串(varchar)等。这里我们使用最多的就是变长字符串,由于它存储的是数据的实际大小,而非最大大小,所以可以有效的帮我们节省空间。
- 日期类型:日期型(date),时间型(time),日期时间型(datetime)等。
- 布尔类型:布尔型(boolean)
表的操作
1.查看所有表
show tables;//查看该库中的所有表
2.创建表
//和创建数据库类似,也有两种创建方式
//创建时,若存在则报错
create table 表名称(数据名称1 数据类型1,数据名称2 数据类型2,...);
//创建时,存在则不会报错,且沿用之前的表;不存在,则创建表
create table if not exists 表名称(数据名称1 数据类型1,数据名称2 数据类型2,...);
3.查看指定表结构
desc 表名称;
describe 表名称;
4.查看指定表的创建语句
show create table 表名称;
这里我们需要注意,查看表的创建语句非常关键,可以帮我们了解表的构造和约束条件,包括表名、列名、数据类型、长度、默认值、主键、外键等,从而更好地理解数据库设计和数据模型。这在之后对多表的操作中,起到很大的帮助。
5.修改表结构
//添加列
alter table 表名称 add 数据名称 数据类型;
//修改已存在的数据名称的类型
alter table 表名称 modify 已存在数据名称 修改后的数据类型;
//删除指定列
alter table 表名称 drop 数据名称;
例如:原表结构
添加列后,表结构变化
修改sex的数据类型
删除sex列
6.删除表
drop table 表名称;
7.为表中添加数据
//这里我们需要注意,我们添加数据的类型顺序,必须和我们表中定义的数据类型一致
//以下是通用的添加数据
insert 表名称 values(数据1,数据2,数据3....),(数据1,数据2,数据3....);
我们以上述给出的stu表为例:
如果我们需要添加指定数据,那么这时就需要另一个指令:
insert 表名称(数据名称1,数据名称2,...) values(数据1,数据2,....);
当然,跳跃式的添加指定类型也是需要条件的:跳跃的数据必须可以为空。这里大家可以自行下去处理。
8.修改表中指定数据
update 表名称 set 数据名称=新数据类型 where 条件 ;
这其实很好理解,就是将我们数据名称=新数据类型作为修改后的数据,条件就是需要修改的数据,就好比将age=12作为条件,age=13作为修改后数据。
9.删除表中指定数据段
delete from 表名称 where 条件;
这条指令也比较好理解,根据条件,删除的是整条数据。
10.查询指定表中的数据
//全列查询
select*from 表名称;//查询表中所有数据
//指定列查询
select 数据名称1,数据名称2,...from 表名称;//查询表中指定数据
//查询字段为表达式
select 数据名称1+数据名称2+... from 表名称;//查询数据名称1和数据名称2相加后显示
//查询字段起别名
select 数据名称1+数据名称2+... as 别名from 表名称;//查询数据名称1和数据名称2相加后起别名显示
//去重查询
select distinct 数据名称1,数据名称2 from 表名称;//将数据名称去重后显示
//排序查询
select*from 表名称 order by 数据名称1 desc/asc,数据名称2 desc/asc,...;//将数据类型排序显示,
//默认为asc升序,desc为降序,这里是分优先级的,最前面的数据优先级最高,只有当最前面的数据相等时,才会使用下一个数据的优先级
//分页查询
select*from 表名称 limit 数字n;//显示表中n条数据
select*from 表名称 limit 数组m offset 数字n;//显示表中从m开始到n的数据
//条件查询
select*from 表名称 where 条件;//只会显示满足条件的数据
//只显示满足条件的语句,比较运算符:>,<,=,>=,<=,!=
//空值比较is null 或者is not null,这里需要注意:不能用比较运算符和空值比较,会检测不到结果,不会显示
//区间过滤:between m and n 这个适用于判断数字类型的数据,例如:
select*from 表名称 where 数据名称 between m and n;
//判断指定字段的值,是否是给定集合中的某一个数据,这个判断对数据类型没有要求,例如:
select*from 表名称 where 数据名称 in(数据1,数据2,数据3,...);
//文本模糊匹配:like 符号,其中符号包括:?一个字符,*任意字符,[]中的任意字符,%任意字符
select&from 表名称 where 数据名称 like '%字符%';
//最后就是比较好理解的逻辑运算符:or and not
下面我给出几个比较不好理解的指令示例:
原表数据:
查询表中指定数据:
数据相加后显示:
给相加后数据起别名后显示:
结语
以上就是MySQL数据库中的所有基础操作,都比较简单,大家下去可以自行体会,之后还会讲到键值约束,多表联查等复杂逻辑操作,因此打好基础是关键!!