外连接

多表查询:内连接、外连接(左右全)、交叉连接

試著忘記壹切 提交于 2019-11-27 15:56:38
多表查询 #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 ( 2 , 1 , '王鑫' , '18404905139' , '山西大同' ) ; insert into

多表查询

戏子无情 提交于 2019-11-27 15:56:00
情景实例 现为创建电商系统需要存放用户信息和收货地址的表如下: 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) ); 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(2,1,'王鑫','18404905139','山西大同'); insert into address values(3,1,

详述数据库多表查询

老子叫甜甜 提交于 2019-11-27 15:54:58
多个表关联查询需要依据多表之间列关系将其连接起来,这种连接方式分为三种: 内连接 (inner join)、 外连接 (outer join)及 交叉连接 (cross join)。 举例: 1、内连接(多个表的交集): 如果依据多个表之间列关系进行内连接,查询结果集仅包括满足连接条件的数据行。内连接分为等值连接、不等值连接以及自然连接,其中等值连接最为常见。 等值连接 :在连接条件中使用等号(=)运算符比较被连接列的列值是否相等,分显式等值连接和隐式等值连接: ① 显式等值连接: inner可加可不加。 ↓ ② 隐式等值连接: ↓ 2、外连接: 外连接分为:左外连接、右外连接。 ① 左外连接 (left join)特点:以left关键字为参照,关键字左边的表为主表,将其数据全部显示,哪怕从表没有数据。 ↓ ② 右外连接 (right join)特点:以right关键字为参照,关键字右边的表为主表,将其数据全部显示,哪怕从表没有数据。 ↓ ③ 全外连接 (full [outer] join)特点:返回的结果集中不仅包含表之间满足on连接条件的全部数据行,还包含左表(“full [outer] join”关键字左边的表)和右表(“full [outer join”关键字右边的表)中不满足on连接条件的数据行。 ↓ 注意:MySQL数据库不支持全外连接! 3、交叉连接: 左表(

连接查询

泪湿孤枕 提交于 2019-11-27 11:33:29
连接查询通常是在两个及两个以上表或视图上进行的。依据连接条件, 连接查询组合两个及两个以上表或视图中的数据,形成结果。 一、内连接查询 内连接查询组合两个或多个表(视图)中的数据,其查询结果含有多个原表中的相关数据。 内连接查询返回满足连接条件的记录行,删除不满足连接条件和匹配列中带有NULL值的记录行。 1.简单的内连接 --(1)相等连接(相等连接使用“=”比较符作为连接条件。)SELECT teacher_id, name, department_name FROM teachers, departments WHERE teachers.department_id = Departments.department_id; SELECT student_id, name, course_id, score FROM students s, students_grade sg WHERE s.student_id = sg.student_id;SELECT course_id, course_name, student_id, score FROM courses c, students_grade sg WHERE c.course_id = sg.curse_id. --(2)不等连接SELECT student_id, score, grade FROM

mysql-内连接,左连接,右连接

雨燕双飞 提交于 2019-11-27 10:05:33
本文转自于: https://blog.csdn.net/plg17/article/details/78758593 用两个表(a_table、b_table),关联字段a_table.a_id和b_table.b_id来演示一下MySQL的内连接、外连接( 左(外)连接、右(外)连接、全(外)连接)。 MySQL版本:Server version: 5.6.31 MySQL Community Server (GPL) 数据库表:a_table、b_table 主题:内连接、左连接(左外连接)、右连接(右外连接)、全连接(全外连接) 前提 建表语句: CREATE TABLE `a_table` ( `a_id` int(11) DEFAULT NULL, `a_name` varchar(10) DEFAULT NULL, `a_part` varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 CREATE TABLE `b_table` ( `b_id` int(11) DEFAULT NULL, `b_name` varchar(10) DEFAULT NULL, `b_part` varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8

【转载】MySQL数据库面试题

落爺英雄遲暮 提交于 2019-11-27 08:41:34
一,对于关系型数据库而言,索引是相当重要的概念,请回答有关索引的几个问题: a)、索引的目的是什么? 快速访问数据表中的特定信息,提高检索速度 创建唯一性索引,保证数据库表中每一行数据的唯一性。 加速表和表之间的连接 使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间 b)、索引对数据库系统的负面影响是什么? 负面影响: 创建索引和维护索引需要耗费时间,这个时间随着数据量的增加而增加;索引需要占用物理空间,不光是表需要占用数据空间,每个索引也需要占用物理空间;当对表进行增、删、改、的时候索引也要动态维护,这样就降低了数据的维护速度。 c)、为数据表建立索引的原则有哪些? 在最频繁使用的、用以缩小查询范围的字段上建立索引。 在频繁使用的、需要排序的字段上建立索引 d)、 什么情况下不宜建立索引? 对于查询中很少涉及的列或者重复值比较多的列,不宜建立索引。 对于一些特殊的数据类型,不宜建立索引,比如文本字段(text)等。 二,简述在MySQL数据库中MyISAM和InnoDB的区别 区别于其他数据库的最重要的特点就是其插件式的表存储引擎。切记:存储引擎是基于表的,而不是数据库。 InnoDB与MyISAM的区别: InnoDB存储引擎: 主要面向OLTP(Online Transaction Processing,在线事务处理)方面的应用

