10.11-数据库mysql

数据库

什么是数据库?

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。

现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大数据量。所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS 即关系数据库管理系统(Relational Database Management System)的特点:

  • 1.数据以表格的形式出现

  • 2.每行为各种记录名称

  • 3.每列为记录名称所对应的数据域

  • 4.许多的行和列组成一张表单

  • 5.若干的表单组成database

操作数据库

创建数据库

create database <数据库名>

显示数据库

show databases (注意:最后有个s)

删除数据库

drop database <数据库名>

查看当前库中的表

show tables

查看其他库中的表

show tables from <database name>;

操作表

创建表

create table student(
id      int     PRIMARY KEY auto_increment,
name    varchar(32) not null
);

删除表

DROP TABLE 表名

数据表的结构的修改

三、数据表的结构的修改:
    1、在上面员工表的基本上增加一个image列。
alter table emplyee add image varchar(32);
    2、修改job列,使其长度为60。
alter table emplyee modify job varchar(60);
    3、删除gender列。
alter table emplyee drop gender;
    4、表名改为user。
rename table emplyee to user;
rename table user to emplyee;
    5、修改表的字符集为utf8
alter table emplyee character set utf8;
    6、列名name修改为username
alter table emplyee change name username varchar(32);

操作表数据

###

添加数据
INSERT INTO employee VALUES(1,'zs',NULL,NULL,'信息',1000,NULL);
查看数据
select * from  exam;
删除数据
DELETE  FROM  user WHERE  username='zs';
修改数据
UPDATE user SET salary=5000;

条件查询

条件查询需要用到where语句,where必须放到from语句表的后面 支持如下运算符

运算符说明
=等于
<>或!=不等于
<小于
<=小于等于
>大于
>=大于等于
between and两个值之间
is null为null
and并且
or或者
in包含,相当于多个or
notnot可以取非,主要用在is 或in中
likelike称为模糊查询,支持%或下划线匹配%匹配任意个字符下划线,一个下划线只匹配一个字符

约束

DEFAULT 默认约束

UNIQUE 唯一约束

CHECK 检查约束

PRIMARY KEY 主键

FOREIGN KEY 外键约束

PRIMARY KEY auto_increment 主键自增

排序

order by

排序采用order by子句,order by后面跟上排序字段,排序字段可以放多个,多个采用逗号间隔,order by默认采用升序,如果存在where子句那么order by必须放到where语句的后面

select * from hzuser order by usersal;
-- 从小到大
select * from hzuser order by usersal asc;  
-- 从大到小
select * from hzuser order by usersal desc;  

聚合函数

count

计数 会忽略null 一般有null 的时候 这个是个考点 要把null 转换成0

-- 取得所有的会员数
select count(*) from hzuser;

avg

取得某一列的平均值

-- 取得平均薪水
select avg(usersal) from hzuser;

min

取得某个一列的最小值

-- 取得最低薪水
select min(usersal) from hzuser;

max

-- 取得最高薪水
select max(usersal) from hzuser;

分组查询

分组查询主要涉及到两个子句,分别是:group by和having

having 类似 where , 和当前语句的 聚合函数有关

-- 取得每个工作岗位的工资合计,要求显示岗位名称和工资合计
select job, sum(usersal) from hzuser group by job;
-- 如果使用了order by,order by必须放到group by后面   排序时候注意
select job, sum(usersal) from hzuser group by job order by sum(usersal) ;
-- 取得每个岗位的平均工资大于2000
select job, avg(usersal) from hzuser group by job having avg(usersal) >2000;

查询总结

以上语句的执行顺序 1.首先执行where语句过滤原始数据 2.执行group by进行分组 3.执行having对分组数据进行操作 4.执行select选出数据 5.执行order by排序

select 字段      from 表名    where …….  group by ……..having …….(就是为了过滤分组后的数据而存在的—不可以单独的出现)   order by ……..               

连接查询

连接查询:也可以叫跨表查询,需要关联多个表进行查询

select  hz.name, j.jname from hzuser hz , jieji j where hz.jiejinum=j.jiejinum;

内连接

-- 显示  工资   大于2000的  用户   信息,并显示所属的   阶级   名称
-- 使用 join  on 或where 
select hz.hname, hz.usersal, j.jname from hzuser hz, jieji j where hz.jiejinum=j.jiejinum and  hz.usersal > 2000;
select hz.hname, hz.usersal, j.jname from hzuser hz join jieji j on hz.jiejinum=j.jiejinum where  hz.usersal>2000;

外连接(重点)

(外连接)显示 用户信息,并显示所属的 阶级 名称,如果某一个阶级没有会员,那么该阶级也必须显示出来 看到这些字 就要想到 外连接

left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 ; right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录; inner join(等值连接) 只返回两个表中联结字段相等的行;

-- 右连接:
select hz.hname, hz.usersal, j.jname from hzuser hz right join jieji j on hz.jiejinum=j.jiejinum;
-- 左连接:
select hz.hname, hz.usersal, j.jname from jieji j left join hzuser hz on hz.jiejinum=j.jiejinum;

子查询

子查询就是嵌套的select语句,可以理解为子查询是一张表

-- 查询哪些人的薪水高于会员的平均薪水,需要显示会员编号,会员姓名,薪水
-- 1、取得平均薪水
select avg(usersal) from hzuser;
-- 2、取得大于平均薪水的会员
select hzusernum, name, usersal from hzuser where usersal > (select avg(usersal) from hzuser);

limit 的使用(重点)-分页

MySql提供了limit ,主要用于提取前几条或者中间某几行数据 ,m,n其中m是指记录开始的index,从0开始,表示第一条记录。n是指从第m+1条开始,取n条。

select * from table limit

select * from tablename limit 2,4

即取出第3条至第6条,4条记录

-- 取得前5条数据
select * from hzuser  limit 5;
-- 从第二条开始取两条数据
select * from hzuser  limit 1,2;
-- 取得薪水最高的前5名 
select  * from hzuser hz  order by hz.usersal desc limit 5;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值