数据库学习笔记(三)

来源:互联网 发布:淘宝 合约机 编辑:程序博客网 时间:2024/06/16 04:32

Group by

用途:

对结果集进行分组,常与汇总函数一起使用。

语法:

SELECT column,SUM(column) FROM table GROUP BY column

例:

“Sales”表中的原始数据:

Company

Amount

W3Schools

5500

IBM

4500

W3Schools

7100

按照Company字段进行分组,求出每个CompanyAmout的合计:

SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company

返回结果

Company

SUM(Amount)

W3Schools

12600

IBM

4500

 

 

7Having

用途:

指定群组或汇总的搜寻条件。

语法:

SELECT column,SUM(column) FROM table
GROUP BY column
HAVING SUM(column) condition value

解释:

HAVING 通常与 GROUP BY 子句同时使用。不使用 GROUP BY 时,HAVING 则与 WHERE 子句功能相似。

例:

 “Sales”表中的原始数据:

Company

Amount

W3Schools

5500

IBM

4500

W3Schools

7100

按照Company字段进行分组,求出每个CompanyAmout的合计在10000以上的数据:

SELECT Company,SUM(Amount) FROM Sales
GROUP BY Company HAVING SUM(Amount)>10000

返回结果

Company

SUM(Amount)

W3Schools

12600

 

 

Join

用途:

当你要从两个或者以上的表中选取结果集时,你就会用到JOIN

例:

“Employees”表中的数据如下,(其中ID为主键):

ID

Name

01

Hansen, Ola

02

Svendson, Tove

03

Svendson, Stephen

04

Pettersen, Kari

“Orders”表中的数据如下:

ID

Product

01

Printer

03

Table

03

Chair

EmployeesIDOrdersID相关联选取数据:

SELECT Employees.Name, Orders.Product
FROM Employees, Orders
WHERE Employees.ID = Orders.ID

返回结果:

Name

Product

Hansen, Ola

Printer

Svendson, Stephen

Table

Svendson, Stephen

Chair

或者你也可以用JOIN关键字来完成上面的操作:

SELECT Employees.Name, Orders.Product
FROM Employees
INNER JOIN Orders
ON Employees.ID = Orders.ID

INNER JOIN的语法:

SELECT field1, field2, field3
FROM first_table
INNER JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

解释:

       INNER JOIN返回的结果集是两个表中所有相匹配的数据。

 

LEFT JOIN的语法:

SELECT field1, field2, field3
FROM first_table
LEFT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

”Employees”表去左外联结”Orders”表去找出相关数据:

SELECT Employees.Name, Orders.Product
FROM Employees
LEFT JOIN Orders
ON Employees.ID = Orders.ID

返回结果:

Name

Product

Hansen, Ola

Printer

Svendson, Tove

 

Svendson, Stephen

Table

Svendson, Stephen

Chair

Pettersen, Kari

 

解释:

       LEFT JOIN返回first_table”中所有的行尽管在 second_table中没有相匹配的数据。

 

RIGHT JOIN的语法:

SELECT field1, field2, field3
FROM first_table
RIGHT JOIN second_table
ON first_table.keyfield = second_table.foreign_keyfield

”Employees”表去右外联结”Orders”表去找出相关数据:

SELECT Employees.Name, Orders.Product
FROM Employees
RIGHT JOIN Orders
ON Employees.ID = Orders.ID

返回结果:

Name

Product

Hansen, Ola

Printer

Svendson, Stephen

Table

Svendson, Stephen

Chair

解释:

       RIGHT JOIN返回 second_table中所有的行尽管在first_table”中没有相匹配的数据。

 

Alias

用途:

可用在表、结果集或者列上,为它们取一个逻辑名称

语法:

给列取别名:

SELECT column AS column_alias FROM table

       给表取别名:

SELECT column FROM table AS table_alias

例:

“Persons”表中的原始数据:

LastName

FirstName

Address

City

Hansen

Ola

Timoteivn 10

Sandnes

Svendson

Tove

Borgvn 23

Sandnes

Pettersen

Kari

Storgt 20

Stavanger

运行下面的SQL

SELECT LastName AS Family, FirstName AS Name
FROM Persons

返回结果

Family

Name

Hansen

Ola

Svendson

