MySQL
MySQL简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL与其他大型数据库例如Oracle、DB2、SQL Server等相比,MySQL自有它的不足之处,但是丝毫不影响它受欢迎的程度,对于个人使用者和中小型企业,MySQL提供的功能已经绰绰有余,主要MySQL还是开源的,因此大大降低了总体拥有的成本
MySQL列的参数类型
我就不全部举例出来了,我就列出经常使用的几种数据类型
int 整型
double 小数类型
data:日期 yyyy -MM -dd
datatime:日期 yyyy -MM -dd HH:mm:ss
timestamp:时间戳类型 yyyy -MM -dd HH:mm:ss 不赋值会自动添加当前时间
varchar():字符串 ,括号可设置字符数
也不过多的介绍了,接下来上正餐
SQL语句操作
从以下的三个方面介绍
- DDL:操作数据库、表
- DML:增删改表中的数据
- DQL:查询表中的元素
DDL(Data Definition Languages)
数据定义语言,这些语句定义了不同的数据段、数据库、表、列、索引等数据库对象的定义。常用的语句关键字主要包括 create、drop、alter等。
插曲一:如果在CMD(管理员模式)下输入 mysql -uroot -p 不能识别指令就是MySQL环境变量没有配置(别问为什么有这个小插曲,问就是博主也没有配置)
执行命令没配置环境变量的打印
如果打印**‘mysql’ 不是内部或外部命令,也不是可运行的程序**需要我们去配置环境变量
右击 此电脑–>属性–>高级系统设置–>环境变量–>系统变量下的path中设置mysql的安装地址
博主的mysql下bin文件的地址是:
C:\Program Files\MySQL\MySQL Server 8.0\bin
根据自己的安装地址设置
插曲二:如果找不到安装目录文件,这里也有具体步骤(泪目)
cmd输入services.msc 打开服务
找到MySQL80
右键属性,这就是MySQL安装地址,只需要配置bin目录到环境就行
好了没有错误了,开始愉快的学习
MySQL命令行登录
本地登录
mysql -uroot -p
输入安装Mysql时设置密码即可登录
这就是登陆成功的页面
远程访问数据库
mysql -h (ip) uroot -p
连接目标的密码
退出登录
exit
查询所有数据库
show datavases; 别忘记后面要跟上;
1.操作数据库的CRUD
C(Create)创建
//创建数据库
create database 数据库名称;
//创建数据库时添加一个判断语句如果这个数据库不存在才创建
create database if not exists 数据库名称;
//指定创建数据库的字符集
create database 数据库名称 character set 字符集;
//创建数据库指定字符集并判空
create database if not 数据库名称 character set 字符集;
创建一个名称为def的数据库,设置字符集为gbk
R(Retrieve):查询
//查询所有数据库的名称
show databases;
//查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
U(Update):修改
//修改某个数据库的字符集
alter database 数据库的名称 character set 字符集名称;
修改数据库的原字符集
D(Delete) :删除
//删除数据库
drop database 数据库名称;
//添加判断,判断数据库是否存在,存在再删除
drop database if exists 数据库名称;
使用数据库
//查询当前正在使用的数据库名称
select database();
//使用数据库
use 数据库名称;
兄弟萌,有没有感觉使用CMD的黑窗口很麻烦,我一想你们就肯定感觉很难受(好吧,其实是博主用着很难受)
我下面放上连接数据的工具Navicat的百度云盘地址
Navicat是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和/或 MongoDB 等不同类型的数据库,主要是提供设计良好的用户界面 (GUI)
链接地址:
Navicat15 安装+破解教程
提取码: dlmy
2.操作表的CRUD
C(Create):创建
语法:
create table 表名{
列名1 数据类型1,
列名2 数据类型2,
....
列名n 数据类型n
};
注意:最后一列不需要加逗号
没有报错,返回OK就是表示数据库的表创建成功
注意:如果创建数据库表出现错误,看是否同名,数据库是无视大小写的,看是否是数据类型写错了,还是逗号掉了,这都可以通过细心检查发现
R(Retrieve):查询
//查询数据库中所有的表名称
show tables;
//查询表结构
desc 表名;
//查看表的字符集
show create table 表名;
U(Update):修改
//修改表名
alter table 原表名 rename to 新表名;
//修改表的字符集
alter table 表名 character set 字符集;
//添加一列
alter table 表名 add 列名 数据类型;
//修改名称和类型
alter table 表名 change 列名 新列名 新数据类型;
alter table 表名 modify 列名 新数据类型;
//删除列
alter table 表名 drop 列名;
D(Delete) :删除
//删除表
drop table 表名;
//判断是否存在该表存在则删除
drop table if exists 表名;
DML(Data Manipulation Language)
数据操纵语句,用于添加、删除、更新和查询数据库记录,并检查数据完整性,常用的语句关键字主要包括 insert、delete、udpate 等。(增添改)
添加数据
语法:
insert into表名(列名1,列名2,...列名n) values(值1,值2,. ..值n);
注意:
-
列名和值要—一对应。
-
如果表名后,不定义列名,则默认给所有列添加值
insert into stu(id,name,age) values(1,'张无忌',18);
- 如果给所有的列都加上值,前面列名不用一个个都写
insert into stu values(2,'赵敏',17,99.9,null);
#在SQL中单双引号都可以
insert into stu values(3,'张三丰',17,99.9,"1893-11-11",null);
删除数据
语法:
delete from表名[where条件]
各种删除方式
#删除id=1的用户
delete from stu where id=1;
#注意不添加条件会删除表中所有的数据
delete from stu;
#删除表,然后再创建一个一模一样的空表
truncate table stu;
删除所有的记录有两种方式:
delete from 表名;(不推荐) 这个方法会执行很多遍删除数据的操作,效率低
truncate table 表名;(推荐)这个方法直接删除整张表,再创建一张同名的表
修改数据
语法:
updata 表名 set 列名1=值1,列名2=值2,1.. [where条件];
#修改id=3的成员age属性为55
updata stu set age =55 where id=3;
#可以修改多个列
update stu set age=18,score=100 where id=2;
#如果不添加条件,就代表修改所有成员的age属性
update stu set age=1;
DQL(Data QueryLanguage )
数据查询语言,select
语法:
select 字段列表
from 表名列表
where 条件列表
group by 分组字段
having 分组之后的条件
order dy 排序
limit 分页限定
基础查询
查询全部数据
#查询表中所有数据
select *from 表名;
查询多个字段
#查询多个字段
select name,num,market_price from item;
注意:select * 写着舒服但是并不规范,在后面的工作中是不允许使用select * 的,因为会降低查询的效率,最好是需要什么字段,查询什么字段
去重
#查询数据时,去除一列中重复的数据 distinct
select distinct num from item;
有重复的可能是因为空格
计算列
#计算num列与market_price列的总和
select name,num,market_price,num+market_price from item;
#如果有null参与计算的结果,都为null
#所以需要使用到IFNULL这个函数
select name,num,market_price ifnull(num,0)+market_price from item;
#如果字段num为null是则替换为0
起别名
关键字:AS
#更改了num+market_price这一列的名字为 总分
select name,ifnull(num,0),market_price,num+market_price as 总分 from item;
还有一种方式使用起来比较方便但是不利于代码的可读性
在列名后面加上空格再跟上别名
#将num+market_price更改为 sum
select name,ifnull(num,0),market_price,num+market_price sum from item;
条件查询
where子句后跟上条件
语法:
select 返回的字段 from 表明 where 列名 = 条件
排序查询
关键字: order by 子句
排序方式:
- ASC:升序,默认的
- DESC:降序
语法:
order by 排序字段1 排序方式1,排序字段2,排序方式2...
注意:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件
#ASC升序的方式排列 默认的
select * from item order by market_price asc;
#DESC:降序
select * from item order by market_price desc;
#按照merket_price排序,如果merket_price一样,按照 shop_price排序
#先按照第一排序条件,再按照第二排序条件排序
select * from item order by market_price asc,shop_price desc;
聚合函数
将一列数据作为一个整体,进行纵向的计算
count:计算个数
#这句话没有加判断,为空值的列不会列入查询的数值
select count(列名) from 表名;
#这句话的意思是当查询的列有null值时,列中的值使用0来替换,就可以查询到这一列了
select count(ifnull(列名,0)) from 表名;
- 一般选择非空的列:主键
- count(*):计算所有列的个数,当一个列的有一行不为空时,就可以增加查询列
max :计算最大值
min :计算最小值
sum :计算和
avg :计算平均值
#最大值
select max(market_price) from item;
#最小值
select min(market_price) from item;
#求和
select sum(market_price) from item;
#平均值
select avg(market_price) from item;
注意:聚合函数的计算,排除了空值
分组查询
语法:
group by 分组字段
#分组查询
select 列名 from 表名 group by 列名(与前一个列名相同);
#分组查询 + 聚合函数
select 列名,AVG(列名) from 表名 group by 列名(与前一个列名相同);
注意:分组之后查询的字段:分组字段、聚合函数
where 和 having的区别?
- where在分组之前限定,如果不满足条件,则不参与分组。having在分组之后限定,如果不满足结果,则不会被查询出来
- where后不可以跟聚合函数,having可以进行聚合函数的判断
分页查询
关键字:limit
语法:
limit 开始的索引,每页查询的条数
公式:开始的索引=(当前的页码-1)*每页显示的条数
#每页显示三条
select * from item LIMIT 0,3;
select * from item LIMIT 6,3;
select *from item LIMIT 索引,要显示的行数;
分页操作是一个"方言",每个数据库都不同
文章有点长语句有点多,不过不要慌,慢慢写熟练了就都简单了,不能只看文章不敲代码,俗话说得好:好记性不如烂笔头,只有多敲代码,才能记得牢固
今天的MySQL知识就止于此吧,希望这些知识能帮助到兄弟们,我还会慢慢更新MySQL部分的博客,因为刚开始写博客,如果有什么不足的希望兄弟萌谅解,也可以指出来让我在后面的过程中多加改正,同时也谢谢兄弟萌的观看了