《SQL基础知识培训》PPT课件 (SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件

lsicbc 7 views 53 slides Sep 10, 2025
Slide 1
Slide 1 of 53
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14
Slide 15
15
Slide 16
16
Slide 17
17
Slide 18
18
Slide 19
19
Slide 20
20
Slide 21
21
Slide 22
22
Slide 23
23
Slide 24
24
Slide 25
25
Slide 26
26
Slide 27
27
Slide 28
28
Slide 29
29
Slide 30
30
Slide 31
31
Slide 32
32
Slide 33
33
Slide 34
34
Slide 35
35
Slide 36
36
Slide 37
37
Slide 38
38
Slide 39
39
Slide 40
40
Slide 41
41
Slide 42
42
Slide 43
43
Slide 44
44
Slide 45
45
Slide 46
46
Slide 47
47
Slide 48
48
Slide 49
49
Slide 50
50
Slide 51
51
Slide 52
52
Slide 53
53

About This Presentation

sql基础培训SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件SQL基础培训PPT课件


Slide Content

SQL基础知识培训二
设计事业部 李红

一些习题:
1、往user库表插入一条记录:
Usid=001,grid=01,ssex=f,
usnm=liming,addr=beijing,
otel=139,acbl=0.0;
2、往user库表插入一条记录:
Usid=002,grid=01,ssex=f,
usnm=wanggang,acbl=100;
3、从user库表取出所有的 grid;
4、从user库表取出所有的 ssex,及
其对应的记录条数和汇总 ACBL,按
照ssex升序排序 ;
5、从user库表选出名字里带有 ”李”字
的所有USNM;
字段名称 中文含义 数据类型 空
USID 用户号 CHAR(8) N
GRID 组序号 CHAR(8) N
SSEX 性别 CHAR(1) N
USNM 用户名 CHAR(30)N
ADDR 用户地址 CHAR(30)
OTEL 联系电话
CHAR(1
0)
ACBL 用户金额 decimal

目录大纲
2. 数据库表常用操纵语句
用来操纵数据库中的表中的数据 .
2.1插入INSERT
2.2更新UPDATE
2.3删除DELETE
2.4查询SELECT
2.4.1简单查询语句
2.4.2表达式、条件和操作符
2.4.3函数
2.4.4查询子句

2.1插入
INSERT
INSERT语句用于将数据录入到数据
库中。它可以划分为如下两语句:
•INSERT…VALUES
  和
• INSERT…SELECT

•INSERT语句以一次一记录的方式录入数据,对于只和几
条记录打交道的小规模操作很有用。它的语法如下:
INSERT INTO 表名(列1,列2…)
VALUES (值1,值2…)
这是INSERT…VALUES语句的基本格式,用于给表增加
一条记录,在使用时,必须遵守以下三条规则:
.用于插入的值必须和相应字段的数据类型一致。
.插入数据的大小尺寸必须在相应列的数据范围之
内。
例如,一个有 80个字符的字符串不能插入只有 40
个字符长度的列。
.在VALUES后面的值序列必须和前面的列的序列
一一对应。

•示例:
INSERT INTO 学生档案 (学号,姓名,性
别) VALUES ('009','李刚','男')
INSERT INTO 学生档案
VALUES (‘010’,‘王刚’,‘男’,’20010101’)
INSERT INTO 学生档案
SELECT * FROM 学生档案 _OLD
WHERE GRID=‘010’;

•2.2更新UPDATE
UPDATE语句用于改变现有记录中字段的值,它的语法如下:
UPDATE 表名 SET 列1=值1,列2=值2 WHERE 搜索
条件
示例:
UPDATE 学生档案 SET 班级='初二一班 '
 注意:因为省略了 WHERE 子句,表中的每条记录的相应
字段都被更新。所以,一般情况下 UPDATE语句应带
WHERE 子句。
例:
UPDATE 学生档案 SET 班级=‘初二三班’ WHERE
s_id=2;

•2.3删除DELETE
DELETE语句从表中删除记录,它的语法如下:
DELETE FROM 表名 WHERE 条件
 示例:
DELETE FROM 学生档案 WHERE s_id=2
 注意:和 UPDATE一样,如果省略了 WHERE
子句,表中的所有记录将被删除。所以,一般
情况下DELETE语句应带 WHERE 子句。例
DELETE FROM 学生档案

•2.4查询SELECT
SELECT语句的一般用法:
SELECT [ ALL | DISTINCT ]
[ INTO new_table ]
FROM table_source
[ WHERE search_condition ]
[ GROUP BY group_by_expression ]
[ HAVING search_condition ]
[ ORDER BY order_expression [ ASC |
DESC ] ]

•2.4.1简单查询语句
按顺序返回一条语句
select * from authors
 星号*告诉数据库返回由 from指定的表的所有列,返
回顺序由数据库决定。大小写不影响查询结果。
select au_id,au_lname,au_fname,
phone,address,city,state,zip, contract
from authors
与前一条 SQL语句有相同的结果

改变列的顺序或者只选出感兴趣的列
改变列的顺序:
select au_id, phone, au_lname,
au_fname, address,city,state,zip,
contract from authors ;
如果你只对某些列感兴趣,比如只想检索 au_lname,
au_fname, phone, address ,就应该这样写 SQL
语句:select au_lname,au_fname,
phone,address from authors

选出结果不重复的列
select city from authors
 你会发现有相同的城市,两个人住在同一个城市这很
正常,但如果你想看看到底有那几个城市在表中怎么

?试试这个:
select distinct city from authors
 SQL语法中
还有一个和
distinct对应的
关键字
all
select all city from authors
 你会发现查询结果和
上面的第一个
SQL语句相同,


如此,谁还想自找麻烦呢?

•2.4.2表达式、条件和操作符
表达式
-用于返回一个值。它 包括:字符串、
数字、
布尔表达式。其 实你已经用过表达式了, 跟在
select和from中
间的东西都是表达式。表达式是符
号与
运算符的组合。简单的表达式可以是一个常 量、

量、列或标量函数。可以用 运算符将两个或更 多的
简单表达式联
接起来组成复杂的表达式。
条件
-用于指定返回值应该 满足的条件。为
where后的语句。
操作符是条件及表达式中用于
精确表示你想从
数据库中查询出
什么数据的运算符号。操作符大致分

六类:算术操作符、比 较操作符、字符操作符、 逻

操作符、集合操作符和其 他操作符。

2.4.2.1算术
操作符
算术
操作符
(+)
加号有两
种不同的用法,可以作 算术操作符,也可以
作字符操作符,
我们先用它作算术操作符。键入:
select discounttype,stor_id,lowqty,
highqty,discount from discounts
现在
我们把所有的折扣增加
0.5元
,可以键入 :
select discounttype,stor_id,lowqty,
highqty,discount+0.5 from discounts
我们得
到了想要的结果。
SQL允许
你将已有的列进行

合或计算,以建立虚拟列和导出字段,原始表并不
发生变
化。

观察
一下
discount+0.5字段的
标题是
(无
列名
),
太不
好听
了,我们把它改一改。 键入:
select discounttype,stor_id,lowqty,
highqty,discount+0.5 新
折扣
from discounts

好,我们可以重新命名列标题。重新命名任意字段列标
题的语法格式:列名 别名(注意它
们之间有空格)
  加号
还可以作为字符操作符,后面你将看到这 种用法。

我们
想把原来的折扣和新折扣加以对照, 键入:
select discounttype,stor_id,lowqty,
highqty, discount 旧折扣,discount+0.5

折扣
from discounts
我们
不仅建立了一个新的列, 还可以重新 命名任意列

题。

算术
操作符
(-)

号也有两种用法:可以用某列 减去一个常数,或者用一列
减去另
一列。另一种用法是改变某数的符号。
我们先
来改变一列数的符号, 键入:
select discounttype,stor_id,lowqty,
highqty,
-discount from discounts
某列
减去一个常数
:
select discounttype,stor_id,lowqty,
highqty, discount-3 from discounts
用一列
减去另一列,键入:
select discounttype,stor_id,lowqty,
highqty, discount 旧折扣, discount+4 新
折扣
,
discount+4-discount 折扣差

from discounts

算术
操作符
(/)
除号只有一
种用法:某列除以常数或者两列相除
select discounttype,stor_id, lowqty,
highqty, discount/3 from discounts
或者:
select discounttype,stor_id,lowqty,
highqty, discount 旧折扣, discount+4 新
折扣, (discount+4)/discount 折扣

from
discounts

算术
操作符
(*)

号也只有一种用法:某列 乘以常数或者两列相 乘
select discounttype,stor_id, lowqty,
highqty, discount*3 from discounts
 或者:
select discounttype,stor_id,lowqty,
highqty, discount 旧折扣, discount+4 新
折扣, (discount+4)*discount 折扣乘

from
discounts

算术
操作符
(%)

运算返回除法操作的 余数:
select discounttype,stor_id,lowqty,
lowqty%3 模, highqty, discount from
discounts
后面
我们将会看到,模 运算还可以作为函数。

算术
操作符优先级
先乘
除后加减,括号优先。

2.4.2.2比
较操作符
  比
较操作符比较两个表达式 并返回如下三个值
之一,TRUE,FALSE或NULL。
  重

  不能将空值用于
区分表中两行所需的信息
(例如,
外键或主键)。
  如果数据出现空值,则
逻辑运算符和比较运算
符有可能返回 TRUE 或 FALSE 以
外的第三种结果
UNKNOWN。
需要三值逻辑是导致许多应用程序出错之

Is null 操作符
我们
来找出一列中值为
NULL的记录:
select * from discounts where
lowqty is null
  执行
的不错,现在如果用 等号代替
is null:
select * from discounts where
lowqty = null
  会怎样呢
?试试看吧,什么也没有,因为
lowqty = null 的比
较结果是
FALSE。
  还
有一个操作符是
IS NOT NULL,你一看就
明白
是什么意思。

比
较操作符
(=)
我们早
就用过等号了:
select * from discounts where discount
= 5
 
上面字段
discount的数据类型是数字型,对字符串
类型的字段记
得加上单引号:
select * from discounts where
discounttype = 'Volume Discount'

比
较操作符
(>和>=)
 大于号
像这样工作:
select * from discounts where
discount > 5
 如果
要包括
5:
select * from discounts where
discount >= 5
 字符
也可以比较:
select * from discounts where
discounttype >= 'Vo'

比
较操作符
(<和<=)
小于号
像这样工作:
select * from discounts where
discount < 6.7
如果
要包括
6.7:
select * from discounts where
discount <= 6.7
 字符
也可以比较:
select * from discounts where
discounttype <= 'Vo'

比
较操作符
(<>或!=)

等于可以这样写:
select * from discounts where
discount <> 6.7

可以这样写:
select * from discounts where
discount != 6.7
 字符
也可以不等于:
select * from discounts where
discounttype <> ' Volume Discount '

比
较操作符
(in)
in可以简
化你已经学过的一些查询,或者 说你不会用
in也没关
系,用前面学 过的知识可以 满足你的要求。
我们
看前面的一个例子:
select * from discounts where
discount=5 or discount=6.7
我们

in来
实现。
select * from discounts where discount
in (5,6.7)

仅语句更短了,而且更容易阅读 ,
in也
可用于字符
类型的字段。

比
较操作符
(between)
between也
用来简化你已经学过的一些查询,或者 说
你不会用 between也没关
系,用前面学 过的知识可以
满足
你的要求。我们看前面的一个例子:
select * from discounts where
discount>=5 and discount<10
 
我们用
between来
实现。
select * from discounts where discount
between 5 and 10
 不
仅语句更短了,而且更容易阅读,
between也
可用
于字符类型的字段。

•2.4.2.3字符操作符
字符操作符 (like和%)
如果你想查
找不十分精确的数据,
like 很
好用:
select * from authors where au_lname
like 'St%'
 上
面的操作选出
au_lname的
第一个字母是
S的记录,
试试
小写
select * from authors where au_lname
like 'st%'
 大小写
没关系。
 %是
通配符,代表多个字符
。%也
可以多个使用,见
下面例子。

字符操作符 (_)   
下划
线是单个字符 通配符

select * from authors where zip like
'946_9'

个下划线使用:
select * from authors where zip like
'9_6_8'
_与%混合
使用:
select * from authors where phone like
'%9_6_8%'

字符操作符 (+)
连接

(+)用于
连接两个字符串:
select au_id, au_lname, au_fname,
au_lname+au_fname from authors
 
我们在前面已经学过算术操作符
+的用法。

•2.4.2.2逻辑
操作符
逻辑
操作符
(and)
与(and)用于
连接符两个表达式。只有 当两
个表达式都为 TRUE时,and才
返回
TRUE,

则返回
FALSE。
select * from discounts where
discount>=5 and discount<10

容易使用。

逻辑
操作符
(or)
 或(or)也
用于连接符两个表达式。 当两个表
达式中有一个为 TRUE时,or就返回TRUE,
只有两个表达式都为 FALSE时
才返回
FALSE。
select * from discounts where
discount=5 or discount=6.7

很容易使用。

逻辑
操作符
(not)
非(not)是
反运算。如果条件为
TRUE,则
not运算
后返回
FALSE,
反之返回
TRUE。
select * from discounts where not
discount = 5
 
也很容易使用。

•2.4.3函数
2.4.3.1聚集
函数;
2.4.3.2日期
和时间函数;
2.4.3.3数学函数;
2.4.3.4字符函数;
函数
非常多,我们不能一一 举例,只能
作一个常用示范性的
介绍。

2.4.3.1聚集
函数
聚集
函数
(count)
count函数返回符

select语句中的查询条
件的
行数。
例如:select count(*) from
discounts where discount>=5 and
discount<10

聚集
函数
(sum)  
sum函数返回一列中所有值的和。
select sum(discount) from
discounts where discount>=5 and
discount<10
 只对数值类型字段有
效。

聚集
函数
(avg)
avg函数计
算一列的平均值。
select avg(discount) from
discounts where discount>=5 and
discount<10
只对数值类型字段有
效。

聚集
函数
(max)
max函数
找到一列的最大值。
select max(discount) from
discounts where discount>=5 and
discount<10
 可用于字符型字段 。

聚集
函数
(min)
min函数
找到一列的最小值。
select min(discount) from discounts
where discount>=5 and discount<10
 可用于字符型字段。
 max函数和min函数可以一
块儿使用,查出值
所在的范围。
select min(discount), max(discount)
from discounts

聚集
函数
(StDev)
StDev函数计
算标准差的平方
—方
差。
select StDev(discount) from
discounts
只对数值类型字段有
效。
如果符
合查询条件的记录为两个以下
时,StDev函数将
传回一个
Null 值,该表

不能计
算标准差。

聚集
函数
(var)
Var函数,计
算指定字段之中符 合查询条件的变

数估计值。
select var(discount) from discounts
语法为Var(运算

)。
运算式,可为字段名称、
运算
式、或一个函数, 此函数可
以是一个内部或使用者定义的,但不能为其它的
SQL函数。
如果符
合查询条件的记录为两个以下时,
Var
函数将
传回一个
Null 值,该表示不
能计
算变异数。

•2.4.3.2日期
和时间函数
日期
函数
year()
返回
年份:
Select year(opdt) from discount;
日期
函数
month()
返回
月份:
Select month(opdt) from discount;
日期
函数
day()
返回
年份:
Select day(opdt) from discount;

•2.4.3.3 数学函数
数学函数 abs(n)
返回
绝对值,例如:
select abs(discount) from discounts
数学函数 round(m,n)
n表示字段 m需要保留
的小数位数,四舍五入。
select round(discount,0) from discounts;
则返回的是
各个
discount的
四舍五入整数值。

数学函数 trunc(m,n)
n表示字段 m需要保留
的小数位数,直接舍去。
select trunc(discount,0) from
discounts;
则返回的是
各个
discount的
整数值。

•2.4.3.4字符函数
字符函数 trim()

空格。
select trim(cuno) from user;
字符函数 upper()
转换成
大写字母
select upper(cuno) from user;

•2.4.4查询字句
从
混沌到有序
Order by子句
如果你
需要把查询结果按顺序 显示,可以使用
order by子句:
SELECT * from titles
 记录是按录入顺序
显示的。
下面按
价格从小到大排序:
SELECT * from titles order by price
 按
价格从大到小排序:
SELECT * from titles order by price desc
 从小到大是升序排列,
关键字是
asc,系
统默认排序为升序,所
以asc可以省略。从大到小是
降序排列, 关键字是
desc。

order by子句
也可以用来对字符型数据排序。
SELECT * from titles order by title asc
order by子句
也可以按多列进行排序:
SELECT * from titles order by title,
type,price
 
注意
优先级:
SELECT * from titles order by price,
type, title

GROUP BY 字句
指定用来
放置输出行的组,并且如果
SELECT
子句 <select list> 中
包含聚合函数,则

算每组的汇总值。指定
GROUP BY 时,选

列表中任一非聚合表达式内的所有列都应 包
含在 GROUP BY 列表中,或者 GROUP BY
表达式必须与选
择列表表达式 完全匹配。
示例:
SELECT au_lname, sum(price) 分组和,
count(au_lname) 计数 from titleview
group by au_lname;

•说明  如果
未指定
ORDER BY 子句,则使用 GROUP
BY 子句返回的组
没有任何特定的顺序。 建议始终使
用 ORDER BY 子句指定
特定的数据顺序。
SELECT au_lname, sum(price) 分组和,
count(au_lname) 计数 from titleview
group by au_lname order by au_lname
desc

HAVING字句:
having子句给用在 group by子句中的数据加
限制
条件。HAVING 通
常与
GROUP BY 子句一
起使用。
如果不使用 GROUP BY 子句,HAVING 的
行为与
WHERE 子句一样。
SELECT au_lname, sum(price) 分组和,
count(au_lname) 计数 from titleview
group by au_lname having sum(price)>20 ;
HAVING可以
让你在比较表达式中使用 聚集函数,而
WHERE则不
行。

字句组

SELECT au_lname, sum(price) 分组
和, count(au_lname) 计数 from
titleview
Where au_lno>’10’
group by au_lname
having sum(price)>20
Order by au_lname;
Tags