Tove

Pettersen

Kari

运行下面的SQL

SELECT LastName, FirstName
FROM Persons AS Employees

返回结果

Employees中的数据有:

LastName

FirstName

Hansen

Ola

Svendson

Tove

Pettersen

Kari

 

 

Insert Into

用途:

       在表中插入新行

语法:

       插入一行数据

INSERT INTO table_name
VALUES (value1, value2,....)

       插入一行数据在指定的字段上

INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)   

例:

“Persons”表中的原始数据:

LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

运行下面的SQL插入一行数据:

INSERT INTO Persons 
VALUES ('Hetland', 'Camilla', 'Hagabakka 24', 'Sandnes')

插入后”Persons”表中的数据为

LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Hetland

Camilla

Hagabakka 24

Sandnes

运行下面的SQL插入一行数据在指定的字段上:

INSERT INTO Persons (LastName, Address)
VALUES ('Rasmussen', 'Storgt 67')

插入后”Persons”表中的数据为

LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

Stavanger

Hetland

Camilla

Hagabakka 24

Sandnes

Rasmussen

 

Storgt 67

 

 

 

Update

用途:

       更新表中原有数据

语法:

UPDATE table_name SET column_name = new_value
WHERE column_name = some_value

例:update Person set FirstName=’Nina’ where LastName=’’

“Person”表中的原始数据:

LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

 

Storgt 67

 

运行下面的SQLPerson表中LastName字段为”Rasmussen”FirstName更新为”Nina”

UPDATE Person SET FirstName = 'Nina'
WHERE LastName = 'Rasmussen'

更新后”Person”表中的数据为

LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Nina

Storgt 67

 

同样的,用UPDATE语句也可以同时更新多个字段:

UPDATE Person
SET Address = 'Stien 12', City = 'Stavanger'
WHERE LastName = 'Rasmussen'

更新后”Person”表中的数据为

LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Nina

Stien 12

Stavanger

 

 

Delete

用途:

       删除表中的数据

语法:

DELETE FROM table_name WHERE column_name = some_value

例:delete from Person where LastName=’’

“Person”表中的原始数据:

LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

Rasmussen

Nina

Stien 12

Stavanger

删除Person表中LastName”Rasmussen”的数据:

DELETE FROM Person WHERE LastName = 'Rasmussen'

执行删除语句后”Person”表中的数据为

LastName

FirstName

Address

City

Nilsen

Fred

Kirkegt 56

Stavanger

 

 

Create Table

用途:

       建立新的资料表。

语法:

CREATE TABLE table_name
(
column_name1 data_type,
column_name2 data_type,
.......
)

例:

创建一张叫“Person”的表,该表有4个字段"LastName", "FirstName", "Address", "Age"

CREATE TABLE Person 
(
LastName varchar,
FirstName varchar,
Address varchar,
Age int
)

如果想指定字段的最大存储长度,你可以这样:

CREATE TABLE Person 
(
LastName varchar(30),
FirstName varchar(30),
Address varchar(120),
Age int(3) 
)

 

Alter Table

用途:

       在已经存在的表中增加后者移除字段

语法:

ALTER TABLE table_name 
ADD column_name datatype
ALTER TABLE table_name 
DROP COLUMN column_name

注意:某些数据库管理系统不允许移除表中的字段

 

例:alter table Person add city varchar(30)

“Person”表中的原始数据:

LastName

FirstName

Address

Pettersen

Kari

Storgt 20

 

Person表中增加一个名为City的字段:

ALTER TABLE Person ADD City varchar(30)

增加后表中数据如下:

LastName

FirstName

Address

City

Pettersen

Kari

Storgt 20

 

 Alter table Person drop column address

移除Person表中原有的Address字段

ALTER TABLE Person DROP COLUMN Address

移除后表中数据如下:

LastName

FirstName

City

Pettersen

Kari

 

 

 

Drop Table

用途:

       在数据库中移除一个数据表定义及该数据表中的所有资料、索引、触发程序、条件约束及权限指定。

语法:

DROP TABLE table_name

 

 

Create Database

用途:

       建立新的数据库.

语法:

CREATE DATABASE database_name

 

 

Drop Database

用途:

       移除原有的数据库

语法:

DROP DATABASE database_name