写SQL语句需要注意的点

先回忆一下DDL和DML

创建表DDL

create table t_xx(id int auto_increment primary key, name char(10),...)
create table t_student( id int auto_increment primary key , name char(10), 外键id int, 
foreign key(外键id) references 外表t_class(外表id字段名) );

插入数据DML

insert into t_xx(f_1, f_2, f_3,.....) values(v_1, v_2, v_3....),  --可省略字段名
(v_1, v_2, v_3....),(......);

更新数据DML

updata t_xx set f_xx = 新值  where f_xx = 旧值;

连接

  • INNER JOIN 两边表同时有对应的数据,即任何一边缺失数据就不显示。
  • LEFT JOIN 会读取左边数据表的全部数据,即便右边表无对应数据。
  • RIGHT JOIN 会读取右边数据表的全部数据,即便左边表无对应数据。

连接时的on和where

注意on与where有什么区别,两个表连接时用on,在使用left jion时,on和where条件的区别如下:

  • on条件是在生成临时表时使用的条件,它不管on中的条件是否为真,都会返回左边表中的记录。
  • where条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有left join的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

分组group by时having和where的区别

  • WHERE语句在GROUP BY语句之前;SQL会在分组之前计算WHERE语句。
  • HAVING语句在GROUP BY语句之后;SQL会在分组之后计算HAVING语句。
  • 由于COUNT()函数不可用于WHERE语句中,但可以在HAVING后面用

distinct和group by 比较性能

  • 在不同记录数较小时(重复的数据大),count group by性能普遍高于count distinct,尤其对于text类型表现的更明显。
  • 在不同记录数较大的场景(重复数据小),count group by性能反而低于直接count distinct。
    tips:具体可访问查看https://www.jianshu.com/p/34800d06f63d

SQL集合运算之差、并、交

  • EXPECT 集合差运算, 可代替not in 或者in
  • UNION 集合并运算,可选参数 ALL,重复的数据也显示 可代替or
  • INTERSECT 集合交运算,返回两个查询检索出的共有行

举例:查出不是部门经理的普通员工编号

SELECT emp_no FROM employees
EXCEPT --左减右
SELECT emp_no FROM dept_manager;
-- 上面代替下面,上面会用索引,下面不用索引
SELECT emp_no FROM employees
WHERE emp_no NOT IN (SELECT emp_no FROM dept_manager)

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CoreAnimation编程指南(九)图层布局

NSView提供了经典的“stuts and springs”模式,用于视图调整大小的时候把关联到它父图层的视图重新调整位置。图层支持该模式,而且Mac OS X上面的核心动画提供了一个更通用的布局管理器机制,允许开发者自己写他们自己的布局管理器。可以为图层…

数据库优化、数据库基础等常用知识点总结

建表优化 1)数据库范式 第一范式(1NF):强调的是列的原子性,即列不能够再分成其他几列。 如电话列可进行拆分—家庭电话、公司电话第二范式(2NF):首先是 1NF,另外包含两…

CoreAnimation编程指南(十)KVC

CAAnimation和CALayer类扩展了NSKeyValueCoding协议,给键添加默认值,扩展了封装协议,支持CGPoint、CGRect、CGSize和CATransform3D关键路径。1.1 键-值编码兼容的容器类CALayer和CAAnimation都是键-值编码兼容的容器类,允许你修改…

CoreImage使用介绍

一、概述CoreImage.framework从iOS5开始启用,它使我们很容易就能处理图片的各种效果,色彩,曝光,饱和度,变形等等。不仅功能强大,而且可以直接使用GPU,效率很高,甚至可以实时的对视频…

一片文章概括大部分python面试基础常考题(部分有详解)

本片文章部分参考地址:https://segmentfault.com/a/1190000018737045 python是动态解释性的强类型定义语言 强类型:不允许不同类型相加。例如:整形字符串会报类型错误。 动态:不使用显示数据类型声明,且确定一个变量…

AssetsLibrary使用介绍

一、概述AssetsLibrary框架:从iOS4.0开始提供,可以通过它获取设备里的图片和视频等资料,以API的方式提供,而且界面式的,比UIImagePickerViewController灵活很多。既可以读又可以写。二、读取资料库中的全部资料1.大概步…

Objective-C成员变量声明方式探究

一、interface和 property 方式声明变量的区别1.你可以单独在interface中定义变量,而不用property定义;也可以只用property去定义,而不在interface中定义,当然用了property去定义,一般要在.m文件中用synthsize去合成相…

