外连接

SQL多表连接查询(具体实例)

房东的猫 提交于 2019-11-29 09:07:45
本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图例如以下: 表2:course 截图例如以下: (此时这样建表仅仅是为了演示连接SQL语句。当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、全然外连接。 1、左连接 left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID 运行结果: 左外连接包括left join左表所有行。假设左表中某行在右表没有匹配。则结果中相应行右表的部分所有为空(NULL). 注:此时我们不能说结果的行数等于左表数据的行数。 当然此处查询结果的行数等于左表数据的行数,由于左右两表此时为一对一关系。 2、右连接 right join 或 right outer join SQL语句:select * from student right join course on student.ID=course.ID 运行结果: 右外连接包括right join右表所有行,假设左表中某行在右表没有匹配,则结果中相应左表的部分所有为空(NULL)。 注:相同此时我们不能说结果的行数等于右表的行数。

SQL多表连接查询(详细实例)

自古美人都是妖i 提交于 2019-11-29 09:07:31
本文主要列举两张和三张表来讲述多表连接查询。 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键。) 一、外连接 外连接可分为:左连接、右连接、完全外连接。 1、左连接 left join 或 left outer join SQL语句:select * from student left join course on student.ID=course.ID 执行结果: 左外连接包含left join左表所有行,如果左表中某行在右表没有匹配,则结果中对应行右表的部分全部为空(NULL). 注:此时我们不能说结果的行数等于左表数据的行数。当然此处查询结果的行数等于左表数据的行数,因为左右两表此时为一对一关系。 2、右连接 right join 或 right outer join SQL语句:select * from student right join course on student.ID=course.ID 执行结果: 右外连接包含right join右表所有行,如果左表中某行在右表没有匹配,则结果中对应左表的部分全部为空(NULL)。 注:同样此时我们不能说结果的行数等于右表的行数。当然此处查询结果的行数等于左表数据的行数

python与数据库操作

这一生的挚爱 提交于 2019-11-29 08:14:30
1、启动SQL服务:net start mysql 2、登录MYSQL数据库>mysql -h localhost -u root -p 3、创建数据库:CREATE DATABASE [IF NOT EXISTS] <数据库名>; 4、创建表:-》USE test_db;      ---》CREATE TABLE tb_emp1{字段} 5、事务机制可以保持数据一致性,具有4个属性:原子性,一致性,隔离性,持久性 6、内外连接区别: (1)内连接:组合两个表中的记录,返回关联字段相符的记录,即返回两个表的交集 inner join ....on.... select * from a_table a inner join b_table b on a.a_id = b.b_id; (2)左(外连接):left join on / left outer join on:左外连接中左表记录全部展示,右表只显示符合搜索条件的记录 语句:select * from a_table a left join b_table b on a.a_id = b.b_id; (3)右(外连接):right join on / right outer join on:右外连接右边全部展示,左表只显示符合搜索条件的记录 语句:select * from a_table a right outer

数据库操作(二)

我的未来我决定 提交于 2019-11-29 05:02:01
数据库操作(二) 1.MySQL行(记录)操作 插入(增加)数据 1.插入完整数据 语法1: insert into 表名(字段1,字段2..字段n) values(值1,值2..值n); #字段和值要一一对应 语法2: insert into 表名 values(值1,值2..值n); #表名后不定义列名,则按顺序给所有列添加值 2.指定字段插入数据 语法: insert into 表名(字段1,字段2..) values(值1,值2..) 3.插入多条记录 语法: insert into 表名 values (值1,值2,值3...值n), (值1,值2,值3...值n), (值1,值2,值3...值n); #插入多条记录用逗号分隔 4.插入查询结果 语法: insert into 表名(字段1,字段2..字段n) select (字段1,字段2..字段n) from 表2 where 条件; #将从表2中查询的结果插入到表中,查询数据要和指定的字段对应好 5.增加字段 语法: alter table 表名 add 字段名 数据类型 约束条件, add 字段名 数据类型 约束条件; #增加记录 alter table 表名 add 字段名 数据类型 约束条件 first; #增加记录到第一个位置 alter table 表名 add 字段名1 数据类型 约束条件 after

SQL查询 - 表连接

Deadly 提交于 2019-11-29 01:32:11
一、连接查询简介   连接查询中用来连接连个表的条件称为连接条件或连接谓词。其形式为: [<表1>].<列名1><连接运算符>[<表2>].<列2>     常见的连接运算符包括   1、比较运算符:=、>、<、>=、<=、!=、between和and。   2、逻辑运算符:not、and、or。   3、使用between和and连接查询形式为[<表1>].<列名1><between>[<表2>].<列名2>and[<表2>].<列名3>。 二、连接按照结果集分类   1、内连接:表中的行互相连接。结果集的行数等于每个表满足条件的行数的乘积,参与连接的表示平等的。   2、外连接:参与连接的表有主次之分,主表的每一行数据去匹配从表的数据列,符合连接条件的数据将直接返回到结果集中,不符合连接条件的数据列将以null填充后返回到结果集中,其中外连接又分左外连接、右外连接和全连接3种。   (一)、等值连接查询 select p.*,c.* from country as c,person as p where c.countryid = p.countryid   等上面的等值连接中,两张表都有countryid字段,因此查出来的结果中就会有两列countryid   (二)、在等值结果中消除数据就是自然连接 select p.name,c.countryname from

