八、连接和多张表的操作

2017-04-19  本文已影响0人  天天阳光好

一、抓取数据创建表的3种方式

1、先create table、再select,最后insert

CREATE TABLE table_name1

(

   id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

   column_name1 VARCHAR(30)

);

INSERT INTO table_name1 (column_name1)

   SELECT column_name2 FROM table_name2

   GROUP BY column_name2

   ORDER BY column_name2;

2、利用select进行create table,然后以alter添加主键

CREATE TABLE table_name1 AS

   SELECT column_name2 FROM table_name2

   GROUP BY column_name2

   ORDER BY column_name2;

ALTER table_name1

ADD COLUMN id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY FIRST,

ADD PRIMARY KEY(id);

3、create table的同时设置主键并利用select填入数据

CREATE TABLE table_name1

(

   id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

   column_name1 VARCHAR(30)

) AS

   SELECT column_name2 FROM table_name2

   GROUP BY column_name2

   ORDER BY column_name2;

关键词 AS

① AS把select的结果值存入table_name1的column_name1中;

② 如果没有创建column_name1,那么AS会自动创建一列,并采用与select查询结果相同的列名和数据类型。

4、别名

① 查询里首次提到原始列名的地方后面接AS并设定别名,例如:

CREATE TABLE table_name1

(

id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,

column_name1 VARCHAR(30)

)AS

SELECT column_name2  AS cn2 FROM table_name2

GROUP BY cn2

ORDER BY cn2;

② 别名会改变查询结果(即查询结果的表)里列名的名称,但是不会改变原始表或列的名称;

③ 创建别名时,AS可以省略。

二、表的连接

1、交叉连接 CROSS JOIN,又名 笛卡尔积、交叉积

① 第一张表的每个值都与第二张表的每个值配对,较少适用

② 可用逗号代替CROSS JOIN,例如:

SELECT table_name1.column_name1,table_name2.column_name2 FROM

table_name1 , table_name2

2、内连接 INNER JOIN

SELECT column_name FROM

table_name1 INNER JOIN table_name2 ON someconditions;

① INNER JOIN 利用条件里的比较运算符结合两张表;

② 比较运算符ON,也可以使用关键字WHERE;

③ 分为相等连接(EQUIJOIN)和不等连接(NON-EQUIJOIN);

④ 自然连接(NATURAL JOIN),在两张表的中各自有一列的列名相同时使用,一般情况下,同一数据库的ID列相同,实质和普通内连接一样;

⑤ 在连接中,各类关键字和函数均可使用。

上一篇下一篇

猜你喜欢

热点阅读