外连接

数据库数据查询汇总

一个人想着一个人 提交于 2020-01-12 01:13:58
前言 数据查询 单表查询 连接查询 自身连接 内连接 外连接 多表连接 嵌套查询 集合查询 数据更新 插入数据 修改数据 删除数据 项目需求 前言 本篇博文主要是数据库SQL语句的总结,其中会有一些经常会忽略的小知识点。这里总结了数据查询和数据更新,其中比较重要且有难度的是连接查询和嵌套查询。最后列出了我在项目中所遇到的问题,但是SQL语句并没有做多少优化。主要是想拿出来做个笔记,同时供大家学习和交流,若是有优化的更好的SQL语句,可以在评论区给出。 数据查询 数据查询是数据库的核心操作。SQL提供了SELECT语句进行数据查询,该语句具有灵活的使用方式和丰富的功能。其一般格式为: SELECT [ALL|DISTINCT] <目标列表达式>[,<目标列表达式>]... FROM <表名或视图名> [,<表名或视图名>...]|(<SELECT语句>)[AS]<别名> [WHERE <条件表达式>] [GROUP BY <列名1> [HAVING <条件表达式>]] [ORDER BY <列名2> [ASC|DESC]]; 整个SELECT语句的含义是,根据WHERE子句的条件表达式从FROM子句指定的基本表、视图或派生表中找出满足条件的元组,再按SELECT子句中的目标列表达式选出元组中的属性值形成结果表。如果有GROUP BY子句,则将结果按<列名1>的均值进行分组

图解MySQL 内连接、外连接

半世苍凉 提交于 2020-01-11 06:57:01
2.内连接(INNER JOIN) 内连接(INNER JOIN):有两种,显式的和隐式的,返回连接表中符合连接条件和查询条件的数据行。(所谓的链接表就是数据库在做查询形成的中间表)。例如:下面的语句3和语句4的结果是相同的。 语句1:隐式的内连接,没有INNER JOIN,形成的中间表为两个表的笛卡尔积。SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME FROM CUSTOMERS C,ORDERS O WHERE C.ID=O.CUSTOMER_ID; 语句2:显示的内连接,一般称为内连接,有INNER JOIN,形成的中间表为两个表经过ON条件过滤后的笛卡尔积。SELECT O.ID,O.ORDER_NUMBER,C.ID,C.NAME FROM CUSTOMERS C INNER JOIN ORDERS O ON C.ID=O.CUSTOMER_ID; 3.外连接(OUTER JOIN): 外连不但返回符合连接和查询条件的数据行,还返回不符合条件的一些行。 用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Community Server

T-SQL经典语句(SQL server)

这一生的挚爱 提交于 2020-01-09 04:42:52
一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

T-SQL经典语句

耗尽温柔 提交于 2020-01-09 04:41:26
一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' --- 开始 备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。

MySQL数据库(三)------ order、limit、join以及正则表达式

喜夏-厌秋 提交于 2020-01-09 01:02:31
order、limit、join以及正则表达式 1. 排序order by 2. limit限制显示条数 3. 连接查询join 3.1内连接 3.2 外连接 4.外键 FOREIGN KEY(字段名) REFERENCES 主表名(字段名) 5. 联合查询Union 6. 子查询 7. 正则表达式 1. 排序order by 默认升序 ASC 降序 DESC 2. limit限制显示条数 LIMIT 显示条数 :可用于修改、删除 LIMIT 偏移量(页数),每页显示条数 3. 连接查询join 连接查询join是将两个或者两个以上的表按照某个条件连接起来,从中选取需要的数据。当不同的表中有相同意义的字段时,可以通过这些字段连接这些表。 3.1内连接 JOIN | CROSS JOIN | INNER JOIN 用 ON连接条件 显示两个表中符合连接条件的记录 3.2 外连接 左外连接LEFT [OUTER] JOIN:左表显示全部数据,右表没有匹配到的显示NULL 右外连接RIGHT [OUTER] JOIN:右表显示全部数据,左表没有匹配到的显示NULL 4.外键 FOREIGN KEY(字段名) REFERENCES 主表名(字段名) 外键是相对于主键说的,是建立表之间 的联系的必须的前提。 比如这里有两张,user(用户)表和qx(权限)表,user中gid是用户权限id

MYSQL_语法 5 (7)

浪尽此生 提交于 2020-01-04 09:47:51
内联结查询 内连接是通过在查询中设置连接条件的方式,来移除查询结果集中某些数据行后的交叉连接。简单来说,就是利用条件表达式来消除交叉连接的某些数据行。 在MySQL FROM 子句中使用关键字 INNER JOIN 连接两张表,并使用 ON 子句来设置连接条件。如果没有任何条件,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。 SELECT <列名1,列名2 …> FROM <表名1> INNER JOIN <表名2> [ ON子句] <列名1,列名2…>:需要检索的列名。 <表名1><表名2>:进行内连接的两张表的表名。 内连接是系统默认的表连接,所以在 FROM 子句后可以省略 INNER 关键字,只用关键字 JOIN。使用内连接后,FROM 子句中的 ON 子句可用来设置连接表的条件。 mysql> SELECT tb_students_info.id , name , age , dept_name -> FROM tb_students_info , tb_departments -> WHERE tb_students_info.id = tb_departments.id; +----+--------+------+-----------+ | id | name | age | dept_name | +----+--------+

