查询数据库DQL

 DQL 查询基本语法

--  ======================DQL :基本语法==================;
-- 1查询指定的字段 name  entrydate  并返回
 select name , entrydate from tb_emp;
  -- 2 查询 所有字段  并返回
  select id, username, password, name, gender, image, job, entrydate, create_time, update_time from  tb_emp;
    -- 2 查询 所有字段  并返回
    select * from  tb_emp;
-- 3 查询 所有员工的 name entrydate 并起别名(姓名 入职日期)
select name as'姓名' , entrydate as'入职日期' from  tb_emp;
-- 缩写
select name '姓 名' , entrydate '入职日期' from  tb_emp;

-- 查询已有的员工关联了那几种职位(不要重复)
select  distinct job from tb_emp

DQL 条件查询

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

--  2查询 id 小于5的 员工消息
select * from tb_emp where  id<5;

 -- 3查询 没有分配职位的员工的信息
  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;
                --  一样
    select * from tb_emp  where password <> 123456;
  -- 6 查询 入职日期 2000-01 -01 (包含)到 '2000-01-01'之间的员工信息
  select * from tb_emp where  entrydate >= '2000-01-01' and entrydate<='2010-01-01';
               -- 缩写
  select * from tb_emp where  entrydate between '2000-01-01' and '2010-01-01';

-- 7 查询 入职日期 2000-01 -01 (包含)到 '2000-01-01' 之间 且 性别是女的员工信息
select * from tb_emp where  entrydate between '2000-01-01' and '2010-01-01' and  gender=2;
                        -- 一样
select * from tb_emp where  entrydate between '2000-01-01' and '2010-01-01' &&  gender=2;

-- 8  查询 职位是2 (讲师) 3 (学工主管) 4 (教研) 员工信息
  select  * from tb_emp  where  job=2 or job=3 or job =4 ;
                    -- 一样
  select  * from tb_emp  where  job in (2,3,4) ;
  select  * from tb_emp  where  job in (4) ;

    -- 9 查询 姓名 为两字的员工信息
    select * from  tb_emp where name like '____';
    select * from  tb_emp where name like '__';

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

 DQL分组查询  group by

-- =================DQL :分组查询 ======================
 -- 集合 函数
-- 1 统计该企业的员工信息 --count
    -- A  count 字段
    select count(id) from tb_emp;
    select count(name) from tb_emp;
    select count(job) from tb_emp;

    -- B count (常量)
    select count(0) from tb_emp;

    -- C count (count *)
    select  count(*) from tb_emp;

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

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

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

分组查询 高级

 -- ============DQL:分组 查询 ===============

 -- 1   根据性别分组  统计男性 和女性员工的数量
    select gender , count(*) from tb_emp group by  gender;
  -- 2 先查询 入职日期 在 2015-01-10(包含 ) 以前的 员工  并对结果根据 职位分组  获取员工数量 大=大于等于2的职位
    select job , count(*) from tb_emp  where   entrydate <= '2015-01-10' group by  job having  count(*)>=2;

DQL排序查询 

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

DQL 分页查询  limit

 -- =================分页查询 ===============;
 -- 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;
 -- 4 查询第3页 员工数据  每页展示5条记录
select * from tb_emp   limit 10,5 ;

-- 起始索引 =(页码 -1 *  每页展示的记录数 )
-- 起始索引 =(页码 -1 *  5 )



-- 案例 1 按照需求完成 员工管理 的条件分页 查询 - 根据 输入条件 查询第一页的数据 每一页展示 10条数据
-- 输入 条件
-- 姓名 :张
-- 性别 :男
-- 入职时间 : 2000-01-01 2015-12-31
select * from tb_emp where name like '%张%' and gender = 1 and entrydate between
'2000-01-01' and '2015-12-31'order by update_time desc limit 10,10;


-- 案例 2-1 :根据需求 完成员工职位信息的统计 count(*) if判断
select if (gender=1,'男性','女性')'性别', gender, count(*) from tb_emp group by gender ;

-- 2-2 根据需求 完成员工职位信息的统计 -- case