SQL语句大全

送分小仙女□ 提交于 2019-11-28 21:46:59
1.1、说明:创建数据库 2.CREATE DATABASE database-name 3.2、说明:删除数据库 4.drop database dbname 5.3、说明:备份sql server 6.--- 创建 备份数据的 device 7.USE master 8.EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat' 9.--- 开始 备份 10.BACKUP DATABASE pubs TO testBack 11.4、说明:创建新表 12.create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 13. 14.根据已有的表创建新表: 15.A:create table tab_new like tab_old (使用旧表创建新表) 16.B:create table tab_new as select col1,col2… from tab_old definition only 17.5、说明:删除新表 18.drop table tabname 19.6、说明:增加一个列 20.Alter table tabname add column col type 21.注

SQL查询---内连接、外连接、自连接查询

情到浓时终转凉″ 提交于 2019-11-28 20:34:16
先创建2个表:学生表和教师表 1.内连接: 在每个表中找出符合条件的共有记录。[x inner join y on...] 第一种写法:只用where SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t,student s WHERE t.ID=s.TEACHER_ID 第二种写法:使用 join..on.. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t JOIN student s ON t.ID=s.TEACHER_ID 第三种写法:使用inner join .. on.. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t INNER JOIN student s ON t.ID=s.TEACHER_ID 2.外连接:外连接有三种方式:左连接,右连接和全连接 (1)左连接: 根据左表的记录,在被连接的右表中找出符合条件的记录与之匹配,如果找不到与左表匹配的,用null表示 [x left [outer] join y on...] 第一种写法:left join .. on .. SELECT t.TEACHER_NAME,s.STUDENT_NAME FROM teacher t LEFT JOIN student

多表查询

风格不统一 提交于 2019-11-28 01:56:27
多表查询尽量使用SQL:1999语法 预先预估可能产生的数据量 ③SELECT [DISTINCT] * | 列 [别名] , .. | 计算 ①FROM 数据表 | 行列的集合 [AS] |别名|,数据表 |行列的集合 [AS] [别名] , ... ②[WHERE 数据筛选条件(s)] ④[ORDER BY 排序字段 | 别名 [ASC | DESC]] 1.多表查询: 统计emp,dept表中数据量 ,如果直接使用下列语句查询会造成笛卡儿积,两个表的查询结果积(正确的应该是18条); 查询另外一个表里的信息需要进行表关联 SELECT COUNT(*) FROM emp,dept; //结果是56条,正确的应该是18条 消除迪尔卡积(会有重复,只不过不显示) SELECT * FROM emp,dept WHERE emp.deptno=dept.deptno ; //根据部门进行关联查询 SELECT emp e ,dept d WHERE e.deptno=d.deptno ; //使用别名进行查寻 2.表连接 内连接:内连接为等值连接,等值连接必须保证多张表指定列完全一致 外连接(左外连接,右外连接,全外连接):可以显示左表或右表完整数据(即使判断条件不足) (1)内连接: SELECT e.empno,e.enam,e.job,e.deptno,d.dname

sql数据库的基础语句

|▌冷眼眸甩不掉的悲伤 提交于 2019-11-27 21:34:52
1, 创建 数据库 create database database-name 2, 删除数据库 drop database dbname 3, 备份sql server 创建 备份数据的device Use master Exec sp_addumpdevice 'disk', 'testBack', 'c:\ mssql 17backup\MyNwind_1.dat' 开始 备份 Backup database pubs TO testBack 4, 创建新表 create table table_name (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 7, 添加主键 Alter table table_name add primary key (col) 说明:删除主键:

多表查询

那年仲夏 提交于 2019-11-27 16:02:32
多表查询的分类 1.内连接 2.外连接 3.交叉连接(了解) 注:所用图形界面管理器为:Navicat Permium 12 内连接 实质是:多个表的交集。 #user_info表 create table user_info ( id int ( 2 ) primary key , user_name varchar ( 12 ) unique , password varchar ( 15 ) not null , real_name varchar ( 8 ) not null , age int ( 3 ) ) ; #address表 create table address ( id int ( 2 ) primary key , user_id int ( 2 ) not null , real_name varchar ( 8 ) , mobile char ( 11 ) , address varchar ( 150 ) ) ; insert into user_info values ( 1 , '浅唱灬幸福' , '8912@321' , '王晓明' , 12 ) ; insert into address values ( 1 , 1 , '王小明' , '15516472282' , '山西太原' ) ; insert into address values