美文网首页
数据库3|SQL语法知识(2):表的连接、创建、复制

数据库3|SQL语法知识(2):表的连接、创建、复制

作者: 是蓝先生 | 来源:发表于2016-05-07 11:29 被阅读128次

今天是5.7号。

主要介绍表的连接、创建、复制等操作sql语言中对大小写是不敏感的。


在SQL语言中join 用于把来自两个或多个表的行结合起来,先了解几种不同的连接的区别。

1.png

在介绍之前先说:

自然连接

自然连接 :即where等值连接,自然连接的一个特点是连接后的结果表中匹配的列只有一个,其他数据均再整合到一行。

     eg:SELECT  SNAME, S.DNAME, S.CNO, TNAME FROM  STUDENT AS S, TEACHER AS T
     WHERE  S.CNO = T.CNO ORDER BY SNAME

(1).inner join
关键字在表中存在至少一行数据完全匹配时返回行,即返回表1和表2中相交的记录行。

SELECT column_name(s)
FROM table1JOIN table2
ON table1.column_name=table2.column_name;
2.png

(2).left join
返回左表(table1)所有的行,右表中所有数据对应横向放在table1表后面,若table1中数据行较多,那么对于table2中的字段若在table1中不存在对应数据行,则用 NULL来填充。

SELECT column_name(s) 
FROM table1
LEFT OUTER JOIN table2
ON table1.column_name=table2.column_name;
3.png

(3).right join
返回右表(table2)所有的行,右表中所有数据对应横向放在table1表后面,若table2中数据行较多,那么对于table1中的字段若在table2中不存在对应的数据行,则用 NULL来填充。

SELECT column_name(s) 
FROM table1
RIGHT OUTER JOIN table2
ON table1.column_name=table2.column_name;
4.png

(4).full join
只要左表(table1)和右表(table2)中有一个 关键字存在匹配,则返回两个表的所有行,没有匹配的地方自动用NULL填充。

SELECT column_name(s) 
FROM table1
FULL OUTER JOIN table2
ON table1.column_name=table2.column_name;
5.png

(5).union(联合)
SQL 中UNION 操作符用于合并两个或多个 SELECT 语句的结果。每个 SELECT 语句必须拥有相同数量的列,列也必须拥有相似的数据类型,且各个列的次序相同。

从 "Customers" 和 "Suppliers" 表中选取所有不同的城市(只有不同的值):

SELECT City FROM Customers
UNION
SELECT City FROM Suppliers
ORDER BY City;
#如果一些客户和供应商来自同一个城市,每个城市只会列出一次。UNION 只会选取不同的值,若要使重复的值也选出来,则应将UNION换为UNION ALL。

**
**
(6).select into(复制表)
SELECT INTO 语句用于从一个表复制数据,然后把数据插入到另一个新表中。但是在pysql中会报错找不到变量city1,所以换为:insert into select语句。

cur.execute( 
   '''insert into city1
      select *
      from city''')
#上面是在city1表已经创建好的情况下进行的,如果想要在没有创建表的情况下,同时复制
city表中的值可以如下:
cur.execute(
    ''' Create table city3
    (    
   Select *
   from city)
    ''')

(7).create/drop database(创建和删除数据库)

创建一个名为 "my_db" 的数据库:
CREATE DATABASE my_db;
创建一个名为 "my_db" 的数据库:    
DROP DATABASE my_db;

(8).CREATE/drop TABLE (创建和删除表)

创建表Persons
CREATE TABLE Persons
(PersonID int,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
);
数据类型一般有: varchar、integer、decimal、date、BOOLEAN 等等

删除表Persons
DROP TABLE Persons

在创建表时经常会有很多约束要指明,具体如下:

6.png

(9).CREATE/drop index (创建和删除索引)
索引即类似字典数据中的索引,同样可以在表中创建索引,以便更加快速高效地查询数据。注意:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。

在 "Persons" 表的 "LastName" 列上创建一个名为 "PIndex" 的索引:
CREATE INDEX PIndex
ON Persons (LastName)

删除表中的索引:(不同的数据库的语法可能不同)
ALTER TABLE table_name DROP INDEX index_name

相关文章

  • 数据库3|SQL语法知识(2):表的连接、创建、复制

    今天是5.7号。 主要介绍表的连接、创建、复制等操作,sql语言中对大小写是不敏感的。 在SQL语言中join 用...

  • 2019-10-31

    oracle数据库用sql倒表 原数据库 1.右键表 2.选择编辑 3.选择DDL 4.选择SQL语句:创建 复制...

  • 基本语句

    1、连接认证基本语法 2、退出 建议方式:使用sql提供的指令 3、创建数据库 基本语法:create datab...

  • mysql常用命令

    1、命令导出sql文件 2、命令导入sql文件 3、修改表 4、创建数据库[]可选项 5、复制表结构

  • 全网最全的数据库操作命令,一口气从头看到尾,蛮有收获的!

    一、基础 1、创建数据库 2、删除数据库 3、备份sql server 4、创建新表 根据已有的表创建新表: 5、...

  • SQL表复制【原创】

    表复制 SQL语法结构:insert into a_table(字段1,字段2,字段3,......)select...

  • SQLite之SQL语句构建

    1、数据库链接(打开数据库)->传统方式创建表 2、构建创建表SQL 3、执行动态SQL(主键,唯一,不能够为空)...

  • Hive中sql的使用

    1、创建表建表语法 创建测试使用的数据库myhive3,使用该数据库。1)、创建普通表 2)、创建外部表EXTER...

  • Hive中sql的使用

    1、创建表建表语法 创建测试使用的数据库myhive3,使用该数据库。1)、创建普通表 2)、创建外部表EXTER...

  • (四)Hive中sql的使用

    1、创建表建表语法 创建测试使用的数据库myhive3,使用该数据库。1)、创建普通表 2)、创建外部表EXTER...

网友评论

      本文标题:数据库3|SQL语法知识(2):表的连接、创建、复制

      本文链接:https://www.haomeiwen.com/subject/sjpjrttx.html