MySQL入门笔记2

Mybait笔记: 2 - 入门与整合MySQL实战 开发环境准备 Mybaits 版本发布地址: https://github.com/mybatis/mybatis-3/releases 使用MyBaits,我们只需要在classpath里添加mybaits-x.x.x.jar 如果使用Maven,那么添加下列依赖到pom.xml: <dependency> <groupId& 阅读详情

一.数据查询语言(DQL)(单表):

1. 查询的语法:

1.1 查询指定字段信息

select 字段1,字段2,...from 表名;

例如:

select id,name from zhangwu;

1.2 查询表中所有字段

select * from 表名;

例如:

select * from zhangwu; 

注意:使用"*"在练习、学习过程中可以使用,在实际开发中,不推荐使用。原因,要查询的字段信息不明确,若字段 数量很多,会导致查询速度很慢。

1.3 distinct用于去除重复记录

select distinct 字段 from 表名;

例如:

select distinct money from zhangwu;

1.4 别名查询

使用的as关键字,as可以省略的.

别名可以给表中的字段,表设置别名。 当查询语句复杂时,使用别名可以极大的简便操作。

表别名格式:

select * from 表名 as 别名;

select * from 表名 别名;

列别名格式:

select 字段名 as 别名 from 表名;

select 字段名 别名 from 表名;

例如

表别名: select * from zhangwu as zw;

列别名:

select money as m from zhangwu; 或 select money m from zhangwu;

1.5 计算:

我们在sql语句的操作中,可以直接对列进行运算。

例如:将所有账务的金额+10000元进行显示.

select pname,price+10000 from product;

2. 条件查询

2.1 语法:

where语句表条件过滤。满足条件操作,不满足不操作,多用于数据的查询与修改。

格式 :

select 字段 from 表名 where 条件;

where条件的种类如下:

比较运算符:

运算符说明
> < = = <>大于、小于、大于(小于)等于、不等于
BETWEEN ...AND...显示在某一区间的值(含头含尾)
IN(set)显示在in列表中的值,例:in(100,200)
LIKE 通配符模糊查询,Like语句中有两个通配符: % 用来匹配多个字符;例first_name like ‘a%’; _ 用来匹 配一个字符。例first_name like ‘a_’;
IS NULL判断是否为空 is null; 判断为空 is not null; 判断不为空

 逻辑运算符:

运算符说明
and多个条件同时成立 (当所有条件中有一个不成立,则不成立)
or多个条件任一成立 (当所有条件中有一个成立,则成立)
not不成立,例:where not(salary>100);

3 分页查询(limit)

3.1 分页语法:

-- n:从哪一条数据开始显示(第一条为0) m:数据条数

select 字段 from 表名 limit n,m;

4. 排序

4.1 排序查询

使用格式

-- 通过order by语句,可以将查询出的结果进行排序。放置在select语句的最后。

SELECT FROM 表名 ORDER BY 字段;

# ASC 升序 (默认)

# DESC 降序

5 聚合函数

5.1 聚合函数

之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对 一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值。

count:统计指定列不为NULL的记录行数;

sum:计算指定列的数值和;

max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串类型不是数值类型,那么计算结果为0 排0序运算;

min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;

avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

6 分组 group by

6.1 使用格式:

分组查询是指使用group by字句对查询信息进行分组,例如:我们要统计出zhangwu表中所有分类账务的总数量,这时 就需要使用group by 来对zhangwu表中的账务信息根据parent进行分组操作。

SELECT 字段1,字段2… FROM 表名 GROUP BY 字段 [HAVING 条件];

分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件。

6.2 having与where的区别

having是在分组后对数据进行过滤.

where是在分组前对数据进行过滤

having后面可以使用分组函数(统计函数)

where后面不可以使用分组函数。

7 顺序问题:

7.1 书写顺序:

select 字段 from 表 where + group by [having ]+order by + limit

7.2 执行步骤:

SELECT s_classid,COUNT(*) -- 4 投影

FROM t_student -- 1 把表加载到内存

WHERE age=10 -- 2 筛选

GROUP BY s_classid -- 3 分组

HAVING(COUNT(*)>=1) -- 5 二次筛选 首先要得到第一次的结果 才可以进行筛选

ORDER BY COUNT(*) DESC -- 6 二次分组

LIMIT 1 -- 7 限定行数 肯定是你执行完之后最终的结果的 行数

-- 这7步顺序千万不能搞错

二.多表:

1.多表关系理解:

1.1 一对多关系:

1.常见实例:

客户和订单,分类和产品,部门和员工。

2.一对多关系建表原则:

