mysql学习之内、外连接语句

名词:

内连接:自然连接,只有两个相匹配的行才能在结果集中显示

外连接:左外连接、右连接、全外连接

内连接,只显示满足where后条件的列  select   a.*,b.*   from   a   inner   join   b     on   a.id=b.parent_id

左外连接,select   a.*,b.*   from   a   left   join   b     on   a.id=b.parent_id     左列为主,右表为副表。

右外连接, select   a.*,b.*   from   a   right   join   b     on   a.id=b.parent_id      左列为副表,右表为主表

全外连接,select   a.*,b.*   from   a   full   join   b     on   a.id=b.parent_id  返回左表和右表的全部值 ,当某表在一另外一表无匹配值 ,则为空

注意:mysql不支持Full join,

实践操作:1、内连接  SELECT  student.name,teacher.high FROM student INNER JOIN teacher ON student.id=teacher.id;

2、左外连接  SELECT  student.name,teacher.high FROM student LEFT JOIN teacher ON student.id=teacher.id;

3、右外连接  SELECT  student.name,teacher.high FROM student RIGHT JOIN teacher ON student.id=teacher.id;

操作过程中碰到的问题:出现1066号错误 ,刚开始为是不能显示相同的列,实际是语句中缺少 on

时间: 2024-12-17 04:21:09

mysql学习之内、外连接语句的相关文章

mysql学习之三:sql语句学习

SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统.SQL 语句用于取回和更新数据库中的数据.SQL 可与数据库程序协同工作,比如MySQL. MS Access.DB2.Informix.MS SQL Server.Oracle.Sybase 以及其他数据库系统. 不幸地是,存在着很多不同版本的 SQL 语言,但是为了与 ANSI 标准相兼容,它们必须以相似的方式共同地来支持一些主要的关键词(比如 SELECT.UPDATE.DELETE.INSERT.WHERE 等等).

mysql学习之四:sql语句学习2

创建数据库: CREATE DATABASE stefan; 删除数据库: DROP DATABASE stefan; 重命名数据库: 重命名数据库没有直接的办法. 已经不再使用的方法: RENAME DATABASE stefan TO LCDB; 创建表格语法: CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )   查看一个表格结构: DESCRIBE Persons;     ALTER TABLE 语句用于在已有的表中添

mysql学习之五:sql语句学习3

好吧,大家觉得这种字体还是比较好看,所有我们就换这种字体了. INSERT INTO 语句用于向表格中插入新的行. 语法 INSERT INTO 表名称 VALUES (值1, 值2,....) 我们也可以指定所要插入数据的列: INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....) Update 语句用于修改表中的数据. 语法: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值 DELETE 语句用于删除表中

oracle多表查询之内连接,外连接语句总结

后期会补充建表语句. 现有两张表,westemp员工表,有(wtdempid,wtdempname,wtddeptid)列,westdept部门表,有(wtddeptid,wtddeptname,wtddeptaddress)列.其中westemp.wtddeptid可以等于westdept.wtddeptid. 1.交叉连接:(用于产生笛卡尔积)(两种写法) 1.1  select * from westemp a cross   join westdept b--交叉连接,用于生成笛卡尔积1

mysql学习笔记之连接查询与子查询

mysql连接查询与子查询 1.子查询是指在另一个查询语句中的SELECT子句. 例句: SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2); 其中,SELECT * FROM t1 ...称为Outer Query[外查询](或者Outer Statement), SELECT column1 FROM t2 称为Sub Query[子查询]. 所以,我们说子查询是嵌套在外查询内部.而事实上它有可能在子查询内部再嵌套子查询. 子查

MySQL 关联查询  外连接 { LEFT| RIGHT } JOIN

左外连接: (以左表为基准)两张表做连接的时候,在连接条件不匹配的时候留下左表中的数据,而右表中的数据以NULL填充例:使用左连接把学生的数据全取出来,该学生没有学院信息的用NULL填充 mysql>  select * from  student  left join  department         ->  on dept_id= d_id; 右外连接: (以右表为基准)对两张表做连接的时候,在连接条件不匹配的时候留下右表中的数据,而左表中的数据以NULL填充例:使用右外连接,把没有

MySQL的左外连接

代码: select t1.descid, IFNULL(t2.cnt,0) as countnew, t1.description from uosdesc t1 left outer join t2 on t1.descid=t2.descid order by countnew desc 说明: 左外连接,左表t1为主表,右表t2为从表. on后为条件,主表和从表做连接,若从表数据不存在则以NULL填充结果集. IFNULL判断结果集中字段,若为NULL则以第二个参数0替代之.

mysql sql99语法 外连接

外连接:内连接结果+主表中有而从表没有的结果左外连接:left join 左边的是主表右外连接:right join 右边的是主表 #案例:查询男朋友不在男神表的女神名#左连接 SELECT b.name FROM beauty b LEFT OUTER JOIN boys bo ON b.boyfriend_id=bo.id WHERE bo.`id` IS NULL; #右连接 SELECT b.name FROM boys bo RIGHT OUTER JOIN beauty b ON b

MySQL学习(三)——Java连接MySQL数据库

1.什么是JDBC? JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库.原来我们操作数据库是在控制台使用SQL语句来操作数据库,JDBC是用Java语言向数据库发送SQL语句. 2.JDBC原理 SUN提供访问数据库规范称为JDBC,而生产厂商提供的实现类称为驱动. JDBC是接口,而JDBC驱动才是接口的实现,没有驱动无法完成数据库连接! 每个数据库厂商都有自己的驱动,用来连接自己公司的数据库. 3.JDBC开发步骤