SQL 学习笔记

2020-04-24  本文已影响0人  LT_9999

SQL 语句使用 UNION A#L从 "Websites" 和 "apps"

SQL UNION 操作符

UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的每个 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每个 SELECT 语句中的列的顺序必须相同。
表中选取所有的country(也有重复的值):

SELECT country FROM Websites
UNION ALL
SELECT country FROM apps
ORDER BY country;
SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

SQL SELECT INTO 语句

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

SQL SELECT INTO 语法

SELECT *
INTO newtable [IN externaldb]
FROM table1;

或者只复制希望的列插入到新表中:

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

SQL SELECT INTO 实例

SELECT *
INTO WebsitesBackup2016
FROM Websites;
SELECT name, url
INTO WebsitesBackup2016
FROM Websites;
SELECT *
INTO WebsitesBackup2016
FROM Websites
WHERE country='CN';
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 INTO

SELECT *
INTO newtable
FROM table1
WHERE 1=0;

SQL 通配符 的使用

[ 实例 ]
SQL 语句选取 name 不以 A 到 H 字母开头的网站:

SELECT * FROM Websites
WHERE name REGEXP '^[A-H]';

使用 SQL % 通配符

下面的 SQL 语句选取 url 以字母 "https" 开始的所有网站:

SELECT * FROM Websites
WHERE url LIKE 'https%';

SQL 正则表达式

查找name字段中以'st'为开头的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';

查找name字段中以'ok'为结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';

查找name字段中包含'mar'字符串的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';

查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据:

mysql> SELECT name FROM person_tbl WHERE name REGEXP '^[aeiou]|ok$';

INSERT IGNORE INTO 与 INSERT INTO 的区别就是 INSERT IGNORE 会忽略数据库中已经存在的数据,如果数据库没有数据,就插入新的数据,如果有数据的话就跳过这条数据。这样就可以保留数据库中已经存在数据,达到在间隙中插入数据的目的。

以下实例使用了 INSERT IGNORE INTO,执行后不会出错,也不会向数据表中插入重复数据:

mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 1 row affected (0.00 sec)
mysql> INSERT IGNORE INTO person_tbl (last_name, first_name)
    -> VALUES( 'Jay', 'Thomas');
Query OK, 0 rows affected (0.00 sec)

不同类型的SQL联接

通配符的使用

WHERE SALARY LIKE '200%' 找出任何以 200 开头的值。
WHERE SALARY LIKE '%200%' 找出任何存在 200 的值。
WHERE SALARY LIKE '00%' 找出任何第二个位置和第三个位置为 0 的值。
WHERE SALARY LIKE '2
%_%' 找出任何以 2 开始,并且长度至少为 3 的值。
WHERE SALARY LIKE '%2' 找出任何以 2 结尾的值。
WHERE SALARY LIKE '_2%3' 找出任何第二个位置为 2,并且以 3 结束的值。
WHERE SALARY LIKE '2___3' 找出任何以 2 开始,以 3 结束的五位数。

函数

SQL Aggregate 函数计算从列中取得的值,返回一个单一的值。

有用的 Aggregate 函数:

SQL Scalar 函数

SQL Scalar 函数基于输入值,返回一个单一的值。

有用的 Scalar 函数:

SQL 日期函数

名称 描述

上一篇 下一篇

猜你喜欢

热点阅读