SQL_菜鸟教程_select


基础关键字使用

select

SELECT column_name,column_name FROM table_name;

SELECT * FROM table_name;
## distinct 关键字表示返回唯一不同值
SELECT DISTINCT column_name,column_nameFROM table_name;

where

where 用于筛选过滤

SELECT column_name,column_name FROM table_name WHERE column_name operator value;

and & or

用于过滤,and取交集,or取并集

SELECT * FROM Websites WHERE country='CN' AND alexa > 50;
#and和or 同时使用
SELECT * FROM Websites WHERE alexa > 15 AND (country='CN' OR country='USA');

order by

用于排序
ASC:

SELECT column_name,column_name FROM table_name ORDER BY column_name,column_name ASC|DESC;

order by A ,B desc

注意:
排序优先级,先按照第一个列名排序
默认排序按照升序排列 ASC ,可以不写
order by 多列,可以不同列不同排序方式

insert into

INSERT INTO table_name VALUES (value1,value2,value3,...);

INSERT INTO table_name (column1,column2,column3,...) VALUES (value1,value2,value3,...);

update

update 表名 + set修改内容 + 过滤条件where

UPDATE table_name SET column1=value1,column2=value2,...WHERE some_column=some_value;

delete

DELETE FROM table_name WHERE some_column=some_value;

高级教程_select

TOP 搜索

SELECT TOP 子句用于规定要返回的记录的数目。

#SQL Server / MS Access 语法
SELECT TOP number|percent column_name(s) FROM table_name;
#MySQL语法
SELECT column_name(s) FROM table_name LIMIT number;

like 模式搜索_select-where

用于在 WHERE 子句中搜索列中的指定模式。
取反可以使用 not like。

SELECT column_name(s) FROM table_name
WHERE column_name LIKE pattern;

通配符_select-where-like

% 替代 0 个或多个字符
_ 替代一个字符
[charlist] 字符列中的任何单一字符
[^charlist]或 [!charlist] 不在字符列中的任何单一字符

MySQL 中使用 REGEXP 或 NOT REGEXP 运算符 (或 RLIKE 和 NOT RLIKE) 来操作正则表达式。

#选取 name 以 "G"、"F" 或 "s" 开始的
SELECT * FROM Websites WHERE name REGEXP '^[GFs]';

#选取 name 以 A 到 H 字母开头
SELECT * FROM Websites WHERE name REGEXP '^[A-H]';

#选取 name 不以 A 到 H 字母开头的
SELECT * FROM Websites
WHERE name REGEXP '^[^A-H]';

in 操作符 _select-where

SELECT column_name(s) FROM table_name
WHERE column_name IN (value1,value2,...);

between 操作符_select-where

SELECT column_name(s) FROM table_name
WHERE column_name BETWEEN value1 AND value2;

别名的使用

在查询中涉及超过一个表
在查询中使用了函数
列名称很长或者可读性差
需要把两个列或者多个列结合在一起

#列的别名
SELECT column_name AS alias_name FROM table_name;
#表的别名
SELECT column_name(s) FROM table_name AS alias_name;

实例
在这里插入图片描述
在这里插入图片描述

表的别名

join ***

个人理解:
join关键字的主要作用是选择不同表的字段连接起来展示
主要通过on关键字将不同表联系起来
第一个出现为左表,第二个为右表,按照这个顺序
left join 以左表的关键字为基准,若右表没有匹配到内容则用null填充。right join 一样
inner join ,join 和 full join 效果是差不多的,左表或右表没有匹配内容则填充为null

关键字:join - on
SQL JOIN 子句用于把来自两个或多个表的行结合起来,基于这些表之间的共同字段。
join的7种使用情况
演示数据库
在这里插入图片描述

表名:Websites,access_log
字段:id,name,count,date
两个表相同的字段:id = site_id

在这里插入图片描述

INNER JOIN:如果表中有至少一个匹配,则返回行
LEFT JOIN:即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN:即使左表中没有匹配,也从右表返回所有的行
FULL JOIN:只要其中一个表中存在匹配,则返回行

inner join
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;

inner join 等同于 join
注释:INNER JOIN 关键字在表中存在至少一个匹配时返回行。如果 “Websites” 表中的行在 “access_log” 中没有匹配,则不会列出这些行。

在这里插入图片描述

left join

LEFT JOIN 关键字从左表(table1)返回所有的行,即使右表(table2)中没有匹配。如果右表中没有匹配,则结果为 NULL。
注释:在某些数据库中,LEFT JOIN 称为 LEFT OUTER JOIN。

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。
注释:在某些数据库中,RIGHT JOIN 称为 RIGHT OUTER JOIN。

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 的结果。
如果左表或右表没有数据,则填充null
注释:MySQL中不支持 FULL OUTER JOIN

union**

个人理解:
union合并两个select 语句的结果,上下合并。因此两个select语句选择的列数量相同,数据类型相同
对比join,join语句是左右连接

注释:默认地,UNION 操作符选取不同的值(去重)。如果允许重复的值,请使用 UNION ALL。
注释:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。

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

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

在这里插入图片描述

select into**

通过 SQL,您可以从一个表复制信息到另一个表。
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。
注意:MySQL不支持,但是支持INSERT INTO … SELECT 。

SELECT *
INTO newtable [IN externaldb]
FROM table1;

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

#示例
SELECT Websites.name, access_log.count, access_log.date
INTO WebsitesBackup2016
FROM Websites
LEFT JOIN access_log
ON Websites.id=access_log.site_id;

新表将会使用 SELECT 语句中定义的列名称和类型进行创建。可以使用 AS 子句来应用新名称。

猜你喜欢

转载自blog.csdn.net/persuetAmbition/article/details/115390375