热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

dos下的mysql操作_DOS下的MySQL数据库基本操作(续)

基于前面创建的数据库xxx,数据表emp和deparment,我们进行如下的学习和实践1.统计出平均薪水:selectavg(salary

基于前面创建的数据库xxx,数据表emp和deparment,我们进行如下的学习和实践

1.统计出平均薪水:select avg(salary) from emp;

除avg();外,MySQL的内置函数还有:max(); min(); sum(); 组函数() 等等。

2.求每个部门的最高薪水

3.排序: select  * from emp order by salary;(从高到低) select * from emp order by salary desec; 最后添加desc及时倒序

4.请输出 平均薪水高于 1500的部门 select deparment from emp where avg(salary)>1500; (错误的)

重点:where 只可以对字段本身进行判断操作。

having 专门和group by 配合,专门用于针对组函数的判断操作。

select avg(salary) as s,deparment from emp group by deparment having s>1500;

5.请计算出哪个部门的女生达到2人。

select deparment,count(sex) as csex

from emp where sex=2

group by deparment

having csex>=2;

6.请显示出员工id  员工名字  部门号  部门名称

select e.id,e.name,d.id,d.name from emp as e,deparment as d where d.id = e.deparment;

7.请计算出哪个部门女生达到2人。显示出部门号,部门名称,人数

select e.deparment,d.name,count(e.sex) as s from emp as e,deparment as d where sex=2 and e.deparment = d.id group by e.deparment having s>=2;

笛卡尔集合:1个集合中有9笔记录  一个3笔记录 返回的是 27笔集合。

insert into emp(name,sex,salary,m_id) value('周舟',2,10000,2);

8.请显示出员工id  员工名字  部门号  部门名称

select e.id,e.name,d.id,d.name

from emp as e left join deparment as d

on d.id = e.deparment;

注意:左连接和右连接;驱动表和匹配表的区别

左外链接——左边的表是驱动表,显示出来的数据为:驱动表和匹配表符合条件的所有数据会显示,同时,将驱动表中没有匹配上的数据都显示出来,只不过在没匹配的字段上使用 null

9.查询未分配部门的员工

select * from emp where deparment=null;(出错)

在数据库中 null != null 并且 null不= 任何数据

select * from emp where deparment is null;

is not null;不为空

10.请通过sql语句 显示出 杨十命 和陆九剑 所在部门的所有员工

第一步,先写子查询:

select deparment from emp  where name='杨十命' or name='陆九剑';

第二步,再把子查询放入in或not in中:

select * from emp where deparment in (select deparment from emp  where name='杨十命' or name='陆九剑');

注意:查询语句返回的数据集可以当做集合。

在有子查询的语句中,我们一般先写子查询后写外部查询

select * from emp where deparment in (2,3,null);

此处,null值可以当任何数

11.请输出 总人力成本高于4000的那个部门的所有员工

select deparment from emp group by deparment having sum(salary) > 4000

select * from emp where deparment in(  select deparment  from emp  group by deparment  having sum(salary) > 4000  );

查询低于4000的

select * from emp where deparment not in(  select deparment  from emp  where deparment is not null  group by deparment  having sum(salary) > 4000  );

12.请问哪些人是领导

select * from emp where m_id in (  select id from emp );

select * from emp where id in(   select m_id form emp where m_id is not null );

select e.id,e.name from emp e,emp as m where e.id = m.m_id group by e.id;

--自连接

select distinct e.id,e.name,m.id,m.name from emp e,emp as m where e.id = m.m_id;

13.因为 刘八精的领导有方,所以他的下属增加20%的工资

select e.id from emp as e,emp as m where e.id = m.m_id and e.name='刘八精';

update emp set salary=salary*1.2 where id in(7,8);

14.按照分页要求取数据

select * from  emp limit 0,5;

update emp set salary=salary*1.2

where id in(7,8);

0    3

3    6

6    9

select * from emp limit 2-1,3;

15.请查询出每个部门薪水最高的那个 显示为 名字,薪水,部门号,部门名称

'1'='1' 永远为真

select * from emp where name='123' and pwd='456'; select * from emp where '1'='1';

16.关于sql语句的执行次序

select  字段——》3

from   表名——》1

where 字段的判断——》2

group by 对某些字段的分组——》4

having    对组函数的判断——》5

17.再扩展一下

select * from emp

where name='123' and id=123 or '1'='1';

何为sql注入?? 就是开发人员写好的sql语句,但是被使用者通过一定有规律的输入,而使得sql语句变样,达到入侵的效果。

这个就是sql注入。



推荐阅读
  • MyBatis多表查询与动态SQL使用
    本文介绍了MyBatis多表查询与动态SQL的使用方法,包括一对一查询和一对多查询。同时还介绍了动态SQL的使用,包括if标签、trim标签、where标签、set标签和foreach标签的用法。文章还提供了相关的配置信息和示例代码。 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了在MySQL8.0中如何查看性能并解析SQL执行顺序。首先介绍了查询性能工具的开启方法,然后详细解析了SQL执行顺序中的每个步骤,包括from、on、join、where、group by、having、select distinct、union、order by和limit。同时还介绍了虚拟表的概念和生成过程。通过本文的解析,读者可以更好地理解MySQL8.0中的性能查看和SQL执行顺序。 ... [详细]
  • 本文介绍了如何在MySQL中将零值替换为先前的非零值的方法,包括使用内联查询和更新查询。同时还提供了选择正确值的方法。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Java String与StringBuffer的区别及其应用场景
    本文主要介绍了Java中String和StringBuffer的区别,String是不可变的,而StringBuffer是可变的。StringBuffer在进行字符串处理时不生成新的对象,内存使用上要优于String类。因此,在需要频繁对字符串进行修改的情况下,使用StringBuffer更加适合。同时,文章还介绍了String和StringBuffer的应用场景。 ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 本文讨论了在数据库打开和关闭状态下,重新命名或移动数据文件和日志文件的情况。针对性能和维护原因,需要将数据库文件移动到不同的磁盘上或重新分配到新的磁盘上的情况,以及在操作系统级别移动或重命名数据文件但未在数据库层进行重命名导致报错的情况。通过三个方面进行讨论。 ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 本文详细介绍了如何使用MySQL来显示SQL语句的执行时间,并通过MySQL Query Profiler获取CPU和内存使用量以及系统锁和表锁的时间。同时介绍了效能分析的三种方法:瓶颈分析、工作负载分析和基于比率的分析。 ... [详细]
  • MySQL外键1对多问题的解决方法及实例
    本文介绍了解决MySQL外键1对多问题的方法,通过准备数据、创建表和设置外键关联等步骤,实现了用户分组和插入数据的功能。详细介绍了数据准备的过程和外键关联的设置,以及插入数据的示例。 ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
author-avatar
神秘怪我咯_525
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有