MySQL——单表

 数据库设计


-- 查询所有数据库
show databases;

-- 创建一个数据库
create database db01;

-- 表结构操作
-- 创建
create table tb_user(
    id int comment 'id 唯一标识',
    username varchar(20) comment '用户名',
    age int comment '年龄',
    gender char comment '性别'
)comment  '用户表';

create table tb_user2(
    id int primary key comment 'id 唯一标识',
    username varchar(20) not null unique comment '用户名',
    age int not null comment '年龄',
    gender char default '男' comment '性别'
)comment  '用户表';

-- 查询
-- 展示所在数据库的所有表
show tables ;
-- 查询表结构
desc tb_user2;
-- 查询建表的结构
show create table tb_user;

-- 修改
-- 添加字段
alter table tb_user add qq varchar(20) comment 'QQ';
-- 删除字段
alter table tb_user drop username;
-- 修改字段的类型   ----将qq的大小从20变13
alter table tb_user modify qq varchar(13) comment 'QQ';
-- 修改字段名和字段类型
alter table tb_user change qq QQ varchar(10) comment 'QQ';

-- 删除
-- 删除表
drop table tb_user;

数据库操作

 

 

数据库查询 ---DQL

1.基本查询

-- 基本查询

-- 查询指定字段 name entrydate 并返回
select name,entrydate from tb_emp;

-- 查询并返回所有字段 --通配符*也可以,但建议第一种
select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp;
select * from tb_emp;

-- 设置别名 --返回时替代name,entrydate显示
select name as 姓名,entrydate as 入职日期 from tb_emp;

-- 去除重复记录
select distinct job from tb_emp;

2.条件查询


-- 条件查询 --基础查询之上 加个where
-- select 字段列表 from 表名 where 条件列表

-- 1.查询姓名为杨逍的员工
select * from tb_emp where name = '杨逍';

-- 2.查询 id小于等于5的员工信息
select * from tb_emp where id <= 5;

-- 3.查询 没有分配职务 的员工
-- 注意:查询是不是null得时候,不能用= ,得用is
select * from tb_emp where job is null;

-- 4.查询 有分配职务 的员工
select * from tb_emp where job is not null;

-- 5.查询密码不等于 ‘123456’ 的员工信息
select * from tb_emp where password != '123456';

-- 查询 入职日期在 ‘2000-01-01’ 到 '2010-01-01'之间的员工信息
select * from tb_emp where entrydate >= '2000-01-01' && entrydate <= '2010-01-01';
-- 也可以使用between and
select * from tb_emp where entrydate between '2000-01-01' and '2010-01-01';

-- 查询姓名为2个字的员工信息-- 用到模糊查询的_,表示单个字符
select * from tb_emp where name like '__';

-- 查询姓张的员工信息-- 用到模糊查询的%,表示任意字符
select * from tb_emp where name like '张%';

3.分组查询

3.1 聚合函数

注意 : 聚合函数会忽略空值,对NULL值不作为统计。

-- 前提:聚合函数
-- 1:统计该企业员工数量--count
-- A.count(字段)
select count(id) from tb_emp;
select count(job) from tb_emp; --  聚合函数会忽略空值,对NULL值不作为统计。
-- B.count(常量)
select count('A') from tb_emp;
-- C.count(*)   --推荐
select count(*) from tb_emp;

-- 2:统计该企业最早入职的员工 --min
select min(entrydate) from tb_emp;

-- 3:统计该企业最迟入职的员工
select max(entrydate) from tb_emp;

-- 4:统计该企业员工 ID 的平均值
select avg(id) from tb_emp;

-- 5:统计该企业员工的 ID 之和
select sum(id) from tb_emp;

3.2分组查询

-- 分组查询

-- 1:根据性别分组 , 统计男性和女性员工的数量
select gender, count(*) from tb_emp group by gender; -- 按照gender字段进行分组(gender字段下相同的数据归为一组)

-- 2:查询入职时间在 '2015-01-01' (包含) 以前的员工 , 并对结果根据职位分组 , 获取员工数量大于等于2的职位
select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*)>=2;

4.排序查询

-- 排序查询
-- 1:根据入职时间, 对员工进行升序排序
select * from tb_emp order by entrydate asc ;

-- 2:根据入职时间,对员工进行降序排序
select * from tb_emp order by entrydate desc ;

-- 3:根据入职时间对公司的员工进行升序排序,入职时间相同,再按照更新时间进行降序排序
select * from tb_emp order by entrydate , update_time desc;

 5.分页查询

-- 分页查询
-- 1:从起始索引0开始查询员工数据, 每页展示5条记录
select * from tb_emp limit 0,5;
-- 2:查询 第1页 员工数据, 每页展示5条记录
select * from tb_emp limit 0,5;
-- 3:查询 第2页 员工数据, 每页展示5条记录
select * from tb_emp limit 5,5;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值