web处理高并发措施

高并发处理的思路,从几个方面进行解决 先来了解几个名词 QPS: 每秒处理的请求数量! 响应时间: 处理一个请求需要的时间! 吞吐量: 单位时间内的处理请求数量! 最大并发数: 同一时间能支持的最大请求数! 1、流量处…

经典逻辑编程题(本文用python实现)

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 思…

@interface使用详解

1.interface可以实现三种功能&#xff1a;(1)声明类:Class(2)声明类别:Category(3)声明扩展:Extension2.声明类&#xff1a;这个就比较常用了&#xff0c;在这里不多说。代码&#xff1a;interface SomeClass : NSObject <SomeDelegate>{}end3.声明类别&#xff1a;(1)类…

同一账号多处登录问题

思路 用户每次登录时生存一个随机字符串保存在服务器和客户端&#xff0c;用户每次访问验证这个字符串&#xff0c;不通过时则要求用户下线&#xff0c; 如果有两个用户先后分别登录同一个帐号&#xff0c;则后登录的那位产生的字符串必然会覆盖先登录的那位&#xff0c; 然后…

iOS中HTTP请求使用cookie

一、iOS中Http请求对cookie的默认处理&#xff1a;1.一直以为ios的http请求不会自动处理请求中的cookie&#xff0c;所以一直认为客户端请求默认是没有Session的&#xff0c;现在发现自己的想法错了很久。2.NSURLRequest默认的处理过程&#xff1a;类似于服务器端和网页端的ses…

python基础题

import functools from decimal import Decimal 字符串反转 import timea hello b functools.reduce(lambda x,y:yx,a) print(b) print(type(b))c .join(list(a)[::-1]) print(c)查找字符串 str_1我爱你中国 char_1中国 nPosstr_1.index(char_1) print(nPos)数组合并去重排…

[Cordova]JS和Native交互实现关键代码(iOS)

一、JS中定义的exec函数&#xff1a;define("cordova/exec", function(require, exports, module) 。关键实现代码如下&#xff1a;1.建立command对象&#xff0c;并且将命令推入commandQueuevar command [callbackId, service, action, actionArgs];commandQueue.p…

win10专业版激活方法——亲测可行!!!

转自:https://blog.csdn.net/AinUser/article/details/79247841 1.首先在桌面左下角的“cortana”搜索框中输入“CMD”&#xff0c;待出现“命令提示符”工具时&#xff0c;右击选择“以管理员身份”运行。 2.此时将“以管理员身份”打开“MSDOS”窗口&#xff0c;在此界面中&…

CoreData简介

一、概念 1.Core Data 是数据持久化存储的最佳方式 2.数据最终的存储类型可以是&#xff1a;SQLite数据库&#xff0c;XML&#xff0c;二进制&#xff0c;内存里&#xff0c;或自定义数据类型 3.好处&#xff1a;能够合理管理内存&#xff0c;避免使用sql的麻烦&#xff0c;高效…

synthesize和dynamic

在声明property属性后&#xff0c;有2种实现选择一、synthesize编译器期间&#xff0c;让编译器自动生成getter/setter方法。当有自定义的存或取方法时&#xff0c;自定义会屏蔽自动生成该方法.二、dynamic告诉编译器&#xff0c;不自动生成getter/setter方法&#xff0c;避免编…

NSZombieEnabled使用

我们做iOS 程序开发时经常用遇到 EXC_BAD_ACCESS 错误导致 Crash&#xff0c;出现这种错误时一般 Xcode 不会给我们太多的信息来定位错误来源&#xff0c;只是在应用 Delegate 上留下像Thread 1: Program received signal:"EXC_BAD_ACCESS"&#xff0c;让问题无从找起…

XCode的控制台调试命令

XCode4.0以后&#xff0c;编译器换成了LLVM 编译器 2.0&#xff0c;与以前相比&#xff0c;更加强大&#xff1a; 1.LLVM 编译器是下一带开源的编译技术.完全支持C, Objective-C, 和 C. 2.LLVM 速度比 GCC快两倍,建立的程序也会运行的更快. 因为它更好的利用现代的芯片的结构. …

通过终端,查看sqlite3的存储文件

在调试应用的时候&#xff0c;可以查看数据库里的数据。 1、定位到模拟器的目录 cd ~/Library/Application\ Support/iPhone\ Simulator 2、查找文件名包含 OrgChart.sqlite的文件&#xff0c;并打印路径 find . -name "OrgChart.sqlite" –print 输出&#xff1a; .…