SQL基础(定义|基本语句|基本函数)

目录

一、SQL定义

1.1 SQL定义

1.2 可执行操作

1.3 主要关键词

1.4 数据库表

1.5 重要事项

1.6 DML与DDL

二、重要DML语句

2.1 SELECT

2.2 WHERE

2.3 AND|OR运算符

2.4 ORDER BY

2.5 INSERT INTO

2.6 UPDATE

2.7 DELETE

三、SQL函数


一、SQL定义

教程链接 https://www.w3school.com.cn/sql/sql_intro.asp

1.1 SQL定义

sql是

  • SQL 指结构化查询语言
  • SQL 使我们有能力访问数据库
  • SQL 是一种 ANSI 的标准计算机语言

1.2 可执行操作

  • 查询
  • 取回数据
  • 插入新的记录
  • 更新数据库中的数据
  • 删除记录
  • 创建新数据库
  • 创建新表
  • 创建存储过程
  • 创建视图
  • 设置表、存储过程和视图的权限

1.3 主要关键词

主要的关键词(比如 SELECT、UPDATE、DELETE、INSERT、WHERE 、DISTINCT、AND、OR

1.4 数据库表

一个数据库通常包含一个或多个表。每个表由一个名字标识(例如“客户”或者“订单”)。表包含带有数据的记录(行)。

SQL基础(定义|基本语句|基本函数)_第1张图片

SELECT LastName FROM Persons,即可将PERSON一列取出来。

1.5 重要事项

一定要记住,SQL对大小写不敏感。

某些数据库系统要求在每条 SQL 命令的末端使用分号

1.6 DML与DDL

可以把 SQL 分为两个部分:数据操作语言 (DML) 和 数据定义语言 (DDL)。 DML主要处理表内数据,DDL更新表的尺寸或者对表进行操作。

查询和更新指令构成了 SQL 的 DML 部分:

注意区分,DML中的删除用DELETE,而DDL中的用DROP,这种对表的结构,比如行列尺寸没有影响和变化。

  • SELECT - 从数据库表中获取数据
  • UPDATE - 更新数据库表中的数据
  • DELETE - 从数据库表中删除数据
  • INSERT INTO - 向数据库表中插入数据

SQL 的数据定义语言 (DDL) 部分使我们有能力创建或删除表格。我们也可以定义索引(键),规定表之间的链接,以及施加表间的约束。

SQL 中最重要的 DDL 语句:

database是数据库,table是表,索引用index,alter表示变更修改,create表示创建,DDL中删除用drop

  • CREATE DATABASE - 创建新数据库
  • ALTER DATABASE - 修改数据库
  • CREATE TABLE - 创建新表
  • ALTER TABLE - 变更(改变)数据库表
  • DROP TABLE - 删除表
  • CREATE INDEX - 创建索引(搜索键)
  • DROP INDEX - 删除索引

 

二、重要DML语句

2.1 SELECT

SELECT 列名称 FROM 表名称

SELECT * FROM 表名称

SQL基础(定义|基本语句|基本函数)_第2张图片

SELECT LastName,FirstName FROM Persons

SQL基础(定义|基本语句|基本函数)_第3张图片

重要参数

SELECT DISTINCT,选择当前表中不重复的部分。

SQL基础(定义|基本语句|基本函数)_第4张图片

SELECT DISTINCT Company FROM Orders

结果中没有重复的部分(W2School重复了,所以只需要一个)

 

2.2 WHERE

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

下面的运算符可在 WHERE 子句中使用:

操作符

描述

=

等于

<>

不等于

>

大于

<

小于

>=

大于等于

<=

小于等于

BETWEEN

在某个范围内

LIKE

搜索某种模式

注释:在某些版本的 SQL 中,操作符 <> 可以写为 !=。

例如:

SQL基础(定义|基本语句|基本函数)_第5张图片

SELECT * FROM Persons WHERE City='Beijing'

SQL基础(定义|基本语句|基本函数)_第6张图片

引号的使用:

对于文本

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

数值:

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

 

2.3 AND|OR运算符

  • AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。
  • 如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录。
  • 如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

原始的表 (用在例子中的):

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 运算符实例

使用 AND 来显示所有姓为 "Carter" 并且名为 "Thomas" 的人:

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

结果:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

OR 运算符实例

  • 使用 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 运算符

我们也可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式):

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

 

2.4 ORDER BY

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

原始的表 (用在例子中的):

Orders 表:

Company

OrderNumber

IBM

3532

W3School

2356

Apple

4698

W3School

6953

实例 1

以字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company

结果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

6953

W3School

2356

实例 2

以字母顺序显示公司名称(Company),并以数字顺序显示顺序号(OrderNumber):

SELECT Company, OrderNumber FROM Orders ORDER BY Company, OrderNumber

结果:

Company

OrderNumber

Apple

4698

IBM