mysql 内连接 左连接 右连接 外连接

拈花ヽ惹草 提交于 2019-11-27 01:08:31
mysql> desc student; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | ID | int(11) | NO | PRI | 0 | | | NAME | varchar(16) | YES | | NULL | | | AGE | int(11) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+ 3 rows in set mysql> desc sc; +-------+---------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+----------------+ | ID | int(11) | NO | PRI | NULL | auto_increment | | SID |

左连接、右连接、交叉连接、全外连接

柔情痞子 提交于 2019-11-26 22:57:20
第一部分、连接查询 一、内连接 内连接查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的列值。内连接分三种: 1 、等值连接:在连接条件中使用等于号 (=) 运算符比较被连接列的列值,其查询结果中列出被连接表中的所有列,包括其中的重复列。 2 、不等连接: 在连接条件使用除等于运算符以外的其它比较运算符比较被连接的列的列值。这些运算符包括 > 、 >= 、 <= 、 < 、 !> 、 !< 和 <> 。 3 、自然连接:在连接条件中使用等于 (=) 运算符比较被连接列的列值,但它使用选择列表指出查询结果集合中所包括的列,并删除连接表中的重复列。 二、外连接 返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表 ( 左外连接时 ) 、右表 ( 右外连接时 ) 或两个边接表 ( 全外连接 ) 中的所有数据行。 三、交叉连接 交叉连接不带 WHERE 子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例, titles 表中有 6 类图书,而 publishers 表中有 8 家出版社,则下列交叉连接检索到的记录数将等于 6*8=48 行。 第二部分、实例说明 实例 Book 表: Student 表: 一、内连接 select * from [Book] as b

Oracle SQL多表查询

回眸只為那壹抹淺笑 提交于 2019-11-26 21:39:22
曾经一段时间我对oracle的多表查询搞的云里雾里,究其原因:oracle自己的语法和SQL国际标准语法混用。此文章仅适合oracle 菜鸟,老鸟直接飞过… 多表连接类型(SQL 1999标准) • Cross joins • Natural joins • USING clause • Full (or two-sided) outer joins • Arbitrary join conditions for outer joins SQL1999语法: SELECT table1.column, table2.column FROM table1 [CROSS JOIN table2] | [NATURAL JOIN table2] | [JOIN table2 USING (column_name)] | [JOIN table2 ON (table1.column_name = table2.column_name)]| [LEFT|RIGHT|FULL OUTER JOIN table2 ON (table1.column_name = table2.column_name)]| [CROSS JOIN table2]; 语法解释: table1.column --指明从中检索数据的表和列 CROSS JOIN --返回两个表的笛卡尔集 NATURAL JOIN -

知识点1

落爺英雄遲暮 提交于 2019-11-26 19:13:34
代码 事物:用户定义的一个数据库操作序列,这些要么全部都不执行,要么全部执行约束:非空 not null 确保值不为空 唯一约束 unique 确保所在字段或字段组合不会出现重复值,但允许出现空值 主键约束 primary key 非空且唯一 外键约束 foreign key 确保两个表或两个字段的关系 检查约束 check 定义在字段上,每条记录都要满足的条件索引作用:加快对表的查询 创建 create index 索引名 on 表 (字段)删除 drop index 索引名 试图 :虚表 相当于子查询 视图的好处: 1.可以限制对数据的访问,让用户通过试图可以看到表中的一部分数据2. 可以使复杂的查询变的简单3. 提供了数据的独立性,用户不用知道数据来源于处4. 提供了对相同数据的不同显示创建视图:create or replace view 视图名 as sql语句删除:drop view 视图名%type 和 %rowtype 表名.列名%type 表名%rowtype pl/sql 中的函数数字函数字符函数类型转换函数日期函数转换:数字函数》字符函数 to_char日期函数》字符函数 to_char字符函数》数字函数 to_number字符函数》日期函数 to_date等值连接非等值连接外连接自连接交叉连接 -- Cross joins自然连接 -- Natural