数据库学习记录(一)基础语法与单表查询

基础sql语句分类

DDL操作(图形化界面)

用来定义数据库对象的,例如创建数据库,创建表单

数据库操作

 表操作

DML操作(掌握)

1、insert为添加语句,该语句功能是添加相关数据到表结构中

下面为添加一个用户的部分属性,一个用户的全部属性,多个用户的属性的insert语句

-- 添加一个员工部分信息进入表格
insert into tb_emp(username, position, date, part) VALUES ('zhangsan','经理','2020-09-25','销售部');
-- 添加一个员工的所有信息进入表格
insert into tb_emp values (null,'ahui','男','讲师','2020-05-23','教学部');
-- 批量的添加员工信息进入表格
insert into tb_emp(id, username, gender, position, date, part) VALUES (null,'李四','男','经理',now(),'教学部'),
                                                                      (null,'wangwu','女','员工',now(),'教学部');

2、update为修改语句,可以修改指定数据的值

下面为一个修改id值为1的员工的数据代码演示

-- 修改id为1的员工职位为经理,部门所属part为管理层
update tb_emp set position = '经理',part = '管理层' where id = 1;

如果需要修改表中所有位置的某一数据,那么不用指定where,例如修改表中所有员工的入职时间为2020-02-01,具体sql代码如下:

-- 修改表中所有员工的入职时间为2020-02-01
update tb_emp set date = '2020-02-01';

 3、delete为删除操作语句,该语句为删除带有相关数据的行

删除id为6的员工信息,如下:

-- 删除id为6的员工信息
delete from tb_emp where id = 6;

(注意:delete语句是用来删除整行的数据,也就是一个对象,如果要删除某个对象的某个属性,那么可以使用update将该属性值设置为null)

数据库操作DQL语句查询数据(重点掌握)

单表查询

基本查询

 查询多个字段和所有字段代码如下:

-- 查询指定字段并返回
select name,gender from tb_emp;
-- 查询所有字段,两种实现方式
select id, username, password, name, gender, image, job, entrydate, create_time, update_time from tb_emp;
select * from tb_emp;

查询字段名为name,gender的数据并起别名,让显示的时候以别名显示

-- 查询所有的name和gender,并给其起别名姓名和性别
-- as关键字可以省略
select name as '姓名', gender as '性别' from tb_emp;

查询表中所有job的职位,要求不显示重复

-- 查询表里所有的job类型,不要重复
select distinct job from tb_emp;

条件查询

就是使用select语句后面where添加相应的查询条件。

如查询姓张的员工:这时就是在tb_emp这个表中的所有数据去进行like模糊查找'张%'的员工信息,此时%表示多个字符的占位符。

-- 查询姓张的员工
select * from tb_emp where name like '张%';

 分组查询

1、count函数

查询表中有多少行,此时的行就是代表的表中有多少对象,用count函数,代码如下:

-- 查询表中有多少员工,只要不为null都能被count所记录
select count(*) from tb_emp;
2、min函数

min函数就是查询最小值的方法,传入相关字段,能获取到该字段的最小值(不是对象),如员工年龄age最小为21,那么在查询方法中使用min(age)得到的值就是21。如下:

-- 查询入职最早的员工
select min(entrydate) from tb_emp;
3、max函数

与min函数对应的是max函数,该函数会找到传入字段的最大值,用法与min完全一致,如下:

-- 查询最晚入职的员工
select max(entrydate) from tb_emp;

4、avg函数与sum函数

avg为求字段所有值的平均值,sum为求字段所有值的和

-- 查询员工ID的平均值以及ID的和
select avg(id) from tb_emp;
select sum(id) from tb_emp;

分组查询的具体实现方法如下:

查询一个表中男女性别分别的数量,使用分组查询配合count(*)得出需要查询的数量

-- 分别查询男性和女性的人数
-- 这里前面的gender表示显示的性别,后面的count(*)表示查询的数量,后面的分组表示按性别进行分组查询
-- 结合起来就是按照性别进行分组查询,显示出性别和俩个性别的人数
select gender,count(*) from tb_emp group by gender;

利用分组查询:查询入职时间在'2015-01-01’(包含)以前的员工,并对结果根据职位分组,获取员工数量大于等于2的职位。

分析:先进行分组,查询到相应职位的数量,最后再通过在having后面加筛选条件进行筛选得到员工数量大于等于2的职位,这样的话就能获得上述需要的结果

-- 结合相关的sql语句进行相关的查询数量
select job,count(*) from tb_emp where entrydate <= '2015-01-01' group by job having count(*) >= 2;

 排序查询

如果存在分组查询就是在分组查询之后添加上order by字段加排序方式。如果没有直接加上order by 后面跟上进行排序的字段和规则,可以跟多个,但是排序时是按照从前往后的规则进行排序的,即只有前面的字段出现相同情况时,才会在前一个排序的基础上根据第二个字段排序

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

分页查询

例如查询表从0索引和6索引的员工信息,代码如下:相当于一页有5个数据,且一次是查询5个数据,那么一次查询就是查询一页的信息。

-- 从0索引开始查询员工数据,每页展示5条数据
-- 这是0索引开始的员工数据
select * from tb_emp limit 0,5;
-- 这是从5索引开始的员工数据
select * from tb_emp limit 5,5;
if表达式和case表达式的使用

if表达式:格式if(条件表达式,true的取值,false的取值)后面可以添加别名
-- 查找男性女性的人数
-- if表达式:格式if(条件表达式,true的取值,false的取值)后面可以添加别名
select if(gender = '1','男性','女性') 性别,count(*) from tb_emp group by gender;
case表达式:格式 case 表达式 when 条件1 then 结果1 when 条件2 then结果2.......else...end
-- 查找员工职位的分布
-- case表达式:格式 case 表达式 when 条件1 then 结果1 when 条件2 then结果2.......else...end
select (case job
           when 1 then '教学主任'
           when 2 then '班主任'
           when 3 then '管理人员'
           when 4 then '教研主管'
           else '无业游民' end)职位,
       count(*)
from tb_emp
group by job;

最近更新

  1. TCP协议是安全的吗?

    2024-03-20 13:28:02       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-20 13:28:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-20 13:28:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-20 13:28:02       20 阅读

热门阅读

  1. 深入理解与使用go之错误处理--实现

    2024-03-20 13:28:02       21 阅读
  2. 一文解读ISO26262安全标准:技术安全概念TSC

    2024-03-20 13:28:02       27 阅读
  3. MongoDB聚合运算符:$getField

    2024-03-20 13:28:02       22 阅读
  4. Web框架开发-Django-模板继承和静态文件配置

    2024-03-20 13:28:02       21 阅读
  5. Windows 11 安装 Scoop

    2024-03-20 13:28:02       20 阅读
  6. Web框架开发-Django的模板层

    2024-03-20 13:28:02       24 阅读
  7. Python Web开发记录 Day15:Django part9 数据统计

    2024-03-20 13:28:02       17 阅读
  8. 如何动态修改spring中定时任务的调度策略(1)

    2024-03-20 13:28:02       23 阅读
  9. Dockerfile文件解析

    2024-03-20 13:28:02       20 阅读
  10. 杭州小公司面试

    2024-03-20 13:28:02       18 阅读
  11. 游戏客户端面经

    2024-03-20 13:28:02       22 阅读