SQL的特点:是一个综合的、功能极强并且简洁容易学的语言。

SQL的功能:数据查询、数据操纵、数据定义、数据控制。

数据库系统的主要功能是通过数据库支持的数据语言来实现。

菲关系模型(层次模型、网状模型)的数据语言分为:

  1. DDL:数据定义语言(用来维护存储数据的结构,例如:数据库、表等)。
  2. DML:数据操纵语言(对数据进行操作,也就是对数据表的内容进行操作)。
  3. DSDL:数据存储有关的描述语言。

SQL的特点:

  1. 综合统一:集数据定义语言、数据操纵语言、数据控制语言的功能与一体,语言风格统一,可以独立完成数据库生命周期中的全部活动;在关系模型中实体与实体之间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性。
  2. 高度非过程化:只要提出“做什么”,不用指明“怎么做”,因此无须了解存取路径,存取路径的选择以及SQL的操作过程由系统自动完成。
  3. 面向集合的操作方式:非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录,但SQL采用集合操作方式,不仅操作对象、查找结果可以使元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
  4. 以同一种语法结构提供多种使用方式:SQL既是独立的语言,又是嵌入式语言。作为独立语言,它能够独立的用于联机交互的使用方式,用户可以在终端键盘上直接敲入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句可以嵌入到高级语言(C,C++,Java)程序中,供程序员设计程序时使用。
  5. 语言简洁、易学易用:SQL功能极强,语言十分简洁。核心功能只用了9个动词(数据查询:SELECT;数据定义:CREATE、DROP、ALTER;数据操纵:INSERT、UPDATE、DELETE;数据控制:GRANT、REVOKE)

补充:

  • 基本表和视图一样,都是关系。
  • 基本表是本身独立存在的表,在关系数据库管理系统中一个关系对应一个基本表。
  • 一个或多个基本表对应一个存储文件,一个表可以带若干索引,这些索引存放在存储文件中
  • 存储文件的逻辑结构组成了关系数据库的内模式,存储文件的物理结构对最终用户是隐蔽的。
  • 视图是从一个或多个基本表导出来的,它本身不独立存储的数据库中,所以视图是一个虚表。

数据定义:

关系数据库系统支持三级模式结构,其模式、外模式、内模式中的基本对象是模式、表、索引。因此SQL的数据定义包括模式定义、表定义、视图和索引的定义。

SQL标准不提供修改模式定义和修改视图定义的操作。如果想修改这些对象,只能先将它们删除然年再重建,SQL标准也没用提供索引相关的语句。

一个数据库管理系统的实例中可以建多个数据库,一个数据库中可以建立多个模式,一个模式下通常包括多个表、视图和索引等数据。

  • 定义模式:

CREATE SCHEMA <模式名> AUTHORIZATION <用户名>;

如果没有指定<模式名>,那么<模式名>隐含为<用户名>。要创建模式,调用该命令的用户必须拥有数据库管理员权限,或者获得了数据库管理员授予的CREATE SCHEMA的权限。

定义模式实际上定义了一个命名空间,在这个空间中可以进一步定义该模式包含的数据库对象,例如基本表、视图、索引等。

  • 删除模式:

DROP SCHEMA <模式名> <CASCADE|RESTRICT>;

其中CASCADE和RESTRICT必须二选一,选择了CASCADE(级联),表示在删除模式的同时把该模式中所有的数据库对象全部删除;选择了RESTRICT(限制),表示如果该模式中已经定义了下属的数据库对象,则拒绝删除语句的执行,只有当该模式中没有任何下属的对象时才能执行。

  • 定义基本表

创建了一个模式就建立了一个数据库的命名空间,一个框架。

CREATE TABLE <表名> (<列名> <数据类型> [列级完整性约束条件]

,<列名> <数据类型> [列级完整性约束条件]

……

,[<表级完整性约束条件>]);

建表的同时可以定义与该表有关的完整性约束条件,这些完整性约束条件被存入系统的数据字典中,如果完整性约束条件涉及表中的多个属性列,则必须定义在表级上,否则可以定义在列级也可以定义在表级。有主码时要在主码那一列定义完后面加上“PRIMARY KEY”,标识为主码。如果有外码和被参照表以及被参照列,在完整性约束条件定义完后加上相应标识,外码“FOREIGN KEY”,被参照表“REFERENCES”,被参照列加上“()”就行。参照表和被参照表可以是同一个表。

数据类型:

  • 修改基本表

ALTER TABLE<表名>

[ADD [COLUMN] <新列名> <数据类型> [完整性约束]]

[ADD <表级完整性约束>]

[DROP [COLUMN] <列名> [CASCADE|RESTRICT]]

[DROP CONSTRAINT<完整性约束> [CASCADE|RESTRICT]]

[ALTRE COLUMN <列名> <数据类型>];

其中<表名>是要修改的基本表,ADD字句用于增加新的列、新的列级完整性约束条件和新的表级完整性约束条件。DROP COLUMN字句用于删除表中的列。DROP CONSTRAINT字句用于删除指定的完整性约束条件。ALTER COLUMN 字句用于修改原有的列定义,包括修改列名和数据类型。

  • 删除基本表

DROP TABLE <表名> [CASCADE|RESTRICT];

索引:

建立索引是加快查询素的有效手段。

数据库索引有多种类型,常见索引包括顺序文件上的索引、B+树索引、散列索引、位图索引等,索引虽然能加快数据库查询速度,但需要占用一定的存储空间,当基本表跟新时,索引要进行相应的维护,这些都会增加数据库的负担。

一般来说,建立与删除索引由数据库管理员或表的属主,即建立表的人,负责完成。关系数据库管理系统在执行查询时会自动选择合适的索引作为存取路径,用户不必也不能显示地选择索引。索引是关系数据库管理系统的内部实现技术,属于内模式的范畴。

  • 建立索引

CREATE [UNIQUE] [CLUSTER] INDEX <索引名>;

ON <表名>(<列名> [<次序>][,<列名>[<次序>]]……);

其中,<表名>是要建立索引的基本表的名字。索引可以建立在该表的一列或多列上,各列名之间用逗号隔开。每个<列名>后面还可以用<次序>指定索引值的排列次序,可选ASC(升序)或DESC(降序),默认值为ASC。

UNIQUE表明此索引的每一个索引值只对应唯一的数据记录。CLUSTER表示要建立的索引是聚簇索引。

  • 修改索引

ALTER INDEX <旧索引名> RENAME TO <新索引名>;

  • 删除索引

索引一经建立就由系统使用和维护,不需用户干预。建立索引是为了减少查询操作的时间,但如果数据增、删、改频繁,系统会花费许多时间来维护,从而降低了查询效率。这时可以删除一些不必要的索引。

DROP INDEX <索引名>;

删除索引时,系统会同时从数据字典中删去有关该索引的描述。

数据字典

数据字典是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息,包括关系模式定义、视图定义、索引定义、完整性约束定义、各类用户对数据库的操作权限、统计信息等。关系数据库管理系统在执行SQL的数据定义语句时,实际上就是在更新数据字典表中的响应信息。在进行查询优化和查询处理时,数据字典中的纤细是其重要依据。

MySQL第三章知识第一部分的更多相关文章

  1. 【Mysql优化三章】第一章

    版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Bv5f4b8Peex/article/details/78130845 如今网上的好多mysql优化 ...

  2. Head First PHP&MySQl第三章代码

    addemail.html <!DOCTYPE html> <html lang="cn"> <head> <meta charset=& ...

  3. Mysql优化方面的知识

    Mysql优化方面的知识 第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避 ...

  4. 20165233 Java第二、三章学习总结

    2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.sh ...

  5. 《Mysql 公司职员学习篇》 第三章 小A的疑问

    第三章 小A的疑问  ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...

  6. C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容

    内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用 ...

  7. Java基础知识二次学习--第三章 面向对象

    第三章 面向对象   时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...

  8. 第三章 MySQL高级查询(一)

    第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1.       DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...

  9. Mysql架构与内部模块-第一章

    Mysql作为大多数中小型企业的首选数据库,也可能是众多同僚接触的第一个数据库,其热门程度不言而喻,一些相对基础的知识本系列不做赘述,主要简述Mysql相关的进阶知识. 本章将由浅入深的讲解从连接My ...

随机推荐

  1. node-sass 安装失败的各种坑

    开始的时候引入别人的一个项目 npm install npm run dev 启动项目 报错 > node build/dev-server.js Listening at http://loc ...

  2. OpenCV 对两幅图像求和(求混合(blending))

    #include <cv.h> #include <highgui.h> #include <iostream> using namespace cv; int m ...

  3. 10X genomics|cell base|in-vivo based|model organisms|SBI|

    生命组学-药物基因组学 精准医学的内容有个人全基因组测序,移动可穿戴设备,它可以实时监测,深度学习模型预测疾病,对疾病预测做到有效.安全和可控. 药物基因组学就是研究疾病.化合物和靶点之间的关系,关键 ...

  4. python3多线程爬虫(第一卷)

    多进程虽然使用方便,可以充分利用CPU,但是由于个进程之间是并行且各自有自己的数据存储,所以很难进行数据间的通信,需要接入第三方模块,现在我依旧用糗事百科讲解下多线程的应用,举个例子之前用4个进程同时 ...

  5. 吴裕雄--天生自然HTML学习笔记:HTML 元素

    HTML 文档由 HTML 元素定义. HTML 元素 开始标签 * 元素内容 结束标签 * <p> 这是一个段落 </p> <a href="default. ...

  6. 转发: python3.7下 Flask-SQLAlchemy中解决1366报错

    原链接:https://segmentfault.com/a/1190000010596306 详情: 安装MySQL驱动(我升级过Python,所以要再装一遍) 本想安装MySQL官方驱动mysql ...

  7. python标准库:datetime模块

    原文地址:http://www.bugingcode.com/blog/python_datetime.html datatime 模块题共用一些处理日期,时间和时间间隔的函数.这个模块使用面向对象的 ...

  8. 分布式ID生成策略 · fossi

    分布式环境下如何保证ID的不重复呢?一般我们可能会想到用UUID来实现嘛.但是UUID一般可以获取当前时间的毫秒数再加点随机数,但是在高并发下仍然可能重复.最重要的是,如果我要用这种UUID来生成分表 ...

  9. 面试的绝招(V1.0)

    <软件自动化测试开发>出版了 测试开发公开课培训大讲堂 微信公众号:测试开发社区 测试开发QQ群:173172133 咨询QQ:7980068 咨询微信:zouhui1003it

  10. Linux下多线程复制文件(C)

    Linux下实现多线程文件复制,使用<pthread.h>提供的函数: int pthread_create(pthread_t *thread,const pthread_attr_t ...