第二章 关系数据库标准语言 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.修改操作

 

 

 

原文地址:https://www.cnblogs.com/zhaoyiyao/p/13738394.html