数据库技术——SQL(常用SQL操作简介:查询,定义,更新)

SQL——Structured Query Language 结构化查询语言

  • 特点

    • 综合统一

      • 数据定义语言DDL,数据操纵语言DML,数据控制语言DCL集于一体
      • 可独立完成数据库的全部活动
    • 高度非过程化

      • 只提出作什么,无需了解存取路径
    • 面向集合操作方式

      • 一次插入,删除,更新的对象是元组的集合
    • 多种使用方式

      • 交互式SQL
        • 直接键入SQL命令进行操作
        • 有DBMS进行解释
      • 嵌入式SQL
        • 将SQL语句嵌入到高级语言
        • 使应用程序充分利用SQL访问数据库的能力,宿主语言的过程处理能力
        • 一般需要预编译,将嵌入SQL语句转化为宿主语言编译器能处理的语句
  • 核心功能

    • 数据定义:删除,修改基本表,视图,索引
    • 数据操纵:数据的增删查改
    • 数据控制:权限授予,收回
      在这里插入图片描述
  • 体系结构
    在这里插入图片描述

    • 基本表
      • 本身独立存在的表,一个关系对应一个基本表
      • 一个或多个基本表对应一个存储文件
      • 一个表可以带若干索引
    • 存储文件
      • 逻辑结构组成关系数据库的内模式
      • 物理结构任意的,透明的
    • 视图
      • 从一个或几个基本表导出来的表
      • 数据库中只存放视图的定义而不存放视图的数据
      • 视图是一个虚表,用户可以在视图上定义视图
  • SQL操作

    • 数据查询
      • 单表查询
select 指定列 from 表名
select 指定列 别名, 指定列2 别名2 ... from student          #这里的指定列的别名用来更改查出来的值的列名
select distinct 列名 from 表名                              #distinct 是指去掉表中重复的行
select 列名 from 表名 where 条件表达式                       #这里条件表达式有 >= <= =  != AND,OR,NOT,LIKE,IN,BETWEEN AND ......
select 列名 from 表名 where 列名 LIKE 'DB\_%i__' ESCAPE '\\' #这里LIKE为比较,%为通配符,ESCAPE '\\' 为换码字符,即转义字符,从查询以DB_ 开头且以 倒数第三个字母为i的字母的行
select 列名 from 表名 where 条件表达式 order by 列名 desc(asc)#指定列升序或者降序排列
#聚集函数:COUNT(),SUM(),AVG(),MAX(),MIN()等
select MAX(属性名) from 表名 where 条件表达式
#GROUP BY 对查询结果进行分组
select 列名 from 表名 group by 列名 having 条件             #对分组进行条件筛选
  • 集合查询(UNION,INTERSECT,EXCEPT)
select * fromwhere xxx UNION select * fromwhere xxx         #UNION 将多个查询结果合并起来 相当于OR
select * fromwhere xxx INTERSECT select * fromwhere xxx     #INTERSECT将多个查询结果合并起来  相当于AND 
select * fromwhere xxx EXCEPT select * fromwhere xxx        #EXCEPT 差,前者所查询的结果-后者查询到的结果
  • 连接查询(多表查询)
#表名1.列名 比较运算符  表名2.列名
select1.,2.from1,表2 where 条件
  • 嵌套查询

    • select-from-where 为一个查询块,将一个查询块嵌套在另一个where 中称为循环嵌套
    • select * from 表 where (select * from 表 where xx)
    • 不相关子查询:子查询的查询条件不依赖于父查询
    • 相关子查询:子查询的条件依赖父查询
    • 带有IN的子查询
    • select * from 表 where 列 IN ( select 列 from 表 where xx)
    • 带有比较运算符的子查询
      • 能确切的知道内层查询返回的是单值时,可以用比较运算符> < >= …
    • 带有ANY或ALL的子查询
      • 大于ANY 大于某一个值
      • 大于ALL 大于任意一个值
    • select 列 from 表名 where 列 > ANY( select * from 表 ...)
    • 带有EXISTS的子查询
    • select * from 表 where EXIST (select * from 表 where xx)
  • 数据定义
    在这里插入图片描述

    • 模式的定义
      • create schema 模式名 authorization 用户名 #为用户名定义一个模式,可以没有模式名,模式名默认为用户名
      • drop schema 模式名 <cascade / restrict> #cascade 级联,删除模式的同时把该模式所有数据都删除,restrict 如果定义了下属的数据库对象,则拒绝删除语句的执行。
    • 基本表的定义
      • 数据类型
        在这里插入图片描述
      • create table 表名 (列名 数据类型 约束条件,...)
      • alter table 表名 ADD/DROP/ALTER 列名 ...
      • drop table 表名 restrict/cascade #删除表,restrict 有限值的删除,如果存在依赖该表的对象,则不进行删除,cascade 强制删除
    • 索引的定义:为了加快查询速度
      • create unique/cluster index 索引名 on 表名(列名...) #cluster聚簇索引,一个基本表最多建立一个,unique 为唯一索引
      • drop index 索引名
  • 数据更新

    • 插入数据
    • insert into 表名 (属性列1,属性列2...) values (常量1,常量2...)
    • 修改数据
    • update 表名 set 列名 = 表达式,... where 条件表达式
    • 删除数据
    • delete from 表名 where 条件表达式
  • 视图

    • 特点
      • 从一个或者多个基本表中导出的表
      • 只存放视图的定义,不存放视图对应的数据
    • 定义视图
    • create view 视图名 列名1,列名2... as 子查询 with check option #自动检查属性是否为IS
    • 删除视图
    • drop view 视图名
    • 查询视图
    • select 属性列 from 视图名 where 条件
    • 更新视图
    • update 视图名 set 属性列 = 值 ... where 条件表达式e

End

发布了46 篇原创文章 · 获赞 75 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/UNIONDONG/article/details/105247630