3532

W3School

2356

W3School

6953

实例 3

以逆字母顺序显示公司名称:

SELECT Company, OrderNumber FROM Orders ORDER BY Company DESC

结果:

Company

OrderNumber

W3School

6953

W3School

2356

IBM

3532

Apple

4698

实例 4

以逆字母顺序显示公司名称,并以数字顺序显示顺序号:

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

结果:

Company

OrderNumber

W3School

2356

W3School

6953

IBM

3532

Apple

4698

注意:在以上的结果中有两个相等的公司名称 (W3School)。只有这一次,在第一列中有相同的值时,第二列是以升序排列的。如果第一列中有些值为 nulls 时,情况也是这样的.

 

2.5 INSERT INTO

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

语法

  • INSERT INTO 表名称 VALUES (值1, 值2,....)
  • 我们也可以指定所要插入数据的列:
  • INSERT INTO table_name (列1, 列2,...) VALUES (值1, 值2,....)

插入新的行

"Persons" 表:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

SQL 语句:

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

结果:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

在指定的列中插入数据

"Persons" 表:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

SQL 语句:

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

结果:

LastName

FirstName

Address

City

Carter

Thomas

Changan Street

Beijing

Gates

Bill

Xuanwumen 10

Beijing

Wilson

 

Champs-Elysees

 

 

2.6 UPDATE

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

语法:

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

Person:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

 

Champs-Elysees

 

更新某一行中的一个列

我们为 lastname 是 "Wilson" 的人添加 firstname:

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

结果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Champs-Elysees

 

更新某一行中的若干列

我们会修改地址(address),并添加城市名称(city):

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

结果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Zhongshan 23

Nanjing

 

2.7 DELETE

DELETE 语句

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

语法

DELETE FROM 表名称 WHERE 列名称 = 值

Person:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

Wilson

Fred

Zhongshan 23

Nanjing

删除某行

"Fred Wilson" 会被删除:

DELETE FROM Person WHERE LastName = 'Wilson'

结果:

LastName

FirstName

Address

City

Gates

Bill

Xuanwumen 10

Beijing

删除所有行

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

DELETE FROM table_name

或者:

DELETE * FROM table_name

 

三、SQL函数

函数的语法

内建 SQL 函数的语法是:

SELECT function(列) FROM 表

函数的类型

在 SQL 中,基本的函数类型和种类有若干种。函数的基本类型是:

  • Aggregate 函数
  • Scalar 函数

合计函数(Aggregate functions)

Aggregate 函数的操作面向一系列的值,并返回一个单一的值。

注释:如果在 SELECT 语句的项目列表中的众多其它表达式中使用 SELECT 语句,则这个 SELECT 必须使用 GROUP BY 语句!

"Persons" table (在大部分的例子中使用过)

Name

Age

Adams, John

38

Bush, George

33

Carter, Thomas

28

MS Access 中的合计函数

函数

描述

AVG(column)

返回某列的平均值

COUNT(column)

返回某列的行数(不包括 NULL 值)

COUNT(*)

返回被选行数

FIRST(column)

返回在指定的域中第一个记录的值

LAST(column)

返回在指定的域中最后一个记录的值

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

 

在 SQL Server 中的合计函数

函数

描述

AVG(column)

返回某列的平均值

BINARY_CHECKSUM

 

CHECKSUM

 

CHECKSUM_AGG

 

COUNT(column)

返回某列的行数(不包括NULL值)

COUNT(*)

返回被选行数

COUNT(DISTINCT column)

返回相异结果的数目

FIRST(column)

返回在指定的域中第一个记录的值(SQLServer2000 不支持)

LAST(column)

返回在指定的域中最后一个记录的值(SQLServer2000 不支持)

MAX(column)

返回某列的最高值

MIN(column)

返回某列的最低值

STDEV(column)

 

STDEVP(column)

 

SUM(column)

返回某列的总和

VAR(column)

 

VARP(column)

 

Scalar 函数

Scalar 函数的操作面向某个单一的值,并返回基于输入值的一个单一的值。

MS Access 中的 Scalar 函数

函数

描述

UCASE(c)

将某个域转换为大写

LCASE(c)

将某个域转换为小写

MID(c,start[,end])

从某个文本域提取字符

LEN(c)

返回某个文本域的长度

INSTR(c,char)

返回在某个文本域中指定字符的数值位置

LEFT(c,number_of_char)

返回某个被请求的文本域的左侧部分

RIGHT(c,number_of_char)

返回某个被请求的文本域的右侧部分

ROUND(c,decimals)

对某个数值域进行指定小数位数的四舍五入

MOD(x,y)

返回除法操作的余数

NOW()

返回当前的系统日期

FORMAT(c,format)

改变某个域的显示方式

DATEDIFF(d,date1,date2)

用于执行日期计算

 

 

你可能感兴趣的:(SQL)