关系模型

北城余情 提交于 2020-01-01 07:32:02
关系模型概念 关系模型认为所有数据都可以表示为数学上的关系,即集合中两个元素之间的连接。 这一概念在关系型数据库中体现为数据表。数据表中的每一行保存一条记录称做tuple(元组),每一列表示数据记录的一个属性称做domain(域)。 每个数据都与一个记录和一个属性关联,即两者的关系。而数据表则是记录和属性的关系集。 Key Super Key(超码): 是一个或多个属性的集合,可以唯一确定一条记录。 Candidate Key(候选码): 删除candidate key中任意一个属性都会使其失去唯一确定记录的特性。 Primary Key(主码): 从candidate key中选择一个作为对记录的唯一标识。 Foreign Key(外码): 关系模式R的属性A参照关系模式S的主键, 称A为R中的外键. Primary Key中的属性称为主属性, 不在Primary Key中的属性称为非主属性. Primary Key一般起约束作用,不能重复不能为空, 防止重复(unique)或无法查询(not null)的情况发生,称为实体完整性约束(Entity integrity)。 Forign Key用来用数据表S来保证数据表R的完整性,R中Foreign Key属性A参照关系S,则R.A中的值必须在S的主键中出现过, 称为参照完整性约束(Referential integrity)。

Oracle连接查询

强颜欢笑 提交于 2019-12-29 17:18:06
一、内连接和外连接 内连接用于返回满足连接条件的记录;而外连接则是内连接的扩展,它不仅会满足连接条件的记录,而且还会返回不满足连接条件的记录,语法如下: Oracle代码 select table1.column,table2.column from table1 [inner|left|right|full]join table2 on table1.column=table2.column; inner join表示内连接、left join表示左外连接、right join表示右外连接、full join表示全连接;on用于指定连接条件。 注意:如果使用form内、外连接,则必须使用on操作符指定连接条件;如果使用(+)操作符连接,则必须使用where指定连接条件。 1、内连接 内连接查询返回满足条件的所有记录,默认情况下没有指定任何连接则为内连接,例如: Oracle代码 select t1.name,t2.name from cip_temps t1 inner join cip_tmp t2 on t1.ID=t2.id; 2、左外连接 左外连接查询不仅返回满足条件的所有记录,而且还会返回不满足连接条件的连接操作符左边表的其他行,例如: Oracle代码 select t1.name,t2.name from cip_temps t1 left join cip_tmp

内连接,左连接,右连接,全外链接

南楼画角 提交于 2019-12-20 02:35:45
( 菜鸟一枚 ) 最近在看别人代码的时候,总是碰到诸如join on的SQL语句,上课那会儿老师也仔细的讲过, 单独的拿出来看的话也是很简单的,只是放在那样复杂的SQL语句中,阅读起来还是很费劲。 正好今天不怎么忙,查查资料在总结一下。   工作中,我们都习惯了只查询一张表中的数据,如果业务中需要去查询另外一张表中的数据时, 我们往往习惯于遍历查询的数据然后根据外键字段去查询另外一张表,这样做没有什么问题。 但是当我们需要关联3张表甚至4张表,或者在一些大型的项目中需要些一些非常复杂的SQL语句 的时候我们发现,这样会使业务层的代码非常非常复杂。   这个时候,关联表查询就会变得非常重要。 基本定义:   left join (左连接):返回包括左表中的所有记录和右表中连接字段相等的记录。   right join (右连接):返回包括右表中的所有记录和左表中连接字段相等的记录。   inner join (等值连接):只返回两个表中连接字段相等的行。   full join (全外连接):返回左右表中所有的记录和左右表中连接字段相等的记录。 现在呢举个例子:   A表             id  name     1  小王   2  小李   3  小刘   B表   id  A_id  job   1  2    老师   2  4    程序员      select

数据库多表连接查询详解

你离开我真会死。 提交于 2019-12-19 09:43:08
通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。 在关系数据库管理系统中,表建立时各数据之间的关系不必确定,常把一个实体的所有信息存放在一个表中。当检索数据时,通过连接操作查询出存放在多个表中的不同实体的信息。连接操作给用户带来很大的灵活性,他们可以在任何时候增加新的数据类型。为不同实体创建新的表,而后通过连接进行查询。 连接可以在SELECT 语句的FROM子句或WHERE子句中建立,似是而非在FROM子句中指出连接时有助于将连接操作与WHERE子句中的搜索条件区分开来。所以,在Transact-SQL中推荐使用这种方法。 SQL-92标准所定义的FROM子句的连接语法格式为: FROM join_table join_type join_table [ON (join_condition)] 其中join_table指出参与连接操作的表名,连接可以对同一个表操作,也可以对多表操作,对同一个表操作的连接又称做自连接。 join_type 指出连接类型,可分为三种:内连接、外连接和交叉连接。内连接(INNER JOIN)使用比较运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行。根据所使用的比较方式不同,内连接又分为等值连接、自然连接和不等连接三种。 外连接分为左外连接(LEFT OUTER