select job,count(*) from tb_emp group by job;
-- case job when 1 then'老师' hen 1 then'老师'hen 1 then'老师'

select job ,
(case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管
' when 4 then '教研主管' else '未分配职位'end ) '职位',
count(*) from tb_emp group by job ;

多表设计 

  1. 一对多

  2. 一对一 

  3. 多对多 

1.一对多 

create table tb_emp
(
    id          int auto_increment comment '主键ID'
        primary key,
    username    varchar(20)                  not null comment '用户名',
    password    varchar(32) default '123456' null comment '密码',
    name        varchar(10)                  not null comment '姓名',
    gender      tinyint unsigned             null comment '性别 1男 2女',
    image       varchar(300)                 null comment '图形url',
    job         tinyint unsigned             null comment '职位 ,1班主任,2 讲师 ,3 学工主管 ,4 教研主管 ',
    entrydate   date                         null comment '入职日期',

    dept_id int unsigned comment '归属部门',
    crete_time  datetime                     not null comment '创建时间',
    update_time datetime                     not null comment '修改时间',
    constraint username
        unique (username)
)
    comment '员工';

-- 部门管理
   -- create  database  db_03;
  --  use db_03;
create  table  tb_dpt(

        id  int unsigned primary key  auto_increment comment 'ID',
        name varchar(10) not null  unique  comment '部门名称',
        creation_time datetime not null comment '创建时间',
        update_time datetime not null comment '修改时间'


)comment '部门表';

alter table tb_emp  -- (用户表)
    add constraint tb_emp_fk_dept_id  -- 外连接名称
        foreign key (dept_id) references  -- 外连接创建表
            tb_dpt (id);   -- (部门表·)

2.一对一

create table  tb_user(
    id int unsigned primary key  auto_increment comment 'Id',
    name varchar(20) not null  comment '姓名',
    gender tinyint unsigned   not null comment '性别 1:女 2:男',
    phone char(11)comment '手机号',
    degree varchar (15) comment '学历'
  ) comment '用户表';
insert into tb_user values (1,'买买提',1,'18383905487','本科'), (2,'张小',1,'67124808247','大专'),
                           (3,'李强',1,'18383905487','博士'), (4,'李方',2,'18383905487','初中') ;
create  table tb_user_card(
    id int unsigned primary key auto_increment comment 'id',
    ethnic_group varchar(10) not null  comment '民族',
    birthday date not null comment '生日',
    idcard char(18) not null comment '身份证号',
    issued varchar(20) not null comment '签发机关',
    expire_begin date comment '有效期限-开始时',
    expire_end date comment '有效期限-结束',
    user_id int unsigned not null unique comment '用户ID',
    constraint  fk_user_id foreign key (user_id) references tb_user(id)
)comment '用户信息表';

insert into tb_user_card values
                             (1,'汉','1998-08-14','453234199808147439','南京鼓励广场','2000-12-1',null,1),
                             (2,'汉','1998-08-14','453234199808147439','南京鼓励广场','2000-12-1','2023-12-31',2),
                             (3,'汉','1998-08-14','453234199808147439','南京鼓励广场','2000-12-1','2028-10-30',3),
                             (4,'回','1998-08-14','453234199808147439','南京鼓励广场','2000-12-1',null,4)

多对多 

-- 多对多
-- 学生表
create table  tb_student(
    id int auto_increment primary key comment '主键ID',
    name varchar(10)comment '姓名',
    no varchar(10)comment '学号'
)comment '学生表';
insert into tb_student(name, no) values ('person1','20001'),('person2','20002'),('person3','20003'),('person4','20004');

create table tb_course(
    id int auto_increment primary key comment '主键id',
    name varchar(10) comment '课程名称'

)comment '课程表' ;
insert into tb_course(name) values ('java'),('php'),('mysql'),('go'),('c'),('linux');


create table  tb_student_course(
    id int unsigned auto_increment comment '主键' primary key ,
    student_id int not null comment '学生id',
    course_id int not null comment '课程id',
    constraint fk_courseid foreign key (course_id)references tb_course(id) ,
    constraint fk_studentid foreign key (student_id)references tb_student(id)

)comment '学生和课程表';

insert into tb_student_course (student_id, course_id)values (1,1),(1,2),(1,3),(2,2),(2,3),(3,3);


 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/167917.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

15.ORACLE11g的归档方式和日志文件的相关操作

ORACLE11g的归档方式和日志文件的相关操作 一、什么是日志文件1、在线日志文件2、归档日志文件 二、Oracle 11g 归档方式&#xff1a;1、归档方式状态2、归档日志方式下数据库的工作原理3、配置归档日志方式3.1 开启归档模式3.2 日志文件相关操作&#xff1a; 4、oracle11g联机…

#gStore-weekly | gBuilder功能详解之结构化数据抽取

上一个weekly中已经详细讲解了schema的设计&#xff0c;在schema设计好了之后&#xff0c;gBuilder支持将结构化和非结构化数据转化为RDF图数据。其中结构化数据支持数据的无损转化。 1. 技术介绍 gBuilder的结构化数据抽取采用D2RQ技术实现。 DR2Q是一个能够将关系数据库中…

【23真题】很少见!第6题有点新颖!

今天分享的是23年太原理工大学801的信号与系统试题及解析。 本套试卷难度分析&#xff1a;该学校考察数字电路和信号与系统两部分&#xff0c;数字电路我没有知道&#xff0c;所以不知道难度。但是从信号部分来看&#xff0c;考察的知识点非常常见&#xff0c;对信号时域和频域…

基于Spring Boot 框架的试卷自动生成系统的设计与实现

项目描述 临近学期结束&#xff0c;还是毕业设计&#xff0c;你还在做java程序网络编程&#xff0c;期末作业&#xff0c;老师的作业要求觉得大了吗?不知道毕业设计该怎么办?网页功能的数量是否太多?没有合适的类型或系统?等等。你想解决的问题&#xff0c;今天给大家介绍…

11.16~11.19绘制图表,导入EXCEL中数据,进行拟合

这个错误通常是由于传递给curve_fit函数的数据类型不正确引起的。根据你提供的代码和错误信息&#xff0c;有几个可能的原因&#xff1a; 数据类型错误&#xff1a;请确保ce_data、lg_data和product_data是NumPy数组或类似的可迭代对象&#xff0c;且其元素的数据类型为浮点数。…

Altium Designer 相同模块的布局布线复用-AD

1、利用交互式布线&#xff0c;将两个相同模块的元器件在PCB上分块显示。 在原理图中&#xff0c;框选某一模块电路、按快捷键 TS 切换到PCB编辑界面、工具>器件摆放>在矩形区域内排列&#xff08;可将模块中的器件都集中放置到矩形框内&#xff09;。2、为模块电路添加 …

spring-boot-maven-plugin插件 —— 重新打包命名

如果需要重新打包的 jar 具有与项目的 artifactId 属性定义的本地名称不同的名称&#xff0c;只需使用标准 finalName&#xff0c;如下例所示&#xff1a; <build><!-- 打包重命名&#xff0c;打包后文件名称&#xff1a;项目名 --><finalName>${project.ar…

【如何让你的建筑设计更高效】推荐7个3DMAX建筑设计的实用插件

3DMAX是创建具有复杂对象和照片级真实感材质的大型三维项目的绝佳工具。它有用于粒子模拟和参数化建模的内置工具&#xff0c;只要有足够的时间和练习&#xff0c;你就可以创建任何东西。然而&#xff0c;总有改进的余地。许多第三方开发人员已经发布了自己的扩展&#xff0c;也…

课程设计:C++实现哈夫曼编码

功能实现&#xff1a; //1:先计算每个字符的权重//2&#xff1a;构建哈夫曼树//3&#xff1a;得出每个字符的哈夫曼编码。//4:根据哈夫曼编码转化为字符 代码实现&#xff1a; // 哈夫曼编码.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。 //1:先计…

[ 云计算 | AWS 实践 ] 使用 Java 更新现有 Amazon S3 对象

本文收录于【#云计算入门与实践 - AWS】专栏中&#xff0c;收录 AWS 入门与实践相关博文。 本文同步于个人公众号&#xff1a;【云计算洞察】 更多关于云计算技术内容敬请关注&#xff1a;CSDN【#云计算入门与实践 - AWS】专栏。 本系列已更新博文&#xff1a; [ 云计算 | …

用css实现原生form中radio单选框和input的hover已经focus的样式

一.问题描述&#xff1a;用css实现原生form中radio单选框和input的hover已经focus的样式 在实际的开发中&#xff0c;一般公司ui都会给效果图&#xff0c;比如单选按钮radio样式&#xff0c;input输入框hover的时候样式&#xff0c;以及focus的时候样式&#xff0c;等等&#…

C++学习笔记——C++ deque和vector的区别

C中的std::deque&#xff08;双端队列&#xff09;和std::vector&#xff08;向量&#xff09;是两种不同的容器类型&#xff0c;它们有以下区别&#xff1a; 内部实现方式不同&#xff1a;std::deque使用了一种双端队列的数据结构&#xff0c;它由多个块&#xff08;chunks&am…

软件外包开发需要注意的问题

软件外包开发是一种常见的业务模式&#xff0c;但在选择和合作外包团队时需要注意一些关键问题&#xff0c;以确保项目的成功和顺利进行。以下是一些在软件外包开发过程中需要注意的问题&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开…

[oeasy]python001_先跑起来_python_三大系统选择_windows_mac_linux

先跑起来 &#x1f94a; Python 什么是 Python&#xff1f; Python [ˈpaɪθɑ:n]是 一门 适合初学者 的编程语言 类库 众多 几行代码 就能 出 很好效果 应用场景丰富 在 各个应用领域 都有 行内人制作的 python 工具类库 非常专业、 好用 特别是 人工智能领域 pytho…

C++ DAY03 类与对象

概述 对象&#xff1a;真实存在的事物 类&#xff1a; 多个对象抽取其共同点形成的概念 静态特征提取出的概念称为成员变量, 又名属性 动态特征提取出的概念称为成员函数, 又名方法 类与对象的关系 在代码中先有类后有对象 一个类可以有多个对象 多个对象可以属于同一个…

HashMap会用就行了?一文解决HashMap的底层问题

前言 我们的手机通讯录之所以能快速定位到特定联系人&#xff0c;就是因为它运用了HashMap底层的原理。手机通讯录将每个联系人的姓名作为键&#xff0c;电话号码作为对应的值&#xff0c;通过这个键值对的方式实现了快速的数据定位和获取。就像你通过关键字快速找到对应的联系…

vue动态配置路由

文章目录 前言定义项目页面格式一、vite 配置动态路由新建 /router/utils.ts引入 /router/utils.ts 二、webpack 配置动态路由总结如有启发&#xff0c;可点赞收藏哟~ 前言 项目中动态配置路由可以减少路由配置时间&#xff0c;并可减少配置路由出现的一些奇奇怪怪的问题 路由…

你学了Python之后让你成为行业卷王,升职加薪更有优势

都说Python能够实现自动化&#xff0c;那么Python具体能应用在哪些地方?哪些岗位学了Python更有优势?今天我们来看看一些大神将Python应用的出神入化的成果。 在这之前&#xff0c;先跟为大家分享个真实的故事。我朋友小宇前段时间为了一个品牌设计的大项目&#xff0c;想方案…

Elasticsearch 和 LangChain 合作开发可用于生产的 RAG 模板

作者&#xff1a;Aditya Tripathi 在过去的几个月里&#xff0c;我们一直与 LangChain 团队密切合作&#xff0c;他们在推出 LangServe 和 LangChain 模板方面取得了进展&#xff01; LangChain Templates 是一组用于构建生产质量的生成式 AI 应用程序的参考架构。 你可以在此处…

QMI8658A Datasheet Rev A-勘误表

QMI8658A Datasheet Rev A-勘误表 1. Reset Register2. CTRL9 Command List3. Temp Sensor Output 1. Reset Register 在5.9章节 和 7.4 章节对复位操作的写入数据&#xff0c;有笔误 正确的数据是&#xff1a; 0xB0 2. CTRL9 Command List 在 5.10.2 章节 Table 28. List…