SQL 对大小写不敏感!
DML(数据操作语言)部分:
-
select
- 从数据表中获取数据 -
update
- 更新数据表中的数据 -
delete
- 从数据表中删除数据 -
inster into
- 向数据库表中插入数据
DDL(数据定义语言)语句:
-
create database
- 创建新数据库 -
alter database
- 修改数据库 -
create table
- 创建新表 -
alter table
- 变更(改变)数据库表 -
drop table
- 删除表 -
create index
- 创建索引(搜索键) -
drop index
- 删除索引
sql select语句
-
select
语句用于从表中选取数据
结果被存储在一个结果表中(称为结果集) -
sql select
语法1.select列名称 from表名称。
2.sql语句对大小写不敏感,SELECT等效于select
。 -
选取
Persons
表中LastName
列的数据
select LastName from persons
-
从
Persons
表中选取所有的列
SELECT * FROM Persons
-
Tips:星号(*)是选取所有列的快捷方式
sql select distinct语句
关键字distinct
用于返回唯一不同的值。
表:Orders
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
在表中可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct
)的值。
- 语法:
select distinct列名称 from 表名称
- 从
Company
列中选取所有的值
select Company From Orders
结果:
Company |
---|
IBM |
W3School |
Apple |
W3School |
-
Tips:
W3School
被列出了2次。 -
使用
select distinct
语句
select distinct Company from Orders
结果:
Company |
---|
IBM |
W3School |
Apple |
- Tips:现在在结果中,
W3School
仅被列出了1次。
sql where 子句
表Customer
CustomerID | CustomerName | ContactName | Address | City | PostalCode | Country |
---|---|---|---|---|---|---|
1 | Alfreds Futterkiste | Maria Anders | Obere Str. 57 | Berlin | 12209 | Germany |
2 | Ana Trujillo Emparedados y helados | Ana Trujillo | Avda. de la Constitución 2222 | México D.F. | 05021 | Mexico |
3 | Antonio Moreno Taquería | Antonio Moreno | Mataderos 2312 | México D.F. | 05023 | Mexico |
4 | Around the Horn | Thomas Hardy | 120 Hanover Sq. | London | WA1 1DP | UK |
5 | Berglunds snabbköp | Christina Berglund | Berguvsvägen 8 | Luleå | S-958 22 | Sweden |
-
WHERE
子句用于过滤记录。 -
SQL WHERE
语法
SELECT column_name,column_name FROM table_name WHERE column_name operator value;
-
从
Customers
表中选取国家为Mexico
的所有客户。
SELECT * FROM Customers WHERE Country ='Mexico'
-
文本字段vs.数值字段
SQL
使用单引号来环绕文本值,如果是数值字段,请不要使用引号。
从Customers
表中选取CustomerID 大于1
的客户
select * from Customers where CustomerID>1:
- *数值: *
正确:SELECT * FROM Customers WHERE CustomerID>1;
错误:SELECT * FROM Customers WHERE CustomerID>'1';
- *数值: *
-
文本:
正确:SELECT * FROM Customers WHERE Country ='Mexico'
错误:SELECT * FROM Customers WHERE Country =Mexico
-
where 子句中的运算符
运算符 | 描述 |
---|---|
= | 等于 |
<> | 不等于 |
> | 大于 |
< | 小于 |
>= | 大于等于 |
<= | 小于等于 |
BETWEEN | 在某个范围内 |
LIKE | 搜素某种模式 |
IN | 指定针对某个列的多个可能值 |
sql and & or运算符
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Adams | John | Oxford Street | London |
Bush | George | Fifth Avenue | New York |
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
-
and
&or
运算符用于基于一个以上的条件对记录进行过滤。 - 如果第一个条件和第二个条件都成立,则
and
运算符显示一条记录。 - 如果第一个条件和第二个条件只要有一个成立,则
or
运算符显示一条记录。 - 使用
and
来显示所有姓为"Carter"
并且名为"Thomas"
的人:
select * from Persons where FirstName='Thomas' and LastName='Carter';
- 结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
-
使用
or
来显示所有姓为"Carter"
或者名为"Thomas"
的人:
select * from Persons where FirstName='Thomas' or LastName='Carter'
-
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
- 我们也可以把
and
和or
结合起来(使用圆括号来组成复杂的表达式):
显示姓为"Carter"
并且名为"Thomas"
或名为"William"
的人
select* from Persons where (FirstName='Thomas' or FirstName='William') and LastName='Carter'
- 结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Carter | William | Xuanwumen 10 | Beijing |
sql order by子句
表:Orders
Company | OrderNumber |
---|---|
IBM | 3532 |
W3School | 2356 |
Apple | 4698 |
W3School | 6953 |
-
order by
语句用于根据指定的列对结果集进行排序。 -
order by
语句默认按照升序对记录进行排序。 -
如果希望按照降序对记录进行排序,可以使用
desc
关键字。 -
以字母顺序显示公司名称:
select Company ,OrderNumber from Orders order by Company
-
结果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 6953 |
W3School | 2356 |
-
以字母顺序显示公司名称(
Company
),并以数字顺序显示顺序号(OrderNumber
);
select Company,OrderNumber from Orders order by Company,OrderNumber
-
结果:
Company | OrderNumber |
---|---|
Apple | 4698 |
IBM | 3532 |
W3School | 2356 |
W3School | 6953 |
-
以逆字母顺序显示公司名称,并以数字顺序显示顺序号;
select Company,OrderNumber from Orders order by Company desc,OrderNumber asc
-
desc
降序,asc
升序,排序的时候先满足第一个条件(Company desc
)公司名称按倒序,再满足第二个条件(OrderNumber asc
)订单号按升序。
结果:
Company | OrderNumber |
---|---|
W3School | 2356 |
W3School | 6953 |
IBM | 3532 |
Apple | 4698 |
insert into 语句
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
-
insert into
语句用于向表格中插入新的行。 - 语法:
INSERT INTO table_name VALUES (value1,value2,......)
- 我们也可以指定所要插入数据的列。
INSERT INTO table_name (row1,row2,...) VALUES (value1,value2,...)
- 向
Persons
表中插入一行数据。
INSERT INTO Persons VALUES('Gates','Bill','Xuanwume 10','Beijing')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
- 向
Persons
表中插入指定的列。
INSERT INTO Persons (LastName,Address) VALUES('Wilson','Champs-Elysees')
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | 空白(没有值) | Champs-Elysees | 空白(没有值) |
sql update 语句
表Persons
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | 空白(没有值) | Champs-Elysees | 空白(没有值) |
-
update
语句用于修改表中的数据。 -
语法:
update table_name set row1 = newValue where row2 = value
- 为满足row2=value的数据设置row1=newValue
-
更新某一行中的一个列,为
LastName
为"Wilson"
的人添加FirstName
update Persons set FirstName='Fred' where LastName='Wilson'
-
结果:
LastName | FirstName | Address | City |
---|---|---|---|
Carter | Thomas | Changan Street | Beijing |
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | Fred | Champs-Elysees | 空白(没有值) |
sql delete语句
Persons表
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwume 10 | Beijing |
Wilson | Fred | Zhongshan 23 | Nanjing |
-
delete
语句用于删除表中的行 - 语法:
delete from table_name where row=value
- 删除某行
"Fred Wilson"
会被删除。
DELETE FROM Person WHERE LastName = 'Wilson'
- 结果:
LastName | FirstName | Address | City |
---|---|---|---|
Gates | Bill | Xuanwume 10 | Beijing |
- 删除所有行,可以在不删除表的情况下删除所有的行。这意味着表的结构,熟悉和索引都是完整的。
DELETE FROM table_name
或者
DELETE *FROM table_name
sql top语句
-
top
子句用于规定要返回的记录的数目。 -
对于拥有数千条记录的大型表来说,
top
子句是非常有用的。
注释:并非所有的数据库系统都支持top
子句。 -
sql server
的语法:
select top number|percent column_name(s) from table_name
-
MySQL
和Oracle
中的SQL SELECT TOP
是等价的-
MySQL
语法
SELECT cloumn_name(s) FROM table_name LIMIT number
- 例子:
SELECT column_name(s) FROM table_name LIMIT number
-
Oracle
语法
SELECT column_name(s) FROM table_name WHERE ROWNUM < number
- 例子
SELECT * FROM Persons WHERE ROWNUM <= 5
-
-
原始的Persons表:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
3 | Carter | Thomas | Changan Street | Beijing |
4 | Obama | Barack | Pennsylvania Avenue | Washington |
-
SQL TOP
实例- 现在,我们希望从上面的
"Persons"
表中选取头两条记录。
我们可以使用下面的select
语句:
SELECT TOP 2 * FROM Persons
- 现在,我们希望从上面的
- 结果:
Id | LastName | FirstName | Address | City |
---|---|---|---|---|
1 | Adams | John | Oxford Street | London |
2 | Bush | George | Fifth Avenue | New York |
网友评论