SQL基础

1       数据定义

SQL的DDL不仅可以定义一组关系,还可以定义每个关系的信息,包括:

·每个关系的模式;

·每个属性的值域;

·完整性约束;

·每个关系维持的索引集合;

·每个关系的安全性和权限信息;

·磁盘上每个关系的物理存储结构。

       这里只讨论基本模式定义和基本域值。

1.1 基本域类型

       SQL支持的域类型包括:

       ·char(n):固定长度的字符串,用户指定长度n。也可以用全称character

       ·varchar(n):可变长度的字符串,用户指定最大长度n。等价于全称character varying

       ·int:整形。等价于integer

       ·smallint:小整形

       ·numeric(p,d):定点数,精度由用户指定

       ·real,double precision:浮点数与双精度浮点数,精度与机器有关

       ·float(n):精度至少为n位的浮点数

1.2 基本模式定义

       <1>create table 用于定义SQL关系,即创建一个表:

create table r(A1 D1, A2 D2,…,An Dn,

                <完整性约束1>,

                 …

                <完整性约束k>)

       r表示关系名(表名),A表示关系r的一个属性名,D位对应的域类型,下面接完整性约束。举例:

create table test(use_id int, name varchar(20), age int,

             primary key(use_id));

结果:

 

primary key (A1, A2,…,Aj):声明表示属性A1,A2,…,Aj构成该关系的主码。主码属性必须非空且唯一

       <2>insert 插入数据到关系中:

insert into r

     values(v1, v2,…,vn)

       <3>delete 从关系中删除元组

       delete from r

       <4>drop table 删除关系(表)

       drop table r

       <5>alter table 改变关系的属性

alter table r add A D

向关系r中添加属性A,其属性域为D。已有元组的该属性默认为null

alter table r drop A

从关系r中移除属性A

       <6>update 更新

update r

set p

where q

 

2       SQL查询的基本结构

SQL表达式基本结构包括三个子句:select、where、from

其基本表达式为:

select A1,A2,…,An

from r1,r2,…,rm

where p

2.2   更名运算

为关系或者属性进行重新命名,使用as命令:

旧名 as 新名

select use_id as user_id, name

from test;

2.3   字符串运算

字符串匹配:

·百分号(%):匹配任意子串;

·下划线(_):匹配任意一个字符。

       SQL用like来表达模式:

select * from test

    where name like '%s%';

此外,SQL使用escape关键词来定义转义字符。

2.4   排列元组的显示次序

使用关键词order by

select *

from test

order by use_id

后接asc表示升序排列(默认为升序排列),后接desc表示降序,即

select *

from test

order by use_id desc

3       集合运算

SQL使用union、intersect、except来进行集合运算中的并、交和差运算。注意,这三种运算都是默认去除重复的,想要保留重复就需要使用union all、intersect all、except all

select * from test

union all

select * from test;

4       聚集函数

聚集函数就是对多个值进行计算,得到单一值。SQL支持的5个聚集函数为:

·平均值:avg

·最小值:min

·最大值:max

·总和:sum

·计数:count

SQL使用distinct关键词进行去除重复操作;使用group by关键词进行元组的分组;使用having关键词进行约束;

5       嵌套子查询

使用in关键词进行嵌套子查询

select A11, A12,..,A1n

from r1

where p in (select…子查询)

       此外SQL语句还定义了not in关键词,表示不在子查询范围内

       SQL使用some和all来进行集合的比较

例如:

      

       检查是否为空,使用关键词exists,不为空则返回true,举例:

 

       检查是否有重复,使用关键词unique,没有重复则返回true,举例:

 

6       视图

视图可以视为对查询表达式的封装,使用create view关键词;

 

posted @ 2020-06-04 15:24  SucGao  阅读(201)  评论(0)    收藏  举报