SQL高级2(join的使用,union,创建数据库和创建表)

/*从多个表中获取结果,使用join, INNER JOIN(内连接)
JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行
INNER JOIN 关键字返回行。

注释:INNER JOIN 与 JOIN 是相同的。
*/

-- join
SELECT  vault_user.id, vault_user.mobile,vault_user_account.total_money,vault_user_account.last_time FROM vault_user  join vault_user_account on vault_user.id=vault_user_account.user_id order by vault_user.id

-- inner join
-- 从两个表vault_user和vault_user_account 获取数据,从第一个表获取id,mobile,从第二个表获取total_money,last_time 通过两个表的主键id和user_id把两个表联系起来
SELECT  vault_user.id, vault_user.mobile,vault_user_account.total_money,vault_user_account.last_time FROM vault_user inner join vault_user_account on vault_user.id=vault_user_account.user_id order by vault_user.id 

-- left join 
-- LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。
SELECT  vault_user.id, vault_user.mobile,vault_user_account.total_money,vault_user_account.last_time FROM vault_user left join vault_user_account on vault_user.id=vault_user_account.user_id order by vault_user.id 

-- right join 
-- RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。
SELECT  vault_user.id, vault_user.mobile,vault_user_account.total_money,vault_user_account.last_time FROM vault_user right join vault_user_account on vault_user.id=vault_user_account.user_id order by vault_user.id 

-- full join 
-- 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。
SELECT  vault_user.id, vault_user.mobile,vault_user_account.total_money,vault_user_account.last_time FROM vault_user full join vault_user_account on vault_user.id=vault_user_account.user_id order by vault_user.id 

/*union 操作符用于合并两个或多个select语句的结果集 
默认union操作符选取不同的值,如果允许重复的值,请使用union all
注释:union 内部的select语句必须拥有相同的数量列.列也必须拥有相似的数据类型.同时,每条select语句中的列顺序必须相同*/
-- 格式 UNION 语法
SELECT column_name(s) FROM table_name1  UNION   SELECT column_name(s) FROM table_name2
-- 格式 UNION ALL 语法
SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2
-- 注释 UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

/*SQL SELECT INTO 语句可用于创建表的备份复件*/
-- SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。常用于创建表的备份复件或者用于对记录进行存档。
-- 所有的列插入新表 格式:
SELECT *INTO new_table_name [IN externaldatabase]  FROM old_tablename
-- 部分列插入新表  格式:
SELECT column_name(s) INTO new_table_name [IN externaldatabase]  FROM old_tablename

/*CREATE DATABASE  创建数据库*/
-- 格式 
CREATE DATABASE database_name

/*CREATE TABLE 创建数据库中的表*/
-- 格式
CREATE TABLE 表名称
(列名称1  数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)
/* 注释:
integer(size)   int(size)   smallint(size)  tinyint(size)   仅容纳整数。在括号内规定数字的最大位数。
decimal(size,d)  numeric(size,d)   容纳带有小数的数字。
"size"           规定数字的最大位数。"d" 规定小数点右侧的最大位数。
char(size)         容纳固定长度的字符串(可容纳字母、数字以及特殊字符)。在括号中规定字符串的长度。
varchar(size)     容纳可变长度的字符串(可容纳字母、数字以及特殊的字符)。在括号中规定字符串的最大长度。
date(yyyymmdd)     容纳日期。
*/

 

posted @ 2017-08-15 13:44  零度咖啡  阅读(979)  评论(0)    收藏  举报