外连接

数据库完美总结(一)

旧街凉风 提交于 2020-02-23 03:39:34
数据库大体可以分为: 基于标准的SQL的 关系型数据库 :Oracle、MySQL、SQL Server 不基于SQL实现的 非关系型数据库 :键值对【memcached、redis】;文档型【 mongodb】; 数据库基本语法(大写均为关键字,不可缺少): 1)登录本地数据库: MYSQL -U 'username' -P 'password' ; 2)显示当前的数据库: SHOW DATABASES ; 3)创建数据库: CREATE DATABASE IF NOT EXISTS db_test CHARACTER SET utf8mb4; 4)使用/删除数据库: USE/DROP DATABASE db-name; 5)查看/创建表: DESC/CREATE TABLE table_name; 【基本】增删改查CRUD :Create, Retrieve,Update,Delete 1)多行数据 + 指定列插入: INSERT INTO table_student (id, sn, name) VALUES (?,?,?); 2)删除:-- 删除孙悟空同学的考试成绩 -------------- DELETE FROM exam_result WHERE name = '孙悟空'; -- 删除整张表数据 -------------- DROP TABLE IF EXISTS

Mysql 多表连接查询 inner join 和 outer join 的使用

烈酒焚心 提交于 2020-02-22 18:53:09
Mysql 多表连接查询 inner join 和 outer join 的使用 JOIN的含义就如英文单词“join”一样,连接两张表,大致分为内连接,外连接,右连接,左连接,自然连接。这里描述先甩出一张用烂了的图,然后插入测试数据。 首先先列举本篇用到的分类(内连接,外连接,交叉连接)和连接方法(如下): A)内连接 :join,inner join B)外连接 :left join,left outer join,right join,right outer join,union C)交叉连接 :cross join 案例表: t_users: t_department: 第一种:内连接 inner join 内连接INNER JOIN是最常用的连接操作。从数学的角度讲就是求两个表的 交集 ,从笛卡尔积的角度讲就是从笛卡尔积中挑出ON子句条件成立的记录。 有INNER JOIN,WHERE(等值连接),STRAIGHT_JOIN,JOIN(省略INNER)四种写法。 select d.id, d.department, t.name from t_users t inner join t_department d on d.id = t.department_id 结果说明;只去表A表和B表共同有的on 条件部分数据; 第二种:外连接 left join,left outer

数据库SQLServer的联表操作

