• 认真地记录技术中遇到的坑!

SQL高级语法

mysql 悠悠 2年前 (2017-08-03) 683次浏览 0个评论

ALTER TABLE 语句

ALTER TABLE 语句用于在已有的表中添加、删除或修改列。

# 添加列
ALTER TABLE table_name
ADD column_name datatype

# 删除表中的列
ALTER TABLE table_name
DROP COLUMN column_name

# 改变表中列的数据类型
ALTER TABLE table_name
MODIFY COLUMN column_name datatype

# 修改字段命或者类型(MySQL)
ALTER TABLE table_name CHANGE old_column_name new_column_name datatype;

# 添加 PRIMARY KEY 约束
ALTER TABLE table_name
ADD PRIMARY KEY (primary_key_name)
ALTER TABLE table_name
ADD CONSTRAINT new_column_name PRIMARY KEY (column_name1,column_name2)

# 撤销 PRIMARY KEY 约束
ALTER TABLE table_name
DROP PRIMARY KEY

# 创建 FOREIGN KEY 约束
ALTER TABLE table_name1
ADD CONSTRAINT foreign_key_name
FOREIGN KEY (column_name1)
REFERENCES table_name2(primary_key_name)

# 撤销 FOREIGN KEY 约束
ALTER TABLE table_name
DROP FOREIGN KEY foreign_key_name

# 创建 UNIQUE 约束
ALTER TABLE table_name
ADD UNIQUE (unique_column_name)

# 撤销 UNIQUE 约束
ALTER TABLE Persons
DROP INDEX uc_PersonID

连接(JOIN)

SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
最常见的 JOIN 类型:SQL INNER JOIN(简单的 JOIN)。 SQL INNER JOIN 从多个表中返回满足 JOIN 条件的所有行。

INNER JOIN 关键字

INNER JOIN 关键字在表中存在至少一个匹配时返回行。
SQL高级语法

SELECT column_name(s)
FROM table1
INNER JOIN table2
ON table1.column_name=table2.column_name;

SELECT column_name(s)
FROM table1
JOIN table2
ON table1.column_name=table2.column_name;

LEFT JOIN 关键字

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
SQL高级语法

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

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

RIGHT JOIN 关键字

RIGHT JOIN 关键字从右表(table2)返回所有的行,即使左表(table1)中没有匹配。如果左表中没有匹配,则结果为 NULL。
SQL高级语法

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

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

FULL OUTER JOIN 关键字

FULL OUTER JOIN 关键字只要左表(table1)和右表(table2)其中一个表中存在匹配,则返回行.
FULL OUTER JOIN 关键字结合了 LEFT JOIN 和 RIGHT JOIN 的结果。
SQL高级语法

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

UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。

# 默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

# UNION ALL 语法
SELECT column_name(s) FROM table1
UNION ALL
SELECT column_name(s) FROM table2;

SELECT INTO 语句

SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

SELECT *
INTO newtable [IN externaldb]
FROM table1;

SELECT column_name(s)
INTO newtable [IN externaldb]
FROM table1;

INSERT INTO SELECT 语句

INSERT INTO SELECT 语句从一个表复制数据,然后把数据插入到一个已存在的表中。目标表中任何已存在的行都不会受影响。

# 我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2
SELECT * FROM table1;

# 或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2
(column_name(s))
SELECT column_name(s)
FROM table1;

转载请注明出处 SQL高级语法
喜欢 (0)
发表我的评论
取消评论
表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址