首页 > 数据库 >MySQL大总结(1)

MySQL大总结(1)

时间:2024-03-26 20:32:19浏览次数:44  
标签:总结 列名 查询 MySQL deptno WHERE 连接 SELECT

1.关系型数据库的特点         

1、使用表来存储数据,格式统一,便于维护。

2、使用SQL语句操作数据库,标准统一,使用方便。

3、数据存储在磁盘中,相对安全。

2.DBMS、数据库和表的关系?

简言之,先有DBMS,之后有数据库,再有表,每个表中再有数据,具体如下图所示。

3.以下关于连接MySQL数据库方式"mysql -hxxx -Pxxx -uxxx -pxxx"说法错误的是(  D )

A. -h表示要连接的主机IP

B. -P表示MySQL数据库端口号

C. -u表示使用哪个用户进行连接

D. -ps表示用户的密码

-p表示用户的密码

4.关于MySQL数据库服务操作,以下说法错误的是( B )

A. 使用MySQL数据库前一定要启动服务,否则将无法使用

B. 启动服务和停止服务只能通过window操作系统中的管理服务进行设置

C. 启动服务可以通过 net start 数据库服务名 命令来进行设置

D.启动服务和停止服务都有两种操作方式

DOS命令也可以启动和停止服务

5.什么是SQL

结构化查询语言(Structured Query Language),后续通常简称SQL。SQL是用于存取数据以及查询、更新和管理关系数据库系统的标准语言。

 6.SQL语言分类

