SQL 进阶知识点

上一篇文章简要介绍了SQL最常用的四种语句,下面将学习一些常用的语句,让检索更加准确和方便。

1.返回top n 语句

在数据量比较大的时候,返回所有数据是非常消耗资源的,这时候往往只要求排名前几名的数据,就要用到 SELECT TOP

SELECT TOP number|percent column_name(s)
FROM table_name
WHERE condition;   (access/sql server)

这里可以根据需要将number 改为相应的数字,也可以指定 百分比
同样的功能在Mysql

SELECT column_name(s)
FROM table_name
WHERE condition
LIMIT number;

2. 使用通配符过滤

类似于Python中的正则表达式,有时候需要返回具有一定特征的数据 用到通配符过滤法。
这里主要有三个
% 百分号 表示若干个任意字符(在access 中用 *)
_ 下划线 表示一个任意字符(在access中用 ?)
[ ] 方括号里面放字符集,代表匹配指定字符的任意一个,(只支持access 和 和 sql server)
[^ ] 这个是 上面的否定形式

使用时通配符 配合 LIKE 语句放在WHERE 中
举个例子:

SELECT * FROM Customers 
WHERE City LIKE 'ber%';     查询客户CITY 以‘ber’开头的数据
SELECT * FROM Customers 
WHERE City LIKE '_erlin';   
查询city 以任意字符开头然后接‘erlin’的数据

3.JOIN 联结

当需要在一张表中展现来自不同表的数据时候,需要用到联结
常用的联结主要有以下几种

  1. 自联结
  2. 内联结
  3. 外链接

首先说自联结,也就是对自己和自己联结,这时候需要对引用的表进行两次别名命名

SELECT column_name(s)
FROM table1 T1, table1 T2
WHERE condition;

加入有一张本公司员工信息表,当需要查询张三所在部门的所有员工就需要用到自联结。

内连接,使用率最高的联结,返回两个表中都匹配的数据(交集)

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

外链接,分为左外联结,右外连接和全联结
左外联结 LEFT OUTER JOIN 返回左边表格的全部行,即使在右边没有匹配右外连接 RIGHT OUTER JOIN 返回右边表格的全部行,即使在左边没有匹配
全联结 FULL OUTER JOIN 返回所有行,注意可能返回非常大的数据

4、UNION 运算符

用于组合两个或者多个 SELECT 语句的结果集

SELECT column_name(s) FROM table1
UNION
SELECT column_name(s) FROM table2;

默认情况下 会自动覆盖重复的搜索值,如果需要保留可以使用UNION ALL

5、复制数据

SELECT INTO 用于将一个表中的数据复制后放到一个新表中去,注意这里的新表之前是不存在,在这里语句自动创建

SELECT *

INTO newtable [IN externaldb]

FROM table1;

INSERT INTO SELECT 用于将一个表中的数据插入到另一个表中,这个表示已经存在的

INSERT INTO table2
(column_name(s))

SELECT column_name(s)

FROM table1;

6、创建数据库和表

创建数据库

CREATE DATABASE dbname;

创建新表

CREATE TABLE table_name
(
column_name1 data_type(size),
column_name2 data_type(size),
column_name3 data_type(size),
....
);

这里需要注意的是 data_type 在不同的数据库中使用的关键字是不同的,常见的数据类型有以下五种

  • 日期型 DATETIME
  • 字符型 VARCHAR 不固定长度 和 CHAR 固定长度
  • 文本型 TEXT 没有长度限制可以非常大
  • 数值型 INT 、NUMERIC、INT
  • 逻辑型 BIT 0或者1

7、修改表

ALTER TABLE 用于在表中添加、删除或者修改

ALTER TABLE table_name
ADD column_name datatype   (添加表列)


ALTER TABLE table_name
DROP COLUMN column_name    (删除表列)


ALTER TABLE table_name
ALTER COLUMN column_name datatype  (修改表列数据类型)
 (这是在server和access中的用法,在MYsql 和 oracle 中使用MODIFY COLUMN)

8、创建视图

视图是虚拟的表,它允许你使用来自不同表的数据,但是又不用真正的创建一个表。

CREATE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

更新视图

CREATE OR REPLACE VIEW view_name AS

SELECT column_name(s)

FROM table_name

WHERE condition

撤销视图


DROP VIEW view_name

9、总结
这篇文章进一步说明了一些在查询时候增加准确性和简洁性的语句和应用,但是并没有深入展开,比如其中的数据类型在不同的数据库中使用的关键字有所不同,需要在使用时候自行查询,更多内容在后面补充

你可能感兴趣的:(SQL,sql)