每日一学: sql高级语句(二)

115 阅读2分钟

join 连表查询

join 分为多种类型,就像是集合的交并补集.下面将一一介绍:

  1. join 默认类型 -- inner join

** 如果只使用join 不加其他的描述,就是inner join**

SELECT * FROM SecurityPatrolRecords as table1 INNER JOIN SecurityPatrolRecordItems as table2
ON table1.id = table2.RecordId where table1.State = 1

通过inner join 是取两者的交集ABA∩B. 即两者共有的那一份.

  1. LEFT JOIN (左 join)

即将左表全部返回行,右边如果能配上就返回值,配不上就返回null

SELECT * FROM SecurityPatrolRecords as table1 INNER JOIN SecurityPatrolRecordItems as table2
ON table1.id = table2.RecordId where table1.State = 1
  1. RIGHT JOIN (右 join)

即将右表全部返回行,左边如果能配上就返回值,配不上就返回null,和上面的左join几乎一样

  1. FULL OUTER JOIN 全部连接 FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.匹配的返回可以连接的值,不匹配的按单表展示,其余地方返回null 还是比较好理解的.

连接查询出来的数据 UNION

UNION合并时,需要保证列的数量相同,以及列的数据结构相似.比如都是字符串类型,就可以合并,不同的长度类型是没有关系的 UNION 和 UNION ALL: UNION 连接后的查询表 是去重后的, 而 UNION ALL 连接的查询表 是未去重的.

UNION 连接时会将表中的重复数据都给去掉,包括原本单表中的重复数据 如果有多个字段,有的重复,有的不重复. 就一不重复为准. 只要查出的行还有不一样的,就会去掉

创建数据库

创建名字为my_dbxxx的数据库

CREATE DATABASE my_dbxxx;

创建数据表

创建一个数据表table_namexxx,并同时初始化表的项,用()包裹,然后是列名,后接一个空格 然后再跟上一个数据类型

CREATE TABLE table_namexxx  
(  
column_name1 data_type(*size*),  
column_name2 data_type(*size*),  
column_name3 data_type(*size*),  
....  
);

给表中数据添加约束条件

有了数据类型后,还需要对数据做判断是否可空,是都唯一等其他判断. 直接添加在建表的类型后面即可.

CREATE TABLE Persons ( 
ID int NOT NULL,
LastName varchar(255) , 
FirstName varchar(255) , 
Age int );

后面还有一些,约束条件,以及表的修改,关于已经建完的表,怎么修改约束,表间怎么操作.