zoukankan      html  css  js  c++  java
  • 第二章 关系数据库标准语言 SQL

    一.SQL概述

    1.SQL:

    (1..数据定义:用于定义数据库的逻辑结构、包括定义表、视图和数据库以及索引

    (2..数据操纵:包括插入、修改和删除数据的操作

    (3.数据查询

    (4.数据控制:包括对数据的安全性控制、完整性规则的描述以及对事务的控制语句

    2.SQL的主要特点

    综合统一

    高度非过程化

    面向集合的操作方式

    以同一种语法结构提供两种使用方式:

    (1.)自含式语言可以使用交互命令,适用于终端用户、应用程序员和DBA

    (2.)嵌入式语言使其嵌入在高级语言(JAva,Python等)使用,供应用程序员开发应用程序。

     3.SQL的基本概念:

    SQL支持的数据库的三级模式结构:外模式、模式、内模式

    对应的数据库对象是:视图、基本表、和基本表的索引

     

     模式:也称为概念模式,是数据库中全体数据的逻辑结构和特征的描述,综合了所有用户的数据需求,并将其有机地结合成一个逻辑整体,具有最小冗余

    一个数据库只有一个·模式

    定义模式时不仅要定义数据的逻辑结构,如数据由哪些数据项构成,数据项的名字、类型

    取值范围等,而且要求定义数据之间的联系、与数据相关的安全性、完整性要求;

    DBMS提供模式描述语言定义模式

    外模式也称为子模式,是数据库用户(或应用程序员)能够看见和使用的局部数据的逻辑结构和特征的描述、

    对应数据库用户的数据视图。

    外模式通常是模式的子集

    一个模式可有多个外模式

    外模式是保证数据库安全性的一个有力措施,每个用户只能看见和访问所对应的外模式的数据,数据库中其余数据是不可见的。

    DBMS提供外模式描述语言来定义外模式

    内模式:

    内模式也称为存储模式,它是对数据物理结构和存储方式的描述,是数据在数据库内部的表示方式

    一个数据库只有一个内模式

    内模式记录了模式数据对应的数据(表)空间和存储模式(两者一般同名)以及访问路径,RDBMS据此向操作系统(OS)发出读取文件记录的命令,OS的文件管理系统将其映射成真正的物理访问。

    存储文件的物理文件结构对用户是透明的。

    DBMS提供内模式描述语言定义内模式

    二.数据定义

     1.数据库的创建与管理

    Mysql提供了对数据库管理的语句,包括创建数据库、修改数据库、删除数据库等

    (1)创建数据库

    格式:

     例子:

    例如:创建一个名为jwgl的数据库,要求该数据库为utf8编码:
    create database|schema if not exists jwql
    default character set ='utf8'

    (2)修改该数据库:

    alter database jwql charsctre set utf8

    (3)删除数据库

    drop database jwql

     2.表的创建和管理

    数据表是数据库中非常重要的对象,对数据表的操作也使用DDL语句,包括对表的创建、修改、和删除以及添加表的约束等。

    (1.)创建表

     

     (2)数值类型数据

    由数字字符(0~9)小数点和正负号组成

    主要有

     

     

    注意:关于NULL的说明

    NULL值不是一种数据类型,也与0.空字符串和空格不同,不能参与大小或者相等比较,但排序优先于其他数据;

    SQL语言中允许不填写元组的某个属性的值,这时属性的值为空值。空值有三种含义:

    一种是该属性应该有一个值,但目前不知道它的具体值

    第二种是该属性不应该有值

    第三种是由于某种原因不便于填写

    (2)修改表

     

     (3.)删除基本表

    3.表索引的创建和管理

    (1)什么是索引

    访问数据库数据的两种方法:

    表扫描法/使用索引

    索引是按着索引表达式(索引关键字)使数据表中数据记录有序的一种技术、类似于书的目录。

    谁可以建立索引?--数据库管理员或表的属主(即建立表的人)

    谁维护索引?--关系数据库管理系统自动完成·

    使用索引--关系数据库管理系统自动选择合适的索引作为存取路径,用户不必也不能显示地选择索引

    (2)索引的作用

    加快数据的检索速度

    创建唯一性索引,保证数据记录的唯一性

    实现表与表之间的参照完整性

    加速表与表之间的连接

    在使用分组和排序子句进行数据检索时,可以显著减少查询中分组和排序的时间。

     (3)索引的代价

    创建索引需要占用磁盘空间并且花费一定时间

    索引会减慢数据修改速度

    (4)索引的分类

    按数据的存储结构分:聚集索引/非聚集索引

    按数据的唯一性分:唯一索引/非唯一索引

    按键列的个数分:单列索引/多列索引(复合索引、多重索引)

     聚集索引:是指索引项的顺序与表中记录的物理顺序一致的索引组织

    一个表中只能有一个聚集索引(Mysql中的聚集索引无法控制)

    非聚集索引:非聚集索引并不改变数据表的存储顺序,而是建立一个·由指针构成的索引文件,这些指针逻辑上按照索引关键字的值进行排序。索引文件和表文件分别存储。

    可为一个数据表建立多个非聚集索引,每个索引决定了该数据表记录的一种逻辑顺序

    Mysql中提到:一个表中最多16个索引,最大索引长度256字节

    唯一索引:唯一索引表示表中每一个索引值只对应唯一的数据记录,这与表中PRIMARY KEY 的特性类似,但又有区别:

    当表中有被设置为UNIQUE的字段时,Mysql会自动建立一个非聚集的唯一性索引。

    当表中有PRIMARY KEY的字段时,Mysql会建立一个聚集索引。

    此外,唯一索引在一个表中可建多个,且值可为NULL

    复合索引(多重索引)

    复合索引是将两个字段或多个字段组合建立的索引,而单独的字段允许有重复的值。

    如:(班级,性别,学号)注意:多重索引的索引·的顺序不能随意更改

     (5)索引的建立

     

     (6)修改索引

     (7)索引的删除

     小结:改变表中的数据(如增加或者删除数据)使,索引会自动更新。

    索引建立后,在查询使用该列时,系统将可能自动使用索引进行查询

    索引数目最多可达到16/249个,但索引越多,更新数据的速度越慢

    对于仅用于查询的表可在频繁查询的列上多建索引,对于数据更新频繁的表则应该少建索引

    4.数据更新

    1.插入操作:

     

     

     

     2.修改操作

     

     

     

  • 相关阅读:
    js 类型转换学习
    Prototypes in Javascript 收集.__proto__
    不想说作用域scope,因为是scopeTree,
    在家学习 利器 记录每日点滴
    图片切换特效的分析和学习
    js 无缝滚动效果学习
    MySQL 在高并发下的 订单撮合 系统使用 共享锁 与 排他锁 保证数据一致性
    (二)区块链的共识算法:PoS 及其 例子 代码 实现
    以太坊: ETH 发送交易 sendRawTransaction 方法数据的签名 和 验证过程
    Golang 的 协程调度机制 与 GOMAXPROCS 性能调优
  • 原文地址:https://www.cnblogs.com/zhaoyiyao/p/13738394.html
Copyright © 2011-2022 走看看