数据库原理与应用 第四章 SQL语言

SQL语言全称是结构化查询语言,它是一种在关系型数据库中定义和操纵数据的标准语言。它实际上包含数据定义、数据查询、数据操作和数据控制等与数据库有关的全部功能。

4.1SQL语言概述

SQL语言是操作关系数据库的标准语言,是一种高级的非过程化编程语言,是沟通数据库服务器和客户端的重要工具,允许用户在高层数据库结构上工作。本节介绍SQL语言的发展过程、特点以及主要功能。
4.1.2SQL语言的特点

一体化,高度非过程化,面向集合的操作方式,提供多种方式使用,语言简洁。

4.1.3SQL语言的功能

四大部分:数据定义、数据查询、数据操纵和数据控制。

数据定义:CREATE,DROP,ALTER

数据查询:SELECT

数据操纵:INSERT,UPDATE,DELETE

数据控制:GRANT,REVOKE,DENY

数据定义功能用于定义、删除和修改数据库中的对象,数据库、关系表、视图、索引等都是数据库对象;数据查询功能用于实现查询数据的功能,数据查询是数据库中使用最多的操作;数据操纵功能用于添加、删除和修改数据库数据;数据控制功能用于控制用户对数据的操作权限。

4.2SQL支持的数据类型

关系数据库的表有不同的属性组成,属性是由名称、类型和长度等来描述的。因此,在定义表结构时,应该为每个属性指定一个确定的数据类型。

共有13个基本数据类型组成:精确数字、近似数字、日期时间型、字符串型(普通字符编码串、统一字符编码串、二进制串)、其他类型。

4.3数据定义功能

创建数据库:create database 数据库名

删除数据库:drop database 数据库名

创建表:create table 表名(列名 数据类型 [列级完整性约束],……   [表级完整性约束])

列级完整性约束:

NOT NULL:非空约束,限制列取值非空。
PRIMARY KEY:主键约束,指定本列为主键。
FOREIGN KEY:外键约束,定义本列为引用其他表的外键。
UNIQUE:唯一值约束,限制列取值不能重复。
DEFAULT:默认值约束,指定列的默认值。
CHECK:列取值范围约束,限制列的取值范围。

定义外键的语法格式:

[foreign key 列名] references 外表名 外表列名

修改表:

ALTER TABLE语句的语法如下:

ALTER TABLE[<架构名>.] <表名>

{ALTER COLUMN <列名> <新数据类型>|ADD <列名> <数据类型> [约束]

I DROP COLUMN <列名 >

I ADD [ constraint <约束名>] 约束定义

DROP<约束名>}
删除表:drop table 表名1,表名2

4.4数据查询功能

SELECT <目标列名序列> 
FROM <表名> [JOIN <表名> ON <连接条件>]
[ WHERE <行选择条件>]
[ CROUP BY <分组依据列> ]
[ HAVING <组选择条件>]
[ ORDER BY <排序依据列>] 

●SELECT子句用于指定输出的字段。
●FROM子句用于指定数据的来源。
●WHERE子句用于指定数据的行选择条件。
●GROUP BY子句用于对检索到的记录进行分组。
●HAVING子句用于指定对分组后结果的选择条件。
●ORDER BY子句用于对查询的结果进行排序。
<目标列名序列>若是*,则查询的是所有的列名。

对数据进行分组:

group by 分组依据 [having 条件]     有having必须有group by。

别名:列名|表达式[as] 列别名

where 子句:

     查询条件                                                                    谓词
比较(比较运算符)                                            =、>、>=、<=、<、<>、!=
确定范围                                            BETWEEN ... AND、NOT BETWEEN ... AND
确定集合                                                                    IN、NOT IN
字符匹配                                                                LIKE、NOT LIKE
空值                                                                  IS NULL、IS NOT NULL
多重条件(逻辑谓词)                                                     AND、OR

LIKE:列名  [not] like <匹配串>

匹配串4种通配符:

●_(下划线):匹配任意一个字符。
●% (百分号):匹配0到多个字符。
●[]:匹配[ J中的任意一个字符。

聚合函数:

(1) COUNT ( * ):统计表中元组的个数(不忽略NULL值)。
(2) COUNT ( [DISTINCT] <列名>):统计本列的列值个数,DISTINCT 选项表示去掉列的重复值后再统计。
(3) SUM (<列名>):计算列值的和值(必须是数值型列)。
(4) AVG (<列名>):计算列值的平均值(必须是数值型列)。
(5) MAX (<列名>):得到列值的最大值。
(6) MIN (<列名>):得到列值的最小值。
多表连接:

内连接:inner join

左外连接:left outer join

右外连接:right outer join

全连接:full outer join

自连接:

FROM表1 AS T1            可想象成在内存中生成表名为“T1”的表发中果
JOIN表1 AS T2              可想象成在内存中生成表名为“T2” 的表
ONT1.列名= T2.列名     对新命名的T1和T2表进行连接
TOP:

使用TOP子句的格式如下:
TOPn[percent ] [ WITH TIES]
●n为非负整数。
●TOP n:取查询结果的前n行数据。
●TOP n percent:取查询结果的前n%行数据。

●WITH TIES:包括并列的结果。
TOP子句写在SELECT单词的后边( 如果有DISTINCT 的话,则在DISTINCT单词之后),查询列表的前边。
CASE:

简单CASE丽数的语法格式为:
CASE测试表达式
WHEN简单表达式1 THEN结果表达式1
WHEN简单表达式2 THEN结果表达式2
WHEN简单表达式n THEN结果表达式n
[ ELSE结果表达式n+1 ]
END
●测试表达式可以是一一个变量名、字段名、函数或子查询。
●简单表达式中不能包含比较运算符,它们给出被比较的表达式或值,其数据类型必须与测试表达式的数据类型相同,或者可以隐式转换为测试表达式的数据类型。

子查询:

WHERE <列名> [NOT] IN (子查询)
WHERE <列名>比较运算符(子查询)
WHERE EXISTS (子查询)
not in 与 <>all 等价             =in 与 =some 等价

查询的集合运算:union 并、intersect 交、except 差

4.5视图

视图是基于SQL语句的结果集的可视化的表。试图包含行和列,就像一个真实的表。视图是一个虚表。

创建视图:create view 视图名 [列名] as select 语句

通常不包含order by和distinct 子句。

视图不仅可用于查询数据,也可以通过视图修改基本表中的数据,但并不是所有的视图都可以用于修改数据。比如,经过统计或表达式计算得到的视图,就不能用于修改数据的操作。能否通过视图修改数据的基本原则是:如果这个操作能够正确落实到基本表上,则可以通过视图修改数据,否则不行。
修改视图:alter view 视图名 [列名] as select 语句

删除视图:drop view 视图名

4.6数据更改功能

插入:insert into 表名[(列名表)] values(值列表)

更改:update 表名 set 列名=表达式   [from 条件 ] where 更新条件(若省略where,则更新所有)

数据删除:delete from 表名 from 条件  where 删除条件(若省略where,则删除所有)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值