分类名称用途代表关键字
DDL(

Data Definition Language

数据定义语言

用来定义数据库、表及其它对象的结构

CREATE、DROP、ALTER

DML(

Data Manipulation Language

数据操作语言

用来增加、修改、删除表中的数据

INSERT、DELETE、UPDATE

DQL

(Data Query Language)

数据查询语言

用来查询表中的数据

SELECT、FROM、WHERE、ORDER BY 、GROUP BY、HAVING

DCL

(Data Control Language)

数据控制语言

用来授予和收回权限

GRANT、REVOKE

TCL

(Transaction Control Language)

事务处理语言

用来对数据进行提交和回滚

GRANT、REVOKE

 7.DQL

一:简单查询

(1)空值的含义

空值用NULL表示,表示一种无效的、未知的值,空值不是零,也不是空格。

(2)空值的运算

空值参与算术运算,运算后的结果仍为NULL

 (3)列别名

1、列别名可以直接写在列名或者表达式的后面,也可以加as关键子,加不加as没有任何区别,通常不加。

2、如果SELECT子句中有计算表达式,通常使用列别名。

 (4)消除重复行

关键字:distinct

语法:

SELECT DISTINCT 列名1,列名2,....列名n

FROM table;


二:条件查询

单条件查询

(1)单条件查询语法

语法:

SELECT [ DISTINCT ] * | 列名 | 表达式 [别名] [,...]

FROM 表名

[ WHERE 条件表达式 ] ;

 (2)like运算符

使用LIKE运算符可以查询出某列的值是否满足关键字匹配,也叫模糊查询。如查询员工名字中含有字母S的员工,就可以使用LIKE运算符来解决。

% : 百分号,代表匹配零个或任意个字符。

_ : 下划线,代表匹配1个任意字符。

(3)is null 运算符 

如果要查询某列的值是否为NULL,使用 “列名 = NULL”是查询不出来的。只能使用 “列名 IS NULL


多条件查询

多个条件之间需要使用逻辑运算符进行连接。

语法:

SELECT [ DISTINCT ] * | 列名 | 表达式 [别名] [,...]

FROM 表名

[ WHERE 条件表达式1 逻辑运算符 条件表达式2 ] ;

说明:逻辑运算符包含逻辑与 AND,逻辑或 OR,逻辑非 NOT。下表分别介绍3类逻辑运算符的含义。


三:对查询结果排序

1.ORDER BY子句

语法:SELECT [ DISTINCT ] * | 列名 | 表达式 [别名] [,...]

FROM 表名

[WHERE 条件]

[ORDER BY 列名1 | 列别名1 | 列序号1 [ ASC | DESC ], 列名2 | 列别名2 | 列序号2 [ ASC | DESC ];

eg:查询部门在20或30的员工姓名,部门编号,并按照工资升序排序。

select  ename,deptno,sal from emp

where deptno in (20,30)

order by sal;

 四:多表查询

1.多表连接介绍

可以实现从多个表中查询数据,多表查询内容包括内连接,外连接,笛卡尔积,等值连接,非等值连接等

连接的语法为:

SELECT    table1.column, table2.column
FROM    table1, table2
WHERE    table1.column1 = table2.column2;

说明:如果在多个表中出现相同的列名,则需要使用表名作为来自该表的列名的前缀。

           N个表相连时,至少需要N-1个连接条件

 2.等值连接
  • 自身连接,也叫自连接,是一个表通过某种条件和本身进行连接的一种方式,就如同多个表连接一样。

查询工作地点在NEW YORK的员工编号,姓名,部门编号,工作地点 

select    emp.empno,   emp.ename, emp.deptno,    dept.deptno, dept.loc
from      emp, dept
where   emp.deptno=dept.deptno and loc= ‘NEW YORK’; 
3.非等值连接 


查询每个员工的姓名,工资,工资等级

select  e.ename, e.sal, s.grade
from  emp e,   salgrade s
where  e.sal
between  s.losal and s.hisal;

五:ANSI SQL:标准的连接语法

多表查询还有美国国家标准协会(ANSI)的SQL标准语法:1999标准的连接语法。

SELECT    table1.column, table2.column
FROM    table1
[JOIN table2 
 ON(table1.column_name = table2.column_name)]  | 
[LEFT | RIGHT OUTER JOIN table2 
 ON (table1.column_name = table2.column_name)];

六:外连接

  1. 在多表连接时,可以使用外部连接来查看没有匹配连接条件的数据行。
  2. 左外连接以LEFT OUTER JOIN关键字左边的表为基表,该表所有行数据按照连接条件无论是否与右边表能匹配上,都会被显示出来。
  3. 右外连接以RIGHT OUTER JOIN子句中的右边表为基表,该表所有行数据按照连接条件无论是否与左边表能匹配上,都会被显示出来。

查询所有雇员姓名,部门编号,部门名称,包括没有部门的员工也要显示出来

select  e.ename,e.deptno,d.dname 
from  emp e 
left outer join dept d 
on (e.deptno = d.deptno);

七:分组函数

分组函数

含义

MAX

求最大值

MIN

求最小值

SUM

求和

AVG

求平均值

COUNT

求个数

分组函数的语法如下:

SELECT 列名, 分组函数

FROM 表名

WHERE 条件表达式

ORDER BY 列名;

(1)MIN和MAX函数主要是返回每组的最小值和最大值,语法如下:

MIN( [ DISTINCT | ALL ] 列名 | 表达式 )

MAX( [ DISTINCT | ALL ] 列名 | 表达式 )

说明:

1、MIN和MAX可以用于任何数据类型

2、DISTINCT表示去掉组中的重复值,ALL表示不去掉重复值,省略不写默认为ALL

3、既可以写列名,也可以写表达式,通常写列名。

(2)SUM和AVG函数分别返回每组的总和及平均值,语法如下:

SUM( [ DISTINCT | ALL ] 列名 | 表达式 )

AVG( [ DISTINCT | ALL ] 列名 | 表达式 )

说明:

1、SUM和AVG函数只能够对数值类型的列或表达式操作。

2、SUM和AVG函数会忽略掉NULL值后,再进行运算。

(3)COUNT函数用来返回满足条件的每组记录个数,语法如下:

1、COUNT(*):返回满足条件的每组记录个数。

2、COUNT( [ DISTINCT | ALL ] 列名 | 表达式 ):返回满足条件的每组非空记录个数。

说明:5个分组函数,除COUNT(*)不忽略掉空值外,其余函数都是忽略掉空值再进行运算。

(4)过滤分组结果
HAVING子句

思考如下问题:查询部门人数大于3人的部门编号、部门人数。

"部门人数大于3"是一个条件,尝试一下是否可以写在WHERE子句中。

SELECT deptno,count(empno) 
FROM emp 
WHERE count(empno) >3 
GROUP BY deptno; 

该SQL执行结束后,出现错误提示"Invalid use of group function",表示组函数应用无效。原因在于WHERE子句在GROUP BY 子句之前执行,所以当WHERE子句执行的时候,尚未进行分组,也就无法在WHERE子句中使用分组函数。

此时,SQL中提供了解决方案

SELECT deptno,count(empno) 
FROM emp 
GROUP BY deptno 
HAVING count(empno) >3;

例:查询每个部门最高工资大于2900的部门编号,最高工资

SELECT   deptno, max(sal) 
FROM     emp 
GROUP BY deptno 
HAVING   max(sal)>2900; 

例:查询职位以SALES开头,每种职位的工资和,并且要求工资和大于5000,按照工资和升序排列

SELECT    job, SUM(sal)  
FROM      emp 
WHERE      job NOT LIKE 'SALES%' 
GROUP BY  job 
HAVING    SUM(sal)>5000 
ORDER BY  SUM(sal); 

总结:

1、WHERE子句用来过滤分组之前的记录,不能使用组函数

2、HAVING子句用来过滤分组之后的记录,可以使用组函数


由于内容太多,续下章节~~~

标签:总结,列名,查询,MySQL,deptno,WHERE,连接,SELECT
From: https://blog.csdn.net/qq_46019713/article/details/137032686

相关文章

  • MySQL小练习(1)
    --(1)查询全体学生的学号与姓名selectsno,snamefromstudent;--(2)查询全体学生的姓名、学号和所在系selectsname,sno,deptfromstudent;--(3)查询全体学生的详细记录select*fromstudent;--(4)查询全体学生的姓名及其出生年份selectsname,2024-sageas出生......
  • mysql学习笔记-单表学习
    分类全称说明DDLDataDefinitionLanguage数据定义语言,用来定义数据库对象(数据库,表,字段)DMLDataManipulationLanguage数据操作语言,用来对数据库表中的数据进行增删改DQLDataQueryLanguage数据查询语言,用来查询数据库中表的记录DCLDataControl......
  • Shellcode注入总结
    Shellcode注入总结6x0远程线程注入dll通过在其他进程创建一个远程线程,执行我们的shellcode加载器dll效果:目前dll的shellcode加载器使用了远程加载,能大概绕过火绒静动态,defender的静态。360动静态全杀6x0x0直接看注入exe代码:#include<iostream>#include<tchar.h>#in......
  • 20240324比赛总结
    T1卫星照片https://gxyzoj.com/d/hzoj/p/3657bfs暴力找联通块,再暴力判断即可因为某些原因代码丢了,就不放了T2[luogu3802]小魔女帕琪https://gxyzoj.com/d/hzoj/p/3656考虑到,前7个均不同的概率为\(\prod_{i=1}^{7}\dfrac{a_i}{sum+1-i}\times7!\)因为每种情况均有\(\pro......
  • Android开发两年,我要跳槽去阿里巴巴了,做个阶段总结
    Host:www.baidu.comContent-Type:text/plain//Body搜索****2)响应报文//状态行(包括HTTP版本、状态码,状态信息)HTTP/1.1200OK//HeadersContent-Type:application/json;charset=utf-8//Body[{“info”:“xixi”}]3)常用状态码主要分为五种类型:1开头,代表临时......
  • java毕业设计商城平台(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的迅猛发展和电子商务的蓬勃兴起,商城平台已经成为人们日常生活中不可或缺的一部分。从服装、电子产品到食品、日用品等,几乎任何想得到的商......
  • java毕业设计体检中心信息管理系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着人们健康意识的增强和医疗保健水平的提高,体检成为现代生活中不可或缺的一部分。体检中心作为提供专业健康检查服务的机构,其信息管理效率和服务质量直......
  • java毕业设计商洛市尾矿资源管理系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:商洛市位于中国陕西省东南部,该地区矿产资源丰富,历史上矿业开采活动频繁。然而,随着矿产资源的不断开发利用,产生了大量的尾矿。尾矿如果处理不当,不仅会造成......
  • java毕业设计企业知识产权管理系统(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:在知识经济时代,知识产权已成为企业核心竞争力的重要标志。企业为了保护自主创新成果、维护商业利益和市场竞争力,需要对专利、商标、版权等知识产权进行有......
  • java毕业设计文体用品商城的设计与实现(Springboot+mysql+jdk1.8+maven3.39)
    本系统(程序+源码)带文档lw万字以上 文末可领取本课题的JAVA源码参考系统程序文件列表系统的选题背景和意义选题背景:随着互联网技术的飞速发展,电子商务已经成为人们日常生活的一部分。文体用品作为日常生活中的重要组成部分,其销售模式也正在由传统的线下门店向线上电商平......