冷暖自知 提交于 2020-02-18 03:27:43
联表操作: 基本连接: select 表1.某列,表1.某列,表2.某列 from 表1,表2 where 条件 select Articles.Title,Articles.Content,Users.Email from Articles,Users where Users.Id<3 可以查两个以上表的数据,不需要添加两个表关联的东西 内连接 :[inner join 表名 on 关系] select 表1.某列,表1.某列,表2.某列 from 表1 inner join 表2 on 条件 select Articles.Title,Articles.Content,Users.Email,Users.Id from Articles inner join Users on Users.Id<3 指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件 左连:[left join 表名 on 关系] select * from 表1 [left join 表2 on 条件 左连接显示左表全部行,和右表与左表相同行。 左外连:[left outer join 表名 on 关系] select * from 表1 left outer join 表2 on 条件 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。 右连[right join 表名 on 关系

常用SQL语法大全----菜鸟级

拈花ヽ惹草 提交于 2020-02-08 10:17:57
SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建 备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:mssql7backupMyNwind_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

数据库--多表查询

倖福魔咒の 提交于 2020-02-08 03:47:51
多表查询 分为以下三种方式: 合并结果集 连接查询 子查询 合并结果集 : ·要求被合并的表(结果集)中,列的类型和列数相同 · UNION ,去除重复行 · UNION ALL ,不去除重复行 实例: SELECT * FROM 表 1 UNION ALL SELECT * FROM 表 2 ; 连接查询: 分类 ·内连接 ·外连接 ----左外连接 ----右外连接 ----全外连接(mysql不支持) ·自然连接(属于一种简化方式) 内连接 ·方言: SELECT * FROM 表1 别名1,表2 别名2 WHERE 别名1.xx=别名2.xx; (就当前数据库管理系统支持) ·标准: SELECT * FROM 表1 别名1,INNER JOIN 表2 别名2 ON 别名1.xx=别名2.xx; 自然: SELECT * FROM 表1 别名1,NATURAL JOIN 表2 ; (就是不用加ON,就是自动帮你找条件) 外连接 ·左外连接: SELECT * FROM 表1 别名1 LEFT OUTER JOIN 表2 别名2 ON 别名1.xx=别名2.xx; ----左表记录无论是否满足条件都会查询出来,而右表只有满足条件才能出来,左表中不满足条件的记录,右表部分都为NULL ·左外自然: SELECT * FROM 表1 别名1 NATURAL LEFT OUTER

Oracle 5~ 集合运算、连接查询

故事扮演 提交于 2020-02-02 03:05:02
1.集合运算就是把多个查询结果组合成一个结果。 当前数据库中有stuinfo和stuinfo_2018两张表,stuinfo有4条数据:张三、王五、龙七、李四,stuinfo_2018中只有1条王五的数据。 (1)INTERSECT 交集:返回两个查询共有的结果。 (2)UNION ALL 并集重复:返回各个查询的所有结果,包括重复的数据行。 (3)UNION 并集不重复:返回各个查询的所有不重复的结果。 (4)MINUS 补集:返回第一个查询结果减去第二个查询结果的剩余数据行。 2.连接查询 (1)内连接(inner join):两张表通过某个字段进行内连接,查询结果是通过该字段按关系运算符匹配出的数据行。 等值连接:连接条件用‘=’比较被连接的值,查询结果是被连接表中的所有行。(不等连接) 例如,关联查询学生信息表stuinfo和班级信息表class。 不等连接:连接条件用‘=’以外的运算符比较连接。 小插曲:sqlplus的界面实在是太不友好了,所以我去下载了一个sql developer,查询结果看起来清晰一点。 sql developer的下载链接: https://www.oracle.com/tools/downloads/sqldev-v192-downloads.html 为了练习连接查询,我更新了数据库里的表stuinfo 和 stuinfo_2018

SQL基础语句汇总-学习

一笑奈何 提交于 2020-01-31 14:07:49
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中列加上后数据类型也不能改变

SQL中的各种连接

江枫思渺然 提交于 2020-01-31 10:40:38
原地址: 传送门 SQL 左外连接,右外连接,全连接,内连接 连接条件可在FROM或WHERE子句中指定,建议在FROM子句中指定连接条件。WHERE和HAVING子句也可以包含搜索条件,以进一步筛选连接条件所选的行。 连接可分为以下几类: 内连接。(典型的连接运算,使用像 = 或 <> 之类的比较运算符)。包括相等连接和自然连接。 内连接使用比较运算符根据每个表共有的列的值匹配两个表中的行。例如,检索 students 和 courses 表中学生标识号相同的所有行。 外连接。外连接可以是左向外连接、右向外连接或完整外部连接。 在FROM子句中指定外连接时,可以由下列几组关键字中的一组指定: LEFT JOIN 或 LEFT OUTER JOIN。 左向外连接的结果集包括LEFT OUTER子句中指定的左表的所有行,而不仅仅是连接列所匹配的行。如果左表的某行在右表中没有匹配行,则在相关联的结果集行中右表的所有选择列表列均为空值。 RIGHT JOIN 或 RIGHT OUTER JOIN。 右向外连接是左向外连接的反向连接。将返回右表的所有行。如果右表的某行在左表中没有匹配行,则将为左表返回空值。 FULL JOIN 或 FULL OUTER JOIN。 完整外部连接返回左表和右表中的所有行。当某行在另一个表中没有匹配行时,则另一个表的选择列表列包含空值。如果表之间有匹配行

mysql 外连接与内连接作用

走远了吗. 提交于 2020-01-31 06:06:17
内连接: 指连接结果仅包含符合连接条件的行,参与连接的两个表都应该符合连接条件。 外连接: 连接结果不仅包含符合连接条件的行同时也包含自身不符合条件的行。包括左外连接、右外连接和全外连接。 左外连接:左边表数据行全部保留,右边表保留符合连接条件的行。 右外连接:右边表数据行全部保留,左边表保留符合连接条件的行。 全外连接:左外连接 union 右外连接。 首先创建两个表分别为e1和department e1如下 department如下 首先进行内连接查询 select * from e1,department where department=dep_id;结果如下 我们发现只有在e1表中的department与department表中dep_Id相同的列会被显示,其它的不会显示出来 然后使用左外连接进行查询 select * from e1 left join department on department=dep_id;结果如下 我们发现,除了e1表中department和department表中dep_id相同的列被显示出来,e1表中其它的列也显示出来,但是dep_id和dep_name为NULL 因为左外连接的作用是把连接的左表,即left左边的表,也就是e1中的所有列显示出来,满足条件的正常显示,不满足的用NULL代替。 如果再加上附加条件,比如:select *

sql查询

蓝咒 提交于 2020-01-25 01:12:43
sql语法 select * 列名1,列名2... from 表名 【连接查询 内连接/左链接 on条件】 where 条件 子查询/in/exists/between...and... group by分组列1,分组列2... having 字句 可以对分组结果进行筛选 order by 拍序列1,拍序列2... 写sql语句的步骤 1、先确定从哪个表查询数据,是要从一个表查询还是从多个表查询,如果是多个表必须使用连接查询 2、确定是否需要分组查询 3、写where条件 4、写需要返回的列 连接查询 连接查询分内连接和外连接,外连接又分左外连接,右外连接,全连接 内连接 返回所有满足连接条件的记录 select * from 表1 inner join 表2 on 表1.外键=表2.主键 --查询所有有部门的员工的信息 select * from emp e inner join dept d on e.deptno=d.deptno; 左外连接返回左表的所有数据+右表匹配到的数据,如果左表匹配不到右表的数据,显示为null --查询所有员工信息,如果员工有部门信息,显示出来,否则不显示 select * from emp e left join dept d on e.deptno=d.deptno; 右外连接同左外连接 全连接返回左表的所有数据+右表的所有数据