MySQL第三章知识第一部分
SQL的特点:是一个综合的、功能极强并且简洁容易学的语言。
SQL的功能:数据查询、数据操纵、数据定义、数据控制。
数据库系统的主要功能是通过数据库支持的数据语言来实现。
菲关系模型(层次模型、网状模型)的数据语言分为:
- DDL:数据定义语言(用来维护存储数据的结构,例如:数据库、表等)。
- DML:数据操纵语言(对数据进行操作,也就是对数据表的内容进行操作)。
- DSDL:数据存储有关的描述语言。
SQL的特点:
- 综合统一:集数据定义语言、数据操纵语言、数据控制语言的功能与一体,语言风格统一,可以独立完成数据库生命周期中的全部活动;在关系模型中实体与实体之间的联系均用关系表示,这种数据结构的单一性带来了数据操作符的统一性。
- 高度非过程化:只要提出“做什么”,不用指明“怎么做”,因此无须了解存取路径,存取路径的选择以及SQL的操作过程由系统自动完成。
- 面向集合的操作方式:非关系数据模型采用的是面向记录的操作方式,操作对象是一条记录,但SQL采用集合操作方式,不仅操作对象、查找结果可以使元组的集合,而且一次插入、删除、更新操作的对象也可以是元组的集合。
- 以同一种语法结构提供多种使用方式:SQL既是独立的语言,又是嵌入式语言。作为独立语言,它能够独立的用于联机交互的使用方式,用户可以在终端键盘上直接敲入SQL命令对数据库进行操作;作为嵌入式语言,SQL语句可以嵌入到高级语言(C,C++,Java)程序中,供程序员设计程序时使用。
- 语言简洁、易学易用: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第三章知识第一部分的更多相关文章
- 【Mysql优化三章】第一章
版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/Bv5f4b8Peex/article/details/78130845 如今网上的好多mysql优化 ...
- Head First PHP&MySQl第三章代码
addemail.html <!DOCTYPE html> <html lang="cn"> <head> <meta charset=& ...
- Mysql优化方面的知识
Mysql优化方面的知识 第一方面:30种mysql优化sql语句查询的方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避 ...
- 20165233 Java第二、三章学习总结
2017-2018-2 <Java程序设计>第二周学习总结 教材学习内容总结 第二.三章 ch2 标识符与关键字 基本数据类型: 逻辑类型:boolean 整数类型:int.byte.sh ...
- 《Mysql 公司职员学习篇》 第三章 小A的疑问
第三章 小A的疑问 ---- 数据类型和自增列 小A拿着鸡腿,回到了房间里面,咬了一嘴油,说:"我有2个疑问,在Excell里面,像列PetAge(宠物年龄)这样的数字,我一般会设置成数值 ...
- C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容
内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用 ...
- Java基础知识二次学习--第三章 面向对象
第三章 面向对象 时间:2017年4月24日17:51:37~2017年4月25日13:52:34 章节:03章_01节 03章_02节 视频长度:30:11 + 21:44 内容:面向对象设计思 ...
- 第三章 MySQL高级查询(一)
第三章 MySQL高级查询(一) 一.SQL语言的四个分类 1. DML(Data Manipulation Language)(数据操作语言):用来插入,修改和删除表中的数据,如INSE ...
- Mysql架构与内部模块-第一章
Mysql作为大多数中小型企业的首选数据库,也可能是众多同僚接触的第一个数据库,其热门程度不言而喻,一些相对基础的知识本系列不做赘述,主要简述Mysql相关的进阶知识. 本章将由浅入深的讲解从连接My ...
随机推荐
- Javascript 表达式中连续的 && 和 || 之赋值区别
为了区分赋值表达式中出现的连续的 ‘&&’和 ‘||’的不同的赋值含义,做了一个小测试,代码如下: function write(msg){ for(var i = 0; i ...
- QT "debugger unknow type"问题解决办法
windows上使用qt编译有两种,一种是vs的编译器,一种是MinGW的. 这种问题主要是发生在选择了MSVC2013编译器的版本,这个版本的qt需要再装一个调试器,而MinGW不用. 解决办法:下 ...
- Ubuntu gnome安装Monaco字体,FontForge module is probably not installed
首先下载原始Monaco字体,注意我只找到了这一款在ubuntu的gnome下可见,其他的各种monaco即使安装了也看不到. https://gist.github.com/epegzz/16342 ...
- LG_2869_[USACO07DEC]美食的食草动物Gourmet Grazers
题目描述 Like so many others, the cows have developed very haughty tastes and will no longer graze on ju ...
- IDEA如何自动添加注解作者等信息?
1.点击File 2.点击Settings 3.点击Editor 4.点Live Templates 5.点击左上角加号选中第2个 6.自定义命名,选中你自己创建的组,点击左上角加号选择第1个选项 ...
- 你相信吗:新药可以让X战警变成现实
不管男人还是女人.大人还是小孩,心目中都有一个超级英雄梦,梦想着有一天能够具有超级英雄的能力.直到今天,你相信吗?现在医学工作者已经发现通过一种新药可以让人拥有X战警里一些超级英雄的能力 ...
- linux记录每次登陆的历史命令
编辑/etc/profile,增加如下代码 #Record history operation USER_IP=`>/dev/null |awk '{print $NF}' |sed -e 's ...
- Qt 隐藏标题栏 窗口移动 鼠标事件
摘要 隐藏标题栏 头文件声明鼠标移动虚函数 .cpp文件实现功能 1 setWindowFlags(Qt::FramelessWindowHint | windowFlags()); 无标题栏移动窗体 ...
- nginx 502排错
线上一台机器(该论坛所在机器)近期频繁出现502,每100次访问就会出现10次,这频率也太高了.于是开始了我的502排查之旅 ps aux |grep -c php 结果为200 netstat -a ...
- OpenGL的矩阵使用——绘制桌子
其中最左边的桌子循环上移(即匀速上移到一定位置后回到原点继续匀速上移),中间的桌子不断旋转(即绕自身中间轴旋转),最右边的桌子循环缩小(即不断缩小到一定大小后回归原来大小继续缩小). 桌子的模型尺寸如 ...