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. JavaScript学习总结(七)Ajax和Http状态字

    转自:http://segmentfault.com/a/1190000000691919 Ajax及其工作原理 AJAX 是一种与服务器交换数据无需刷新网页的技术,最早由Google公司在谷歌地图里 ...

  2. 在HADOOP中使用MRUNIT进行单元测试

    在HADOOP中使用MRUNIT进行单元测试 前提 1. 了解JUnit4.x的使用. 2. 了解Mock的概念在单元测试中的应用. 3. 了解Hadoop中MapReduce的编程模型. 如果您对J ...

  3. IDEA 中tomcat上面有个x 而且找不到配置tomcat的选项

    在使用idea时候,准备启动服务器,tomcat突然上面有个xx 解决方式 在 File-settings-plugins 搜索tomcat 如果插件后面有 就重新取消之后再勾选,然后点应用就可以解决 ...

  4. tomcat启动后access error[730048]的解决方法

    安装了JDK... 配置了系统变量... 解压了tomcat... 配置了系统变量... 点击startup.bat启动了以后,打开浏览器,出现access error 404错误. 仔细看过控制台输 ...

  5. (七)spring+druid多数据源配置

    druid多数据源配置 一.druid简介 Druid首先是一个数据库连接池,但它不仅仅是一个数据库连接池,它还包含一个ProxyDriver,一系列内置的JDBC组件库,一个SQL Parser. ...

  6. 通过pl/sql连接远程Oracle数据库

    通过PL/SQL连接远程数据库,简单的方式就是安装Oracle客户端,还有一种方式就是不安装客户端,但是需要自己创建必要的配置文件,下面主要对安装客户端的过程简单做一下记录. 网上一个不安装客户端的教 ...

  7. 怎样解决使用feof()函数时出现的问题?

    feof函数        昨天在做一个课程设计时,一个函数的功能是将文件中的数据一条条的读到链表中去.既然不确定有多少条数据,那只能借助feof()函数了,本来文件部分就没学好,也就知道这一个方法. ...

  8. 8.【Spring Cloud Alibaba】配置管理-Nacos

    使用Nacos管理配置 架构图 配置文件遵循的格式 bootstrap.yml pom.xml <dependency> <groupId>org.springframewor ...

  9. 基于arduino的红外传感系统

    一.作品背景 在这个科技飞速发展的时代,物联网已经成为了我们身边必不可少的技术模块,我这次课程设计做的是一个基于arduino+树莓派+OneNet的红外报警系统,它主要通过识别人或者动物的运动来判断 ...

  10. Hexo+github如何搭建博客

    前言 博客有第三方平台,也可以自建,比较早的有博客园.CSDN,近几年新兴的也比较多诸如:WordPress.segmentFault.简书.掘金.知乎专栏.Github Page 等等. 这次我要说 ...