博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQLServer基础SQL语句学习
阅读量:5967 次
发布时间:2019-06-19

本文共 14112 字,大约阅读时间需要 47 分钟。

---------------------------------------------------------------------------------------------------------

●·● 目录:

A1 ………… 

A2 ………… 
A3 ………… 
A4 ………… 
A5 ………… 
A6 ………… 
A7 ………… 
A8 ………… 
A9 ………… 
G1 ………… 
G2 ………… 
G3 ………… 
G4 ………… 
G5 ………… 
G6 ………… 
G7 ………… 
G8 ………… 
G9 ………… 
U1 ………… 
U2 ………… 
U3 ………… 
U4 ………… 
U5 ………… 
U6 ………… 
U7 ………… 
U8 ………… 

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. SELECT 语句用于从表中选取数据。结果被存储在一个结果表中(称为结果集)。

2. SELECT 语法:

SELECT 列名称 FROM 表名称

  以及

SELECT 列名称1, 列名称2 FROM 表名称

  以及

SELECT * FROM 表名称

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 关键词 DISTINCT 用于返回唯一不同的值。

2. SELECT DISTINCT 语法:

SELECT DISTINCT 列名称 FROM 表名称

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 如需有条件地从表中选取数据,可将 WHERE 子句添加到 SELECT 语句。

2. WHERE 语法:

SELECT 列名称 FROM 表名称 WHERE 列 运算符 值

※ 运算符:=、<>、!=、>、<、>=、<=、BETWEEN、LIKE。

※ 我们在例子中的条件值周围使用的是单引号。

文本值:

这是正确的: SELECT * FROM Persons WHERE FirstName='Bush' 这是错误的: SELECT * FROM Persons WHERE FirstName=Bush

数值:

这是正确的: SELECT * FROM Persons WHERE Year>1965 这是错误的: SELECT * FROM Persons WHERE Year>'1965'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. AND 和 OR 运算符用于基于一个以上的条件对记录进行过滤。

2. AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

3. 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。

4. 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

AND 运算符实例:

SELECT * FROM Persons WHERE FirstName='Thomas' AND LastName='Carter'

OR 运算符实例:

SELECT * FROM Persons WHERE firstname='Thomas' OR lastname='Carter'

结合 AND 和 OR 运算符:

SELECT * FROM Persons WHERE (FirstName='Thomas' OR FirstName='William') AND LastName='Carter'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. ORDER BY 语句用于根据指定的列对结果集进行排序。默认按照升序排序。如果按照降序排序,可以使用 DESC 关键字。

2. ORDER BY 语法:

SELECT 列名称 FROM 表名称 ORDER BY 列名称

  以及

SELECT * FROM 表名称 ORDER BY 列名称1, 列名称2          --先按照 列名称1 来排序,相同的按照 类名称2 来排序!

实例:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC, OrderNumber ASC

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. INSERT INTO 语句用于向表格中插入新的行。

2. INSERT INTO

INSERT INTO 表名称 VALUES (值1, 值2,....)

  我们也可以指定所要插入数据的列:

INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

实例1:

INSERT INTO Persons VALUES ('Gates', 'Bill', 'Xuanwumen 10', 'Beijing')

实例2:

INSERT INTO Persons (LastName, Address) VALUES ('Wilson', 'Champs-Elysees')

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. Update 语句用于修改表中的数据。

2. Update 语法:

UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值

更新某一行中的一个列:

UPDATE Person SET FirstName = 'Fred' WHERE LastName = 'Wilson'

更新某一行中的若干列:

UPDATE Person SET Address = 'Zhongshan 23', City = 'Nanjing' WHERE LastName = 'Wilson'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. DELETE 语句用于删除表中的行。

2. DELETE 语法:

DELETE FROM 表名称 WHERE 列名称 = 值

删除所有行:

  可以在不删除表的情况下删除所有的行。这意味着表的结构、属性和索引都是完整的:

DELETE FROM table_name

  或者:

DELETE * FROM table_name

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

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

2. SQL Server 中的 TOP 语法:

SELECT TOP number|percent column_name(s) FROM table_name

实例:

SELECT TOP 2 * FROM Persons
SELECT TOP 50 PERCENT * FROM Persons

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。

2. LIKE 语法:

SELECT column_name(s) FROM table_name WHERE column_name LIKE pattern

实例一:

SELECT * FROM Persons WHERE City LIKE 'N%'

※ "%" 可用于定义通配符(模式中缺少的字母)。

※ 通过使用 NOT 关键字,可以取反!

※ "_" 仅替代一个字符。

实例二:

SELECT * FROM Persons WHERE City NOT LIKE '%l_on%'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 在搜索数据库中的数据时,SQL 通配符可以替代一个或多个字符。SQL 通配符必须与 LIKE 运算符一起使用。

通配符 描述
% 替代一个或多个字符
_ 仅替代一个字符
[charlist] 字符列中的任何单一字符

[^charlist]

或者

[!charlist]

不在字符列中的任何单一字符

例子一:从上面的 "Persons" 表中选取居住的城市以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[ALN]%'

例子二:从上面的 "Persons" 表中选取居住的城市不以 "A" 或 "L" 或 "N" 开头的人:

SELECT * FROM Persons WHERE City LIKE '[!ALN]%'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. IN 操作符允许我们在 WHERE 子句中规定多个值。

2. IN 语法:

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

实例:

SELECT * FROM Persons WHERE LastName IN ('Adams','Carter')

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 操作符 BETWEEN ... AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

2. BETWEEN 语法:

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

实例一:SQL Server 返回边界及其中间的部分!

SELECT * FROM Persons WHERE LastName BETWEEN 'Adams' AND 'Carter'

实例二:

SELECT * FROM Persons WHERE LastName NOT BETWEEN 'Adams' AND 'Carter'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 通过使用 SQL,可以为列名称和表名称指定别名(Alias)。

2. Alias 语法:

SELECT column_name(s) FROM table_name AS alias_name

  列的语法:

SELECT column_name AS alias_name FROM table_name

实例一:使用别名

SELECT po.OrderID, p.LastName, p.FirstName FROM Persons AS p, Product_Orders AS po WHERE p.LastName='Adams' AND p.FirstName='John'

  不使用别名

SELECT Product_Orders.OrderID, Persons.LastName, Persons.FirstName FROM Persons, Product_Orders WHERE Persons.LastName='Adams' AND Persons.FirstName='John'

实例二:

SELECT LastName AS Family, FirstName AS Name FROM Persons

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. join 用于根据两个或多个表中的列之间的关系,从这些表中查询数据。

  数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。

实例一:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons, Orders WHERE Persons.Id_P = Orders.Id_P

实例二:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P = Orders.Id_P ORDER BY Persons.LastName

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 在表中存在至少一个匹配时,INNER JOIN 关键字返回行。

2. INNER JOIN 语法:

SELECT column_name(s) FROM table_name1 INNER JOIN table_name2 ON table_name1.column_name=table_name2.column_name

实例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons INNER JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行,即使在右表 (table_name2) 中没有匹配的行。

2. LEFT JOIN 语法:

SELECT column_name(s) FROM table_name1 LEFT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

实例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons LEFT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. RIGHT JOIN 关键字会右表 (table_name2) 那里返回所有的行,即使在左表 (table_name1) 中没有匹配的行。

2. RIGHT JOIN 语法:

SELECT column_name(s) FROM table_name1 RIGHT JOIN table_name2 ON table_name1.column_name=table_name2.column_name

实例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons RIGHT JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 只要其中某个表存在匹配,FULL JOIN 关键字就会返回行。

2. FULL JOIN 语法:

SELECT column_name(s) FROM table_name1 FULL JOIN table_name2 ON table_name1.column_name=table_name2.column_name

实例:

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo FROM Persons FULL JOIN Orders ON Persons.Id_P=Orders.Id_P ORDER BY Persons.LastName

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

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

  请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。

2. UNION 语法:

SELECT column_name(s) FROM table_name1 UNION SELECT column_name(s) FROM table_name2

  UNION ALL 语法:

SELECT column_name(s) FROM table_name1 UNION ALL SELECT column_name(s) FROM table_name2

实例一:合并相同的部分

SELECT E_Name FROM Employees_China UNION SELECT E_Name FROM Employees_USA

实例二:显示全部

SELECT E_Name FROM Employees_China UNION ALL SELECT E_Name FROM Employees_USA

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

2. SELECT INTO 语法:把所有的列插入新表:

SELECT * INTO new_table_name [IN externaldatabase] FROM old_tablename

  只把希望的列插入新表:

SELECT column_name(s) INTO new_table_name [IN externaldatabase] FROM old_tablename

实例一:

SELECT * INTO Persons_backup FROM Persons

实例二:

SELECT LastName,Firstname INTO Persons_backup FROM Persons WHERE City='Beijing'

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. CREATE DATABASE 用于创建数据库。

2. CREATE DATABASE 语法:

CREATE DATABASE database_name

实例:

CREATE DATABASE my_db

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. CREATE TABLE 语句用于创建数据库中的表。

2. CREATE TABLE 语法:

CREATE TABLE 表名称 ( 列名称1 数据类型, 列名称2 数据类型, 列名称3 数据类型, .... )

实例一:字符类型:

CREATE TABLE Persons ( Id_P int, LastName varchar(255), FirstName varchar(255), Address varchar(255), City varchar(255) )

实例二:NOT NULL:

CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

实例三:UNIQUE:

CREATE TABLE Persons ( Id_P int NOT NULL UNIQUE, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

实例四:PRIMARY KEY:

CREATE TABLE Persons ( Id_P int NOT NULL PRIMARY KEY, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

实例五:FOREIGN KEY:

CREATE TABLE Orders ( O_Id int NOT NULL PRIMARY KEY, OrderNo int NOT NULL, Id_P int FOREIGN KEY REFERENCES Persons(Id_P) )

实例六:CHECK:

CREATE TABLE Persons ( Id_P int NOT NULL CHECK (Id_P>0), LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) )

实例七:DEFAULT:

CREATE TABLE Persons ( Id_P int NOT NULL, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255), City varchar(255) DEFAULT 'Sandnes' )

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. CREATE INDEX 语句用于在表中创建索引。在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

2. CREATE INDEX 语法:

CREATE INDEX index_name ON table_name (column_name)

实例一:

CREATE INDEX PersonIndex ON Person (LastName)

实例二:降序:

CREATE INDEX PersonIndex ON Person (LastName DESC)

实例三:多个列:

CREATE INDEX PersonIndex ON Person (LastName, FirstName)

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

1. 通过使用 DROP 语句,可以轻松地删除索引、表和数据库。

2. DROP INDEX 语法:

DROP INDEX table_name.index_name

  DROP TABLE 语法:

DROP TABLE 表名称

  DROP DATABASE 语法:

DROP DATABASE 数据库名称

  如果我们仅仅需要除去表内的数据,但并不删除表本身,那么我们该如何做呢?

请使用 TRUNCATE TABLE 命令(仅仅删除表格中的数据):

TRUNCATE TABLE 表名称

--------------------------------------------------------------------------------------------------------------

            ╔════════╗

╠════╣        ╠══════════════════════════════════════════════════╣
            ╚════════╝

●·● :

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

2. ALTER TABLE 语法:添加列:

ALTER TABLE table_name ADD column_name datatype

  删除列:

ALTER TABLE table_name DROP COLUMN column_name

作者:  
出处:  
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接,谢谢!

转载于:https://www.cnblogs.com/khfang/p/5778785.html

你可能感兴趣的文章
2015年第6届蓝桥杯Java B组省赛试题解析
查看>>
一个有味道的函数
查看>>
zookeeper在linux环境安装
查看>>
Python_异常和模块
查看>>
【386天】跃迁之路——程序员高效学习方法论探索系列(实验阶段143-2018.02.26)...
查看>>
Java数据类型分类
查看>>
springboot应用启动原理(一) 将启动脚本嵌入jar
查看>>
SpringMVC架构
查看>>
JAVA团队开发手册 - 2.代码管理
查看>>
超详细步骤 | 如何用小程序 SDK 实现电商评价模
查看>>
Android 类库
查看>>
vue和iview应用中的一些问题(持续更新)
查看>>
基于 Workman 实现Web扫描登录
查看>>
karma如何与测试框架合作2之webpack
查看>>
关于VSCode更新对于emmet2.0支持的配置更改问题。
查看>>
二叉树的遍历
查看>>
三元组相加获得target
查看>>
10分钟搭建MySQL Binlog分析+可视化方案
查看>>
vmware虚拟机配置串口
查看>>
小型自动化运维--expect脚本之传递函数
查看>>