从表(多方)的创建一个字段,字段作为外键指向主表(一方)的主键。

1.2 多对多关系:

1.常见实例:

学生和课程,商品和订单,人和角色。

2.多对多关系建表原则:

需要创建第三张表,中间表至少含有两个字段,这两个字段分别作为外键指向两张表的主键(本质而言,就是将一个 多对多关系拆分为两个一对多关系)。

两张表都是主表,第三张表为从表。

1.3 一对一关系(了解):

1.实例:

在实际开发过程中使用并不多,因为一对一关系可以直接创建为一张表,分为多表不利于使用维护。

2.一对一的两种建表原则:

(1)外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一(unique).

(2)外键是主键:主表的主键和从表的主键直接形成主外键关系。

2.创建表实现:

2.1 一对多:分类与商品

1.建表语句:注意:从表中的外键类型、长度需要与对应主表中的主键一致。

2.视图模型:

3.总结:

从表中不能添加\更新主表中不存在的数据;

主表中不能删除\更新从表中已使用的数据(为额外设置外键级联删除级联修改的情况下)。

2.2 多对多:订单与商品

1.建表语句:

2.视图模型:

3.多表查询语句:

3.0 数据准备:

USE testb;

# 商品分类表

INSERT INTO type (t_id, t_name)

VALUES ('t01', '家电'), ('t02', '服饰'), ('t03', '化妆品');

# 商品表

INSERT INTO product (p_id, p_name, p_price, pt_id)

VALUES

('p001', '联想', 5000, 't01'),

('p002', '雷神', 6000, 't01'),

('p003', '惠普', 5500, 't01'),

('p004', '李宁', 300, 't02'),

('p005', '乔丹', 280, 't02'),

('p006', '361度', 230, 't02'),

('p007', '香奈儿', 300, 't03'),

('p008', 'YSL', 300, 't03'),

('p009', '迪奥', 600, 't03');

3.1 笛卡尔积(交叉连接):

在MySQL中可以为CROSS JOIN或者省略CROSS即JOIN,或者使用',' 如:

SELECT * FROM table1 CROSS JOIN table2

SELECT * FROM table1 JOIN table2

SELECT * FROM table1,table2 (隐式内连接)

由于其返回的结果为被连接的两个数据表的乘积,因此当有WHERE, ON或USING条件的时候一般不建议使用,因为 当数据表项目太多的时候,会非常慢。一般使用LEFT [OUTER] JOIN或者RIGHT [OUTER] JOIN

-- 笛卡尔积

select * from product cross JOIN type;

select * from product JOIN type;

select * from product ,type WHERE pt_id=t_id;# 可以通过添加条件过滤掉无用数据

3.2 内连接:

内连接INNER JOIN 在MySQL中把INNER JOIN叫做等值连接,即需要指定等值连接条件在MySQL中CROSS和INNER JOIN被划分在一起。

select 字段 from table1 inner join table2 on 条件;

-- 内连接

select * FROM product INNER JOIN type ON pt_id=t_id;

/* 注意:

(1)别名:在为表取别名之后,表的原名在当前语句中失效,只能使用别名

(2)由于涉及多表,需要考虑字段同名的情况,所以建议在使用字段时指定是哪一张表中的字段

*/

select p.p_id,p.p_name,p.pt_id, t.t_name FROM product as p INNER JOIN type t ON pt_id=t_id;

3.3 外连接:

MySQL中的外连接,分为左外连接和右外连接,即除了返回符合连接条件的结果之外,还要返回左表(左连接)或者右 表(右连接)中不符合连接条件的结果,如另一表中无相对应的使用NULL对应。

-- 左外连接

select 字段 from table1 left [outer] join table2 on 条件;

-- 右外连接

select 字段 from table1 right [outer] join table2 on 条件;

-- 外连接

-- 左外连接

select * FROM product left OUTER JOIN type ON product.pt_id=type.t_id;

-- 右外连接

select * FROM product RIGHT OUTER JOIN type ON product.pt_id=type.t_id;

3.4 子查询:

一个select语句中包含另一个完整的select语句(被查询表,条件)。

子查询就是嵌套查询,即SELECT中包含SELECT,如果一条语句中存在两个,或两个以上SELECT,那么就是子 查询语句了。

-- 1.查询类型为t01,并且价格>5000

-- 查询类型为t01

SELECT * FROM product WHERE pt_id='t01';

-- 在已获取的数据中,价格>5000

SELECT * FROM (SELECT * FROM product WHERE pt_id='t01') aa WHERE p_price>5000;

-- 2.查询类型为家电,并且价格>5000

-- 查询类型为家电的类型信息type

SELECT t_id FROM type WHERE t_name='家电';

-- 在商品表中,获取所有类型为家电的信息

SELECT * FROM product p WHERE p.pt_id = (SELECT t_id FROM type WHERE t_name='家电');

-- 价格>5000

SELECT * FROM (SELECT * FROM product p WHERE p.pt_id = (SELECT t_id FROM type WHERE t_name='家电')) bb

WHERE bb.p_price>5000;

3.5 联合查询(了解):

合并结果集就是把两个select语句的查询结果合并到一起

UNION:用于合并两个或多个 SELECT 语句的结果集,并消去表中任何重复行。

UNION ALL:不去除重复记录,其它的和union一样

注意:UNION 内部的 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型。

-- 联合查询 --

UNION 会自动去重

SELECT * from product WHERE pt_id='t01';

SELECT * from product WHERE pt_id in ('t02','t01');

SELECT * from product WHERE pt_id='t01' UNION SELECT * from product WHERE pt_id in ('t02','t01');

-- UNION ALL 将所有数据都获取,不会去重

SELECT * from product WHERE pt_id='t01' UNION ALL SELECT * from product WHERE pt_id in ('t02','t01');

-- 注意

SELECT p_id,p_name from product WHERE pt_id='t01';

SELECT * from product WHERE pt_id in ('t02','t01');

SELECT p_id,p_name from product WHERE pt_id='t01' UNION SELECT * from product WHERE pt_id in ('t02','t01'); SELECT p_price,p_name from product WHERE pt_id='t01' UNION SELECT p_name,p_price from product WHERE pt_id in ('t02','t01');

三.查询语句补充:

1.表连接的约束条件:

where,on,using:

-- WHERE

SELECT * FROM product_copy p,type t WHERE p.t_id=t.t_id;

-- ON

SELECT * FROM product_copy p LEFT JOIN type t ON p.t_id=t.t_id;

-- USING(字段):指定字段在两张表中名称一致

SELECT * FROM product_copy p LEFT JOIN type t USING(t_id);

2.some,any,all

any,in,some,all分别是子查询关键词之一,可以与=、>、>=、结合起来使用,any表示等于、大于、 大于等于、小于、小于等于、不等于其中的任何一个数据,all表示全部数据。

any,all关键字必须与一个比较操作符一起使用。any关键词可以理解为“对于子查询返回的列中的任一数值,如果比较 结果为true,则返回true”。

3.多表左联

SELECT * FROM table LEFT JOIN table1 ON 条件1 LEFT JOIN table2 ON 条件2……

 

 

 

 

 

 

 

 

555定时器呼吸灯电路制作全攻略:从仿真到实物搭建(附避坑指南) 本文详细介绍了使用555定时器制作呼吸灯电路的完整流程,从基础原理到实物搭建,包括电路设计、元件选择、仿真验证、焊接技巧及调试优化。特别提供了避坑指南,帮助电子爱好者快速掌握这一经典DIY项目,实现美观的呼吸灯效果。 阅读详情

相关推荐

别再被坑了!手把手教你从官网下载免费正版Notepad++(附最新网盘链接)

本文详细指导如何从Notepad++官网安全下载正版软件,避免山寨版本带来的安全风险。通过识别官网特征、推荐官方下载渠道、揭露山寨网站骗局及验证正版功能,帮助用户高效获取纯净的Notepad++代码编辑器,并分享实用插件和配置优化技巧。

weixin_42527654的博客 562

mysql统计出用户足迹表中。浏览量前N的商品

用户足迹表 统计出浏览量前十的商品 select goods_id,count(goods_id) as number from nideshop_footprint GROUP BY goods_id ORDER BY number desc LIMIT 0,10

F2Zf的博客 878

WiFi信道状态信息 基于Intel 5300的CSI Tool 安装及使用(一)

经过半个月的坎坷安装过程,连Windows系统都没装过的本人终于颤颤巍巍把CSI TOOL装好了,下面记录一下适于我所使用设备的安装过程。设备:一台THINKPAD X201,一台师兄借的华硕主板的台式机首先,如果你和我一样对linux其实一窍不通的话,建议先反复看教程里的安装代码,照猫画虎很难一步实现的,中途一定会有这或那的问题需要解决,所以该了解的基础linux指令还是要了解,起码安装过程中的那些指令可以去查一查。.........

Silver_777的博客 2万+

MySQL 列子查询及 IN、ANY、SOME 和 ALL 操作符的使用

MySQL 列子查询 列子查询是指子查询返回的结果集是 N 行一列,该结果通常来自对表的某个字段查询返回。 一个列子查询的例子如下: SELECT * FROM article WHERE uid IN(SELECT uid FROM user WHERE status=1) 该例子在前文《MySQL 子查询subquery语法与用法实例》已有解释及数据实例,在此不再赘述。 列子查询...

weixin_34060299的博客 421

反激电源占空比为何必须小于0.5?次谐波振荡与斜坡补偿详解

在开关电源设计中,峰值电流模式控制因其优异的动态响应和逐周期限流保护而被广泛应用。其工作原理是通过采样电感电流的峰值,与误差电压比较来控制开关管的导通与关断。然而,这种控制方式在反激等隔离拓扑中,当占空比超过50%时,会面临一个固有的稳定性挑战——次谐波振荡。这是由于电流扰动会在相邻开关周期内被放大而非衰减,导致系统在开关频率一半处发生振荡,严重影响输出纹波和可靠性。为解决这一问题,工程上引入了斜坡补偿技术,通过向控制信号叠加一个固定斜率的斜坡,改变环路增益条件,从而在宽输入电压或高占空比需求下维持系统稳定

weixin_29631169的博客 625

Win10内网离线安装NET3.5,绝对成功,保姆级

今天工作安装工具软件套装3.5组件!也在csdn上找了很多方法躺了很多坑,我总结如下! 其实就一条,什么版本的win10装什么版本的net3.5 我的电脑是1909版本,用2004H2的镜像是没有用的,dism组件报错8024402C 所以我下载1909镜像挂在虚拟光驱 ,管理员模式下powershell dism.exe /online /enable-feature /featurename:NetFX3 /Source:E:\sources\sxs dism.exe /online /en..

唉呀妈呀脑瓜疼 6万+

MySQL中 in, some, all等用法的讨论

(本文中SQL语句均在Mysql v5.1中验证) mysql> select * from t1; +----+--------+ | id | value1 | +----+--------+ |  1 |     10 | |  2 |   NULL | |  3 |     10 | |  4 |      3 | +----+--------+ 4 r

gerogeya的专栏 1177

STM32F429+LAN8720实战:5分钟搞定LWIP裸机网络通讯(附完整代码)

本文详细介绍了如何在STM32F429微控制器上,结合LAN8720 PHY芯片,在裸机环境下快速部署和配置LWIP协议栈以实现网络通讯。内容涵盖硬件RMII接口连接、STM32CubeMX关键配置、代码移植与定制,以及常见问题排查方法,帮助工程师在资源受限的嵌入式系统中高效实现稳定的以太网功能。

2y3u4i5o6p的博客 962

SQL查询,子查询作为结果字段

SQL查询,子查询作为结果字段, SELECT DISTINCT sp.comcode, sp.projectname, sp.projecttime, sp.busnature, sp.bustype, sl.concode, sl.conname, sl.contype, sl.conpartya, sl.contotal, sl.conrisedate, sl.con...

號先生的博客 1万+

游戏引擎定制化:大厂如何玩转性能极限(大白话生动有趣版)

游戏大厂如何深度定制游戏引擎?本文系统解析了商业引擎的局限性及大厂定制化的核心诉求。主要内容包括: 大厂定制引擎的根本原因:性能瓶颈、差异化需求、自有生态整合等 主流引擎的优劣势对比及适用场景 定制化重点领域:渲染管线优化、物理系统重构、网络架构改造等 全流程定制方案:从需求分析到模块重构再到工具链开发 典型案例:如腾讯CF手游的渲染优化、原神的热更新系统等 文章指出,顶级游戏产品必须对引擎核心模块动刀,通过深度定制实现性能突破和创新功能开发。同时提供了风险规避建议和技术演进趋势,为游戏开发者提供了宝贵的实

本博客聚焦游戏开发技巧、创业实战心得及大学热门课程干货。这里既有技术深度,也有思维广度,无论你是开发者、创业者还是高校学子,都能在这里找到适合自己的成长之路! 634

对MixPad精灵(触屏语音开关)进行解剖分析

概述 最近有点忙,已经很久没有更新文章了,对不起各位网友啦~ 这次对ORVIBO的新产品:MixPad精灵款的来个剖析,希望对大家有所帮助! 首先,我买了一台对应的设备,直接去官网采购,价格吗还算OK,400多的价格。 拆箱的过程我就不写了,简单的上个图就行了。 一、拆包: 主屏板包装盒(顶部): 主屏板包装盒(底部): 后盖电源部分无内容,我就不拍了,给优快云空间省点存储位置。 二、设备剖析开始 接下来,我们开始对设备进行剖析,步骤如下: 1、拆掉主屏板后盖板,...

LeeKwen的专栏 3941

创建代码生成器可以很简单:如何通过T4模板生成代码?[上篇]

在《基于T4的代码生成方式》中,我对T4模板的组成结构、语法,以及T4引擎的工作原理进行了大体的介绍,并且编写了一个T4模板实现了如何将一个XML转变成C#代码。为了让由此需求的读者对T4有更深的了解,我们通过T4来做一些更加实际的事情——SQL Generator。在这里,我们可以通过SQL Generator为某个数据表自动生成进行插入、修改和删除的存储过程。[文中源代码从这里下载] 一、代...

weixin_34205076的博客 316

高通平台开发系列讲解(系统篇)系统关机流程

📢本篇章主要图解高通平台系统关机流程。

内核笔记 3212

mysql入门笔记2

首先要学会基础库,表,字段,数据。的增删改查后在观看此笔记在之前的mysql入门笔记中有简略介绍。

gougouxianka的博客 801

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

mysql基础入门 2 课堂笔记

mysql基础入门 2 课堂笔记

萌豚老师 434

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

MySQL笔记 2 查询入门

SQL学习指南 笔记 2.1 查询语句 2.2 select语句 /*在查询语句中使用列名、字符、表达式和内建函数调用*/ SELECT emp_id, 'ACTIVE', emp_id * 3.14159, UPPER(lname) FROM employee; /*执行一个内建函数或对简单的表达式求值可以完全省略 from 子句*/ select version(), user(), database(); 列的别名 /*指定列别名*/ SELECT emp_id, 'ACTI

qq_36333986的博客 138

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

Mysql从入门到精通 5.2笔记

Mysql提供了大量的数据类型,为了优化存储,提高数据库性能,在任何情况都要使用最精确的类型 1.整数和浮点数  如果列是整数则用 int unsigned 如果用小数则用float,存储精度高用double 2.浮点数和定点数 float和double相对于decimal的优势是在长度一定的情况下,浮点数能表示更大的范围,但是精度要求高的情况用decimal. 3.日期和日期类型 M...

douyunqian668的博客 337

MySQL 24小时入门笔记(2),查询

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34292287的博客 155

MySQL入门很简单-学习笔记 - 第 2 章 Windows平台下安装与配置MySQL

2.1、msi安装包 2.1.1、安装 特别要注意的是,安装前要删除原来的my.ini和原来的data目录,改名也行,不然在最后一步会“apply security settings”报个1045错误,原因1,防火墙,原因2,数据文件未清除。 一路next,选custom安

KimSoft's Blog 5157

MySQL笔记01: MySQL入门_1.2 MySQL下载安装与配置

双击下载好的“mysql-installer-community-5.6.19.0.msi”著作权归作者所有,转载或内容合作请联系作者。或者在“Archives”下,下载。

qq_24428851的博客 909

MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 高级篇 part 2

MySQL数据库文件的存放路径:/var/lib/mysql/MySQL服务器程序在启动时会到文件系统的某个目录下加载一些文件,之后在运行过程中产生的数据也都会存储到这个目录下的某些文件中,这个目录就称为数据目录。MySQL把数据都存到哪个路径下呢?从结果中可以看出,在我的计算机上MysQL的数据目录就是/var/lib/mysql/。

E___V___E的博客 1030

Mysql学习笔记2--使用入门

---创建数据库kakaxi mysql> create database kakaxi; Query OK, 1 row affected (0.02 sec) ---要知道系统中有哪些数据库,可以使用如下命令...

134

MySQL数据库入门到大牛尚硅谷宋红康老师笔记 基础篇 part 2

安装mysql5.7和8.0由于本人未曾使用过mysql,所以6集不看了,直接完成7集本人不予赘述了,账户密码均为root,已完成安装5.7和8.0的mysql。

E___V___E的博客 1648

MySQL数据库学习笔记:0基础入门到入坑,2小时极速上手

MySQL学习笔记 文章目录前言环境配置登录MySQLMySQL核心文件数据类型数值类型日期类型字符串类型DDl:数据定义语言`SHOW DATABASES``CREATE DATABASE``SHOW CREATE DATABASE``ALTER DATABASE`DROP DATABASEUSEselect database()可视化数据库工具DQL:数据查询语言前置准备`SELECT FROM``AS`有序查询`ORDER BY`条件查询`WHERE`逻辑`AND和OR和NOT`不等式`NULL``I

碳基蒟蒻Serio的博客 2061
上一篇: MySQL入门笔记1
下一篇: DBUtils
gorgeoustudy
博客等级 码龄9年 5粉丝 39原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值