mysql基础部分(一)

一、数据库是什么?

我们平常所说的数据库,全称应该是数据库管理系统,或者是数据库软件,也叫做DBMS
DBMS也就是数据库管理系统是用来管理操作数据库(DB)的,数据库DB就是保存了一系列有组织的数据
那么常见的数据库管理系统:mysql、oracle、sqlserver(只能安装在win系统),DB2等等
那么结构化查询语言SQL:用来和数据库管理系统通信,是DBMS能听的懂的语言。它不是mysql特有的,是一门所有数据库支持的语言。

二、SQL语句的分类

DQL语句 数据查询语言 select

DML语句 数据操作语言 insert update delete

DDL语句 数据库定义语言create alter drop

创建一个名为name的数据库

create database name;

使用以下语句可以查看数据库

show databases;

注意:
DML是操作数据库表中的数据
DDL是操作数据库中表的结构

TCL语句 事务控制语言 commit rollback

DCL语句 数据控制语言 grant revoke

三、导入数据库脚本文件

.sql文件为数据库脚本文件

source .sql文件路径

以上命令就可以直接将脚本文件导入,脚本文件中存入的是批量的DML语句

四、条件查询

先执行from 再执行where
where支持的运算符(常见简单的未列出)

运算符说明
<>或者!=不等于
between…and…>= and <=
is null为空,不是一个空串,不是一个数值,该字段未填值
is not null不为空
in表示包含的意思,相当于多个or
notnot取非,主要用在in和is当中
like模糊查询,支持%和下划线匹配(%匹配任意个字符 下划线:一个下划线只匹配一个字符)

一些例子:
查询以M开头的姓名

select name from table1 where name like 'M%';

查询以N结尾的姓名

select name from table1 where name like '%N';

查询姓名中包括l的姓名

select name from table1 where name like '%l%';

查询倒数第二个字母为e的姓名

select name from table1 where name like '%e_';

五、数据排序

1>单一字段排序

order by 字段名称
默认升序,asc,从小到大
order by 字段名称 desc —>指定为降序排序 从大到小

2>多个字段排序

oder by A desc,B desc
当根据A排序时重复了,则根据B排序

六、处理函数

1> 单行处理函数

函数Value
lower转换小写
upper转换大写
length取长度
trim去首尾空格,中间的不去除
str_to_date字符串–> 日期
date_format格式化日期
format设置千分位
round四舍五入
rand生成随机数
ifnull可以将null转换成一个具体值

具体的一些例子:
查询公司名称,并将名称都转换为小写

select lower(name) from client where name is not null;

取公司名字长度

select length(name) as namelength from client;

因为在数据库中,有null参与的数据计算结果一定为null,为了防止结果出现null,可先用ifnull()函数处理
查询员工姓名和补助,没有补助的设为0

select ename, ifnull(comm,0) from table1;

round()默认保留整数
round(要四舍五入的字段,保留几位小数)

rand()随机生成[0,1]的小数
若要生成[0,100]的数字,round(rand()*100)

str_to_date():转为DATE类型的数据
先来看一下Mysql里的日期格式

格式符说明
%Y四位年份
%m带0月份(01,02,,,12)
%d日子
%H二十四小时制
%i表示分钟(00,01,02,59)
%s / %S表示秒(00,01,02,59)
%y两位年份
%c不带0月份(1,2,3,12)
%h12小时制

Mysql默认的日子格式是:%Y-%m-%d eg:1980-12-01
用法:str_to_date(‘日期字符串’,‘日期格式’)
说明:日期字符串:表示日期的字符串
日期格式:告知Mysql输入的日期字符串是什么格式
str_to_date函数常常用在插入数据中,当把某个字段例如‘生日’的类型定义成DATE后,插入‘生日’这个字段的时候,如果和Mysql默认的格式不符合会出错,此时就要用str_to_date()函数做转换:

insert  into table1(id,name,birth) values(1,'Tom','1996-07-25');//正确
insert  into table1(id,name,birth) values(1,'Tom','07-12-1968');//错误
insert  into table1(id,name,birth) values(1,'Tom',str_to_date('07-12-1968','%m-%d-%Y'));//正确

data_format():将日期类型的数据转换为日期字符串
用法:data_format(‘日期类型的数据’,‘日期格式’)
多用在查询操作中,当需要日期以特定格式展示的时候,需要使用这个函数

查询好友的生日,以‘%d-%m-%Y’的格式显示

select name,data_format(birthdate,'%d-%m-%Y') birth from friends;

2> 多行处理函数

多行处理函数也叫作分组函数、聚合函数
单行函数:一行输入对应一行输出,前面提到的函数都是以行单位应用然后输出的
多行函数:多行输入对应一行输出
先来看一下有哪些分组函数:

函数说明
sum求某一列的和,null值会被自动忽略,不需要where排除
avg求平均
max求最大值
min求最小值
count求记录数

sum()
得到薪水总和(工资+奖金)
注意奖金可能为null,因为一定要用ifnull函数,否则当奖金为null时,某个人的薪水总和都为null。(因为有null参与的计算,结果都为null)

select sum(sal+ifnull(bonus,0)) from table1;

max()
日期类型的数据也可以进行大小比较哦

count()
不会统计字段为null的记录
count(*)表示取得当前查询表所有记录

七、分组查询

group by

通过哪个或者哪些字段进行分组
找出每个专业的最高分数

select max(score) from table1 group by majors;//通过对majors分组,然后对每一组取最大值

找出每个专业的平均分数,并且按照从大到小的顺序排序

select avg(score) as avg from table1 group by majors order by avg desc;

查找出每一天的某个记录个数

select count('某个字段') from table2 group by dat;

having

对分组的数据再进行过滤

查找出每个专业的平均分数,并且显示平均分数大于90的

select majors, avg(score) as avg from table1 where avg>90 group by majors;//错误

上述语句是错误的,因为where语句后面不能跟分组函数
因为SQL语句先执行from table1
然后再执行where条件过滤
where执行完之后再执行分组group by
最后显示查询结果

select majors, avg(score) as avg from table1  group by majors having avg>90);//正确

havingwhere的区别

having是在group by之后完成过滤
where是在group by之前完成过滤

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值