---------------------------------------------------------------------------------------------------------
●·● 目录:
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 INTOINSERT 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] | 不在字符列中的任何单一字符 |
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