计算机二级MySQL基本知识点.docx
- 文档编号:12271185
- 上传时间:2023-04-17
- 格式:DOCX
- 页数:96
- 大小:760.78KB
计算机二级MySQL基本知识点.docx
《计算机二级MySQL基本知识点.docx》由会员分享,可在线阅读,更多相关《计算机二级MySQL基本知识点.docx(96页珍藏版)》请在冰豆网上搜索。
计算机二级MySQL基本知识点
计算机二级MySQL基本知识点
※数据库:
数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。
※数据库管理系统:
是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。
※DBMS的主要功能:
①数据定义功能;
②数据操纵功能;
③数据库的运行和管理;
④数据库的建立和维护功能;
⑤数据库的通信功能(提供方便、有效存储数据库信息的接口和工具);
※数据库系统:
是指在计算机系统引入数据库后的系统;一个完整的数据库系统一般包括数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户构成。
※数据库系统的特点:
①数据结构化;
②数据独立性高;
③数据共享性好;
④数据冗余度低;
⑤数据由DBMS统一管理和控制;
※内模式:
对数据物理结构和存储方式的描述,是数据在数据库内部的具体表示方式。
※模式:
对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。
※外模式:
对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。
(外模式也称为子模式)
※三层模式使各层数据保持独立:
①层次独立性:
数据库的整体逻辑结构和特征的描述是独立于数据库其他层次结构的描述;
②存储模式独立性:
数据库的内部存储结构依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备;
③外模式独立性:
用户逻辑结构(外模式)是在全局逻辑结构的描述的基础上定义的,它面向具体的应用程序,独立于内部模式和存储设备。
④应用程序独立性:
特定的应用程序是在外模式描述的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。
※映象:
是一种对应规则,它指出映象双方是如何进行转换的。
※两层映象:
外模式/模式映象、模式/内模式映象。
※数据库系统的应用结构:
①客户/服务器(C/S)结构
优点:
运行速度快、表现能力强
缺点:
需要专门的客户端,不能跨平台
②浏览器/服务器(B/S)结构——eg:
XX、淘宝等网站。
优点:
基于网络语言,与操作系统无关,可以跨平台
※数据模型:
对现实世界数据特征的抽象。
※概念模型:
是面向数据库用户的现实世界的模型。
※模型:
对现实世界特征的模拟和抽象。
※实体:
客观存在并且可以相互区别的事物。
※属性:
实体所具有的某一特性。
※联系:
连接实体之间的一种关系。
※码:
唯一标识实体的属性集。
※域:
域是一组具有相同数据类型的值的集合。
※实体型:
同型实体的集合称为实体集。
※E/R图:
表示实体型、属性和联系的方法。
※E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。
表示方法如下:
·实体型:
用矩形表示,矩形框内写明实体名;
·属性:
用椭圆形表示,并用无向边将其与相应的实体连接起来;
·联系:
用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1:
1,1:
n或m:
n)。
※两个实体之间联系的种类:
①一对一联系(1:
1):
实体集A中的一个实体至多与实体集B中的一个实体相对应,反之亦然,则称实体集A与实体集B为一对一的联系。
记作1:
1。
如:
班级与班长,观众与座位,病人与床位。
②一对多联系(1:
n):
实体集A中的一个实体与实体集B中的多个实体相对应,反之,实体集B中的一个实体至多与实体集A中的一个实体相对应。
记作1:
n。
如:
班级与学生、公司与职员、省与市。
③多对多(m:
n):
实体集A中的一个实体与实体集B中的多个实体相对应,反之,实体集B中的一个实体与实体集A中的多个实体相对应。
记作(m:
n)。
※关系模式:
对关系的描述。
※主码(主键):
是表中的一个或多个字段,它的值用于唯一的标识表中的某一天记录。
※外码(外键):
用于建立和加强两个数据间的链接的一列或者多列。
※元组:
表中的行称为元组;
※行:
表中的一行记录,表中的数据都是按行存储的。
※列:
表中的一个字段,所有表都是由一个或者多个列组成的。
※关系模型规范化的设计方法:
通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常,删除异常,更新异常和数据冗余的问题。
※INF:
关系数据库中的关系要满足一定要求的,满足不同程度要求的为不同范式,满足最低要求的叫第一范式。
定义:
任给关系R,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R达到第一范式,简称1NF。
2NF:
若R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF
3NF:
每一个非主属性既不传递依赖于码,也不部分依赖于码。
BCNF:
如果一个关系R中所有属性都不传递依赖于R的任何候选关键字,或者说关系R的每个决定因数都是候选关键字时,则称关系R属于BCNF范式。
也即通过消除主键列对主键的部分函数依赖和传递函数依赖,将3NF规范为BCNF。
※数据库结构设计的不同阶段形成数据库的各级模式,即:
①在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图;
②在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后在基本表的基础上再建立必要的视图,形成数据的外模式;
③在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。
概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS支持的模式,属于数据模型的层次。
可以在DBMS中加以描述和存储。
课后总复习错题
10.设有E-R图,含有A、B两个实体,A、B之间的联系类型是M:
N,则将该E-R图转换为关系模式时,关系模式的数量是3.
解释:
一般情况下,在设计数据库的时候,如果存在多对多的情况
那么就必须将其分解为两个一对多的情况。
也就是说,两个实体多对
多的关系,分解后必然在它们之间再出现一个实体来连接它们的关系。
举个例子来说:
学生和课程之间它们是多对多的关系,因此在设计的时候
就需添加选课表了。
这样答案就是3.
当两个实体是一对多的关系时,那就不需要分解了,这是就是2.
15.数据库、数据库管理系统和数据库系统三者之间的关系是:
数据库系统包括数据库和数据库管理系统。
20.在讨论关系模型时,与“属性”同义的术语是列。
21.下列关于数据的叙述中,错误的是(A)
A.数据的种类包括文字、图形和图像三类;B.数字只是简单的一种数据;
C.数据是描述事物的符号记录;D.数据是数据库中存储的基本对象。
※phpMyAdmin:
是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具。
注意:
由于phpMyAdmin是PHP程序,因此需要LAMP或者WAMP运行环境。
※SQL:
结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。
※SQL的特点(优点):
①综合统一,具有一体化特点
②高度非过程化,是一种是面向对象的操作方式
③语言简洁、易学易用
※DDL:
数据定义语言
DML:
数据操纵语言
DCL:
数据控制语言
※比较运算符:
运算符
含义
=
相等
>
大于
<
小于
>=
大于等于
<=
小于等于
<>、!
=
不等于
!
!
>
不小于/不大于
※逻辑运算符:
运算符
含义
ALL
如果一组的比较都为TRUE,那么就为TRUE
AND/&&
如果两个布尔表达式都为TRUE,那么就为TRUE
ANY/SOME
如果一组的比较中其中有任何一个为TRUE,那么就为TRUE
BETWEEN
如果操作数在某个范围以内,那么就为TRUE
EXISTS
如果子查询中包含一些行,那么就为TRUE
IN
如果操作数等于表达式列表中的一个,那么就为TRUE
LIKE
如果操作数与一种模式相匹配,那么就为TRUE
NOT/!
对任何其他布尔运算符的值取反
OR/||
如果两个布尔表达式中的一个为TRUE,那么就为TRUE
※位运算符:
运算符
运算规则
&
位AND
|
位OR
^
位XOR
~
位取反
>>
位右移
<<
位左移
※内置函数的主要分类:
①数学函数:
用于执行一些比较复杂的算术操作的函数,例如ABS()函数、SORT()函数;
②聚合函数:
特意为求和或者对表中的数据进行集中概括而设计的函数;例如,COUNT()函数。
③字符串函数:
为2字符串操作而设计的函数;例如,ASCII()函数、CHAR()函数。
④日期和时间函数:
操作日期和时间的函数;例如,NOW()函数、YEAR()函数。
⑤加密函数:
对数据进行加密的函数;例如ENCODE()函数、ENCRYPT函数。
⑥控制流函数:
用来进行条件操作的函数;例如IF()函数。
⑦格式化函数:
为格式化数据设计的函数;例如FORMAT()函数。
⑧类型转化函数:
可以把一个值转换为指定的数据类型的函数;例如,CAST()函数。
⑨系统信息函数:
获得系统本身的信息的函数;例如USER()函数、VERSION()函数。
课后总复习错题
2.在MySQL中,NULL的含义是(C)
A.空串B.数值0C.无值D.FALSE
NULL和空串的区别:
NULL是指该字段没有值,而空串代表的是该字段有值。
5.在安装和配置MySQL实例的向导中,可选的MySQL服务器类型包括DeveloperMachine(开发者机器)、ServerMachine(服务器)、DedicatedMySQLServerMachine(专用MySQL服务器)
7.使用MySQL时,可以在MySQL客户端中执行SQL语句,但下面无法用于执行SQL语句的客户端工具是mysqld(C)。
A.mysql命令行B.phpMyAdminC.mysqldD.Navicat工具
8.函数NOW()返回的结果是系统的当前日期和时间。
※数据对象:
性质相同的数据元素的组合。
※数据类型:
系统中所允许的数据的类型。
※在MySQL中可以利用SHOWENGINES语句来显示可用的数据库引擎和默认引擎。
InnoDB是系统的默认引擎,其支持可靠的事务处理。
※一般语法描述所使用的符号如下:
<>:
表示在语句中必须指定数据对象,是不可缺少的。
[]:
表示可以根据需要进行选择。
|:
表示多个选项只能选择其一。
{}:
表示必选项。
问题:
mysql命令行输入时,忘记输入分号;就按了回车,就会出现->,然后回不到上一行怎么办?
若是没有分号结束的话,不管多少行都会视作一句,如果已经输好了程序但是忘了输入分号按了回车,接着在出现->的后边输入分号即可,然后按回车就会执行前面的sql。
例1:
在MySQL中创建一个名为mytest的数据库。
Mysql>Createdatabasemytest;
可以在这里加上ifexists用于判断是否存在这个数据库,用于防止数据库不存咋时发生错误。
例2:
修改已有数据库mytest的默认字符集和校对规则。
Mysql>alterdatabasemytest
->defaultcharactersetgb2312
->defaultcollategb2312_chinese_ci;
其中characterset子句用于更改默认的数据库字符集。
例3:
首先删除一个尚未创建的数据库“an_test”,然后在删除语句中加上ifexists语句以后再操作一次。
出现报错的现象;
加上ifexists语句以后,可以正常执行;
Mysql>dropdatabaseifexistsan_test;
例4:
列出当前用户可查看的数据库列表。
Mysql>showdatabases;——显示权限范围内的所有数据库名;
Mysql>showdatabaseslike'mytest';——显示与‘mytest’相匹配的数据库名。
例5:
在一个已有的数据库mytest中新建一个包含姓名、性别、年龄、专业、联系方式等字段的学生的基本信息表,要求将字段student_id号指定为该表的主键,并使用InnoDB引擎存储表数据。
mysql>usemytest
Databasechanged
mysql>createtablestudents
->(
->student_idintnotnullauto_increment,
->student_namechar(50)notnull,
->student_sexchar
(1)notnulldefault0,
->student_ageintnotnull,
->student_majorchar(50)notnull,
->student_contactchar(50)null,
->primarykey(student_id))
->engine=innodb;
※在mysql中写sql语句回车后如何更改上一句话?
右键单击“mysql”的“dos窗口”上面的蓝色横条
选择编辑->标记->然后按住鼠标左键选中你要修改的语句,再去右击蓝色横条选择编辑->复制就把这条你要修改的语句复制到剪贴板了然后去记事本里粘贴修改!
在记事本里写好命令复制,然后右键单点“mysql”的“dos窗口”上面的蓝色横条编辑->粘贴然后执行,当然这只是windows下的办法,要一次执行很多行代码的时候比较省事。
例6:
向数据库mytest的表students中添加一列,并且命名为student_from,用于描述学生的生源地,要求不能是NULL,且该列位于原表列student_sex列之后。
Mysql>usetablemytest.students
->addcolumnstudent_fromchar(10)notnullafterstudent_sex;
※change子句:
同时修改表中指定列的名称和数据类型。
例7:
将数据库mytest中标students的student_from列重命名为student_city,且数据类型为char(20),允许为NULL。
Mysql>altertablemytest.students
->changecolumnstudent_fromstudent_citychar(20)null;
※Alter子句可以修改或者删除表中指定列的默认值。
例8:
将数据库mytest中表students的student_sex列的默认值改为1(代表‘女’).
Mysql>altertablemytest.students
->altercolumnstudent_sexsetdefault1;
※modify子句可以修改指定列的数据类型,但不会干涉它的列名。
与change的区别:
change是可以将列名和数据类型都一起改了的。
例9:
将数据库mytesr中的表students的students_name列的数据类型由char(50)更改为char(20),并且将此列设置为该表的第一列。
Mysql>altertablemytest.students
->modifycolumnstudent_namechar(20)first;
注意:
add和modify都可以通过first或者after关键字来修改指定列在表中的位置。
例10:
删除数据库mytest中students的student_contact列。
Mysql>altertablemytest.students
->dropcolumnstudent_contct;
※rename子句可以为表重新赋予一个表名。
例11:
使用rename子句,重新命名数据库mytest中表students的表名为university_students.
Mysql>altertablemytest.students
->renametomytest.university_students;
或者使用另一种格式:
例12:
使用renametable子句将数据库中mytest的university_students重新命名为students
Mysql>renametablemytest.university_studentstomytest.students;
※复制表的语法格式:
Createtable<表名>[LIKE|AS<旧表名>]
LIKE:
可以创建一个与旧表结构相同的表,其中列名、数据类型、空指定和索引都将复制到新表,但是表的内容不会复制,因此创建的是一个和原表结构相同的空表;
AS:
如果在复制表结构的同时,复制表的内容,可以用AS子句来完成。
使用AS子句可以复制表的内容,但是索引和完整性约束不会被复制。
例13:
在数据库mytest中创建一份表students的拷贝students_copy。
Mysql>createtablemytest.students_copylikemytest.students;
※删除表:
可以使用droptable子句删除表(可以同时删除多个表)
例14:
删除数据库mytest的表students_copy。
Mysql>droptablemytest.students_copy;
※显示表的名称:
showtables
方法一:
Mysql>usemytest;
Mysql>showtables;
这里的use引用了数据库以后也可以不用“;”直接就接下一个showtables;
方法二:
Mysql>showtablesfrommytests;
※显示表的结构:
showcolumns(可以理解为每一列相当于属性,也即为表中的结构)
例16:
显示数据库mytest中表students的结构。
Mysql>showcolumnsfrommytest.students;
注意:
mysql支持用describe或者desc作为showcolumnsfrom的一种快捷方式。
Mysql>descmytest.students;
※关于空值(NULL):
表的关键字不允许为空值,且任意两个空值不相等。
※关于标志(IDENTITY)属性:
每个表中只有一个列设置为标志属性,并且该列只能是DECIMAL、INT、NUMERIC、SMALLINT、BIGINT、TINYINT数据类型。
※关于列类型的隐含改变:
①长度小于4的VARCHAR类型会被改变为CHAR类型;
②当一张表中包含任何变长的列时,如VARCHAR、TEXT、BLOB类型的列,该表中所有大于3个字符的其他CHAR类型列会被改变为VARCHAR类型列;
③TIMESTAMP类型的列值显示尺寸必须是在偶数2~14范围内;
④不能在TIMESTAMP中存储空值NULL,所以当该列的值设置为NULL的时候,MySQL会默认设置为它当前的日期时间。
课后总复习错题
5.查看当前正在使用的工作数据库名称的语句是(C)
A.SHOWDATABASES;B.SHOWTABLES;
C.SELECTDATABASE();D.SHOWSCHEMAS;
6.在MySQL数据库中,以下不会受字符集设置影响的数据类型有(B)
A.CHARB.INTC.VARCHARD.TEXT
(参见以上资料——列类型的隐含改变)
※INSERT语句的三种形式:
①INSERT…VALUES:
向表中插入一行数据,也可以插入多行数据;
②INSERT…SET:
指定插入行中每列的值,也可以指定部分列的值;
③INSERT…SELECT:
向表中插入其他表的数据;
例1:
使用INSERT…VALUES语句向数据库mytest的表students中插入这样一行完整数据:
(1320,‘王丽’,‘1’,22,‘计算机专业’,‘138xxxxxx’)。
Mysql>setnamesgbk;/*改变字符集*/
mysql>insertintomytest.students
->values('王丽',1320,'1','138xxxxxx',22,'计算机专业');
由于表的结构如下:
+---------------+----------+------+-----+---------+----------------+
|Field|Type|Null|Key|Default|Extra
+---------------+----------+------+-----+---------+----------------+
|student_name|char(20)|YES||NULL|
|student_id|int(11)|NO|PRI|NULL|auto_increment
|student_sex|char
(1)|NO||1|
|student_contact|char(20)|YES||NULL|
|student_age|int(11)|NO||NULL|
|student_major|char(50)|NO||NULL|
+---------------+----------+------+-----+---------+----------------+
应该按照显示的表结构输入数据。
注意:
在MySQL不能输入中文或者现实不出中文的时候,可以使用SETNAMESGBK;语句来临时改变字符集。
例2:
使用INSERT…VALUES语句向数据库mytest表students中插入一行数据,这行数据只给出student_name、student_major和student_age列的信息,对应的值是“李明”、“数学专业”,“22”,其中student_id由系统自动生成,其他采用默认或者不指定值。
mysql>insertintomytest.students
->values('李明',0,default,null,22,'数学专业');
※其中的0代表的是学号;由于AUTO_INCREMENT属性列的值是在表中其它列被赋值以后生成的,所以在对表中其它列做任何赋值操作时,对该AUTO_INCREMENT属性列的引用只会返回数字0.
还有一种方法:
由于自动增长大的学号值可以不必列出,由系统自动生成,同时允许NULL值的列也可以不给出,因为系统允许其为空值,只需要输入提供的值即可。
Mysql>insertintomytest.students
->(student_name,student_sex,student_age,student_major)
>values('李明',DEFAULT,22,'数学专业');
这种方法的好处是不必知道表结构,不会出现输入列与结构不对应的情况。
例3:
使用INSERT…SET语句来实现例2的数据插入需求。
Mysql>insertintomytest.students
->set
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 计算机 二级 MySQL 基本 知识点