《计算机二级MySQL基本知识点(48页).doc》由会员分享,可在线阅读,更多相关《计算机二级MySQL基本知识点(48页).doc(47页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-计算机二级MySQL基本知识点-第 47 页计算机二级MySQL基本知识点数据库:数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库管理系统:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。DBMS的主要功能:数据定义功能;数据操纵功能;数据库的运行和管理;数据库的建立和维护功能;数据库的通信功能(提供方便、有效存储数据库信息的接口和工具);数据库系统:是指在计算机系统引入数据库后的系统;一个完整的数据库系统一般包括数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户构成。数据库系统的特点:数据结构化;数据独立性高;数据共享性好;数据
2、冗余度低;数据由DBMS统一管理和控制;内模式:对数据物理结构和存储方式的描述,是数据在数据库内部的具体表示方式。模式:对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式:对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。(外模式也称为子模式)三层模式使各层数据保持独立:层次独立性:数据库的整体逻辑结构和特征的描述是独立于数据库其他层次结构的描述;存储模式独立性:数据库的内部存储结构依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备;外模式独立性:用户逻辑结构(外模式)是在全局逻辑结构的描
3、述的基础上定义的,它面向具体的应用程序,独立于内部模式和存储设备。应用程序独立性:特定的应用程序是在外模式描述的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。映象:是一种对应规则,它指出映象双方是如何进行转换的。两层映象:外模式/模式映象、模式/内模式映象。数据库系统的应用结构:客户/服务器(C/S)结构优点:运行速度快、表现能力强缺点:需要专门的客户端,不能跨平台浏览器/服务器(B/S)结构eg:百度、淘宝等网站。优点:基于网络语言,与操作系统无关,可以跨平台数据模型:对现实世界数据特征的抽象。概念模型:是面向数据库用户的现实世界的模型。模型:对现实世界特征的模拟和抽
4、象。实体:客观存在并且可以相互区别的事物。属性:实体所具有的某一特性。联系:连接实体之间的一种关系。码:唯一标识实体的属性集。域 :域是一组具有相同数据类型的值的集合。实体型:同型实体的集合称为实体集。E/R图 :表示实体型、属性和联系的方法。E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。表示方法如下: 实体型:用矩形表示,矩形框内写明实体名; 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来; 联系:用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型(1 : 1,1 : n或m : n)。两个实体之间
5、联系的种类:一对一联系(1:1):实体集A中的一个实体至多与实体集B中的一个实体相对应,反之亦然,则称实 体集A与实体集B为一对一的联系。记作1:1。 如:班级与班长,观众与座位,病人与床位。一对多联系(1:n):实体集A中的一个实体与实体集B中的多个实体相对应,反之,实体集B中的一个实体至多与实体集A中的一个实体相对应。记作1:n。 如:班级与学生、公司与职员、省与市。多对多(m:n):实体集A中的一个实体与实体集B中的多个实体相对应,反之,实体集B中的一个实体 与实体集A中的多个实体相对应。记作(m:n)。关系模式:对关系的描述。主码(主键):是表中的一个或多个字段,它的值用于唯一的标识表
6、中的某一天记录。 外码(外键):用于建立和加强两个数据间的链接的一列或者多列。元组:表中的行称为元组;行:表中的一行记录,表中的数据都是按行存储的。列:表中的一个字段,所有表都是由一个或者多个列组成的。关系模型规范化的设计方法:通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常,删除异常,更新异常和数据冗余的问题。INF:关系数据库中的关系要满足一定要求的,满足不同程度要求的为不同范式,满足最低要求的叫第一范式。定义:任给关系R,如果R中每个列与行的交点处的取值都是不可再分的基本元素,则R达到第一范式,简称1NF。2NF:若R属于1NF,且每一个非主属性完全函数依赖于任何一个候选码,则
7、R属于2NF 3NF:每一个非主属性既不传递依赖于码,也不部分依赖于码。BCNF:如果一个关系R中所有属性都不传递依赖于R的任何候选关键字,或者说关系R的每个决定因数都是候选关键字时,则称关系R属于BCNF范式。也即通过消除主键列对主键的部分函数依赖和传递函数依赖,将3NF规范为BCNF。数据库结构设计的不同阶段形成数据库的各级模式,即:在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图;在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后在基本表的基础上再建立必要的视图, 形成数据的外模式;在物理设计阶段,根
8、据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。概念模式是面向用户和设计人员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS支持的模式,属于数据模型的层次。可以在DBMS中加以描述和存储。课后总复习错题10. 设有E-R图,含有A、B两个实体,A、B之间的联系类型是M:N,则将该E-R图转换为关系模式时,关系模式的数量是3.解释:一般情况下,在设计数据库的时候,如果存在多对多的情况那么就必须将其分解为两个一对多的情况。也就是说,两个实体多对多的关系,分解后必然在它们之间再出现一个实体来连接它们的关系。 举个例子来说:学生和课程之间它们是多对多的关系,因此在设
9、计的时候就需添加选课表了。这样答案就是3.当两个实体是一对多的关系时,那就不需要分解了,这是就是2.15. 数据库、数据库管理系统和数据库系统三者之间的关系是:数据库系统包括数据库和数据库管理系统。20. 在讨论关系模型时,与“属性”同义的术语是列。21. 下列关于数据的叙述中,错误的是(A)A. 数据的种类包括文字、图形和图像三类; B.数字只是简单的一种数据;C.数据是描述事物的符号记录; D.数据是数据库中存储的基本对象。phpMyAdmin:是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具。注意:由于phpMyAdmin是PHP程序,因此需要LA
10、MP或者WAMP运行环境。SQL:结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。SQL的特点(优点):综合统一,具有一体化特点高度非过程化,是一种是面向对象的操作方式语言简洁、易学易用DDL:数据定义语言 DML:数据操纵语言DCL:数据控制语言比较运算符:运算符含义=相等大于=大于等于=小于等于、!=不等于!不小于/不大于逻辑运算符:运算符含义ALL如果一组的比较都为TRUE,那么就为TRUEAND/&如果两个布尔表达式都为TRUE,那么就为TRUEANY/SOME如果一组的比较中其中有任何一个为TRUE,那么就为TRUEBETWEEN如果操作数在某个范围
11、以内,那么就为TRUEEXISTS如果子查询中包含一些行,那么就为TRUEIN如果操作数等于表达式列表中的一个,那么就为TRUELIKE如果操作数与一种模式相匹配,那么就为TRUENOT/!对任何其他布尔运算符的值取反OR/ |如果两个布尔表达式中的一个为TRUE,那么就为TRUE位运算符:运算符运算规则&位AND|位OR位XOR位取反位右移位左移内置函数的主要分类:数学函数:用于执行一些比较复杂的算术操作的函数,例如ABS()函数、SORT()函数;聚合函数:特意为求和或者对表中的数据进行集中概括而设计的函数;例如,COUNT()函数。字符串函数:为2字符串操作而设计的函数;例如,ASCII
12、()函数、CHAR()函数。日期和时间函数:操作日期和时间的函数;例如,NOW()函数、YEAR()函数。加密函数:对数据进行加密的函数;例如ENCODE()函数、ENCRYPT函数。控制流函数:用来进行条件操作的函数;例如IF()函数。格式化函数:为格式化数据设计的函数;例如FORMAT()函数。类型转化函数:可以把一个值转换为指定的数据类型的函数;例如,CAST()函数。系统信息函数:获得系统本身的信息的函数;例如USER()函数、VERSION()函数。课后总复习错题2. 在MySQL中,NULL的含义是(C)NULL和空串的区别:NULL是指该字段没有值,而空串代表的是该字段有值。5.
13、在安装和配置MySQL实例的向导中,可选的MySQL服务器类型包括Developer Machine(开发者机器)、Server Machine (服务器)、Dedicated MySQL Server Machine(专用MySQL服务器)7.使用MySQL时,可以在MySQL客户端中执行SQL语句,但下面无法用于执行SQL语句的客户端工具是mysqld(C)。8.函数NOW()返回的结果是系统的当前日期和时间。数据对象:性质相同的数据元素的组合。数据类型:系统中所允许的数据的类型。在MySQL中可以利用SHOW ENGINES语句来显示可用的数据库引擎和默认引擎。InnoDB是系统的默认引
14、擎,其支持可靠的事务处理。一般语法描述所使用的符号如下:表示在语句中必须指定数据对象,是不可缺少的。:表示可以根据需要进行选择。|:表示多个选项只能选择其一。:表示必选项。问题:mysql命令行输入时,忘记输入分号;就按了回车,就会出现-,然后回不到上一行怎么办?若是没有分号结束的话,不管多少行都会视作一句,如果已经输好了程序但是忘了输入分号按了回车,接着在出现-的后边输入分号即可,然后按回车就会执行前面的sql。例1:在MySQL中创建一个名为mytest的数据库。MysqlCreate database mytest;可以在这里加上if exists用于判断是否存在这个数据库,用于防止数据
15、库不存咋时发生错误。例2:修改已有数据库mytest的默认字符集和校对规则。Mysqlalter database mytest -default character set gb2312-default collate gb2312_chinese_ci;其中character set 子句用于更改默认的数据库字符集。例3:首先删除一个尚未创建的数据库“an_test”,然后在删除语句中加上if exists语句以后再操作一次。出现报错的现象;加上if exists 语句以后,可以正常执行;Mysqldrop database if exists an_test;例4:列出当前用户可查看的数
16、据库列表。Mysqlshow databases;显示权限范围内的所有数据库名;Mysqlshow databases like mytest;显示与mytest相匹配的数据库名。例5:在一个已有的数据库mytest中新建一个包含姓名、性别、年龄、专业、联系方式等字段的学生的基本信息表,要求将字段student_id号指定为该表的主键,并使用InnoDB引擎存储表数据。mysql use mytestDatabase changedmysql create table students - student_id int not null auto_increment, - student_na
17、me char(50) not null, - student_sex char(1) not null default 0, - student_age int not null, - student_major char(50) not null, - student_contact char(50) null, - primary key(student_id) - engine=innodb;在mysql中写sql语句回车后如何更改上一句话?右键单击“mysql”的“dos窗口”上面的 蓝色横条选择编辑-标记-然后按住鼠标左键选中你要修改的语句,再去右击蓝色横条选择编辑-复制就把这条你
18、要修改的语句复制到剪贴板了然后去记事本里粘贴修改!在记事本里写好命令复制,然后右键单点“mysql”的“dos窗口”上面的蓝色横条编辑-粘贴然后执行,当然这只是windows下的办法,要一次执行很多行代码的时候比较省事。例6:向数据库mytest的表students中添加一列,并且命名为student_from,用于描述学生的生源地,要求不能是NULL,且该列位于原表列student_sex列之后。-add column student_from char(10) not null after student_sex;change子句:同时修改表中指定列的名称和数据类型。例7:将数据库myte
19、st中标students的student_from 列重命名为student_city,且数据类型为char(20),允许为NULL。-change column student_from student_city char(20) null;Alter子句可以修改或者删除表中指定列的默认值。例8:将数据库mytest中表students的student_sex列的默认值改为1(代表女).-alter column student_sex set default 1;modify子句可以修改指定列的数据类型,但不会干涉它的列名。与change的区别:change是可以将列名和数据类型都一起改了
20、的。例9:将数据库mytesr中的表students的students_name列的数据类型由char(50)更改为char(20),并且将此列设置为该表的第一列。-modify column student_name char(20) first;注意:add和modify都可以通过first或者after关键字来修改指定列在表中的位置。例10:删除数据库mytest中students的student_contact列。-drop column student_contct;rename子句可以为表重新赋予一个表名。例11:使用rename子句,重新命名数据库mytest中表students
21、的表名为university_students.-rename to mytest.university_students;或者使用另一种格式:例12:使用rename table 子句将数据库中mytest的university_students重新命名为studentsMysqlrename table mytest.university_students to mytest.students;复制表的语法格式:Create table LIKE|ASLIKE:可以创建一个与旧表结构相同的表,其中列名、数据类型、空指定和索引都将复制到新表,但是表的内容不会复制,因此创建的是一个和原表结构相
22、同的空表;AS:如果在复制表结构的同时,复制表的内容,可以用AS子句来完成。使用AS子句可以复制表的内容,但是索引和完整性约束不会被复制。例13:在数据库mytest中创建一份表students的拷贝students_copy。Mysqlcreate table mytest.students_copy like mytest.students;删除表:可以使用drop table子句删除表(可以同时删除多个表)例14:删除数据库mytest的表students_copy。Mysqldrop table mytest.students_copy;显示表的名称:show tables方法一:My
23、sqluse mytest;Mysqlshow tables;这里的use引用了数据库以后也可以不用“;”直接就接下一个show tables;方法二:Mysqlshow tables from mytests;显示表的结构:show columns(可以理解为每一列相当于属性,也即为表中的结构)例16:显示数据库mytest中表students的结构。Mysqlshow columns from mytest.students;注意:mysql支持用describe或者desc作为show columns from的一种快捷方式。Mysqldesc mytest.students;关于空值(
24、NULL):表的关键字不允许为空值,且任意两个空值不相等。关于标志(IDENTITY)属性:每个表中只有一个列设置为标志属性,并且该列只能是DECIMAL、INT、NUMERIC、SMALLINT、BIGINT、TINYINT数据类型。关于列类型的隐含改变:长度小于4的VARCHAR类型会被改变为CHAR类型;当一张表中包含任何变长的列时,如VARCHAR、TEXT、BLOB类型的列,该表中所有大于3个字符的其他CHAR类型列会被改变为VARCHAR类型列;TIMESTAMP类型的列值显示尺寸必须是在偶数214范围内;不能在TIMESTAMP中存储空值NULL,所以当该列的值设置为NULL的时
25、候,MySQL会默认设置为它当前的日期时间。课后总复习错题5. 查看当前正在使用的工作数据库名称的语句是(C)A. SHOW DATABASES; B.SHOW TABLES;C.SELECT DATABASE(); D.SHOW SCHEMAS;6. 在MySQL数据库中,以下不会受字符集设置影响的数据类型有(B)(参见以上资料列类型的隐含改变)INSERT语句的三种形式:INSERTVALUES:向表中插入一行数据,也可以插入多行数据;INSERTSET:指定插入行中每列的值,也可以指定部分列的值;INSERTSELECT:向表中插入其他表的数据;例1:使用INSERTVALUES语句向数
26、据库mytest的表students中插入这样一行完整数据:(1320,王丽,1,22,计算机专业,138xxxxxx)。Mysqlset names gbk; /*改变字符集*/- 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
27、| char(1) | NO | | 1 | | student_contact | char(20) | YES | | NULL | | student_age | int(11) | NO | | NULL | | student_major | char(50) | NO | | NULL | 应该按照显示的表结构输入数据。注意:在MySQL不能输入中文或者现实不出中文的时候,可以使用SET NAMES GBK;语句来临时改变字符集。例2:使用INSERTVALUES语句向数据库mytest 表students中插入一行数据,这行数据只给出student_name、student_ma
28、jor和student_age列的信息,对应的值是“李明”、“数学专业”,“22”,其中student_id由系统自动生成,其他采用默认或者不指定值。- values(李明,0,default,null,22,数学专业);其中的0代表的是学号;由于AUTO_INCREMENT属性列的值是在表中其它列被赋值以后生成的,所以在对表中其它列做任何赋值操作时,对该AUTO_INCREMENT属性列的引用只会返回数字0.还有一种方法:由于自动增长大的学号值可以不必列出,由系统自动生成,同时允许NULL值的列也可以不给出,因为系统允许其为空值,只需要输入提供的值即可。 -(student_name,stu
29、dent_sex,student_age,student_major) values(李明,DEFAULT,22,数学专业);这种方法的好处是不必知道表结构,不会出现输入列与结构不对应的情况。例3:使用INSERTSET 语句来实现例2的数据插入需求。 -set student_name=李明,student_sex=default,student_age=22,student_major=数学专业;采用这种方式的好处:输入方式更为灵活。例4:使用INSERTVALUES一次向mytest表students中插入两行数据,数据分别为(张三,1,24,化学专业)和(王五,1,23,数学专业)。
30、- (student_name,student_sex,student_age,student_major) - values(张三,1,24,化学专业),- (王五,1,23,数学专业);例5:假设数据库mytest的表student中有一个拷贝备份表student_copy,现使用insertselect语句将student_copy中的数据合并到表students。 -(student_name,student_sex,student_age,student_major) -select student_name,student_sex,student_age,student_major
31、 -from mytest.sudents_copy;REPLACE语句的功能:插入的数据主键与已有数据的主键重复,则INSERT语句将无法插入此行。此时若是需要插入此行数据,则可以使用REPLACE语句来实现。则REPLACE的功能是替换主键重复的行数据。REPLACE的三种语法格式为:REPLACEVALUES、REPLACESET、REPLACESELECT语句。例6:使用INSERT 语句成功执行例2以后,数据库mytest表students会存在这样一条数据:(王丽,1320,1,138xxxxxx,22,计算机专业);现在向该表插入一条新数据:(李芳,1320,1,137xxxxx
32、x,26,会计专业)。如果直接插入,则程序会出现错误,原因是两条数据的主键都一样,都是1320。所以,此程序应该为:- values(李芳,1320,1,137xxxxxx,26,会计专业);使用DELETE语句从单个表中删除数据DELETE FROM 表名 where子句/order by子句/limit 子句Limit子句:用于告知服务器在控制命令被返回到客户端前删除行的最大值。例7:使用DELETE 语句删除数据库mytest的表students中名字为王丽的学生信息。Mysqldelete from mytest.students where student_name=王丽;例8:假设
33、数据库中有三个表tbl1,tbl2,tbl3,它们均含有id列,现在要求删除表tbl1中id值等于tbl2的id值的所有行,以及表tbl2中id值等于tbl3的id值的所有行。注意:弄清楚要删除的是哪个表。Mysqldelete tbl1,tbl2 from tbl1,tb2l,tbl3 -where tbl1.id=tbl2.id and tbl2.id=tbl3.id;使用TRUNCATE删除表数据(清除表数据):使用TRUNCATE以后,表中的AUTO_INCREMENT计数器重新被置为该列的初始值。对于参与了索引和视图的表,不能使用TRUNCATE语句删除数据,而应该使用DELETE语
34、句。事务日志:事务日志是一个数据库文件分开的文件,它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库模式变化。使用UPDATE语句修改单个表:例9:使用UPDATE语句将数据库mytest的表students中姓名为“张三”的学生的联系方式更新为“139xxxxxx”。 - set student_city=139xxxxxx- where student_name=张三;例10:使用UPDATE语句将数据库mytest的表students中名为“李芳”的年龄修改为23,将专业修改为“物理专业”。 - set student_age=23 and student_ma
35、jor=物理专业- where student_name=李芳;例11:假设数据库中有两个表tbl1和tbl2,他们都有两个名为id和name列,其中id列为各自的主键,现在要求当表tbl1和tbl2中id 值相同时,将表tbl1中name的列的值修改为“李明”,将表tbl2中name列的值为改为“王伟”。Mysqlupdate tbl1,tbl2-set tbl1.name=李明 and tbl2.name=王伟-where tbl1.id=tbl2.id;课后总复习错题3/7:学生表student包含sname、sex、age三个属性列,其中age默认值为20,执行SQL语句INSERT
36、INTO student(sex,sname,age) VALUES(M,Lili, );的结果是(A)A. 执行成功,sname,sex,age的值分别为Lili,M,20B. 执行成功,sname,sex,age 的值分别为M,Lili,NULLC. 执行成功,sname,sex,age的值分别为M,Lili,20D. SQL语句不正确,执行失败。解析:首先排除B,既然有默认值,那么执行出来的结果就不可能是NULL。有默认值的age可以在VALUES值代入的时候显示“default”,也可以直接不用理会,直接不显示地填充值(注意:不是NULL,NULL是真的表结构规定的时候允许使用NULL
37、而且真的没有相应值代入的时候才去使用)注意:以上加粗的办法是最可行的,在有些版本的MySQL中并不支持直接不显示默认值的方法,会有出错提醒。8. 在使用insertinto插入记录时,对于AUTO_INCREMENT列,若需要使其值自动增长,下面填充方式中错误的是(D)A. 填充NULL值; B.不显示地填充值; C.填充数字0; D.填充数字1;解析:填充数字0和1是制定默认值的时候;而自动增长通常会返回1即可,也可填充NULL值或者不显示地填充值。使用SELECT语句时,WHERE子句必须位于GROUP子句之前,GROUP子句必须位于HAVING子句之前。例1:在MySQL数据库中执行“S
38、ELECT 1+4-2”运算。Mysqlselect 1+4-2;使用*可以返回所有列的数值。例2:查询数据库mytest中表students中学生的姓名、年龄和专业信息。mysql select student_name,student_age,student_major- from mytest.students;例3:查询数据库mytest中表students学生的所有信息。Mysqlselect * from mytest.students;使用别名的方法:例4:查询数据库mytest中表students的student_name 和student_contact字段,并且要求stud
39、ent_contact列用“联系方式”来显示。mysql select student_name,student_contact as 联系方式- from mytest.students;或者mysql select student_name,student_contact 联系方式- from mytest.students;计算列值:例5:查询数据库mytest的表students,输出每个学生的student_name和student_id列,同时要求输出student_id 加上数字100后构成的新列的值。Mysqlselect student_name,student_id,stu
40、dent_id+100 -from mytest.students;替换查询结果中的数据:在对表进行查询的时候,如果希望得到某些列的分析结果,而不仅仅是查询的原始值,则可以在SELECT语句中替换这些列。CASE表达式:WHEN 条件1 THEN 表达式1WHEN 条件2 THEN 表达式2ELSE 表达式END AS 列名列名可更改也可以不更改。例6:查询数据库mytest中表students,输出student_name 和student_sex列,判断student_sex,如果为0,则显示为“男”,否则显示为“女”,并且在结果集中用“性别”来标注该列。mysql select stud
41、ent_name, /*要记得这里的逗号*/ - case - when student_sex=0 then 男 - else 女 - end as 性别 - from mytest.students;聚合函数:MySQL中的内置函数,常常用于对一组值进行计算或者统计,然后返回计算或者统计结果。例7:查询mytest中students表的年龄最大值。(这里不需要用聚合函数)Mysqlselect max(student_age) from mytest.students;连接查询的类型以及使用方法:交叉连接:用于实现一张表的每一行与另一张表的每一行的笛卡尔积,返回两张表的每一行相乘的所有可能
42、的搭配结果。例8:假设数据库中有两张表,分别是a和b,要求查询这两张表的交叉连接后的结果集。首先查看a表中的数据行:Mysqlselect * from mytest.a;idname1a12a2接着查看b表中的数据行:Mysqlselect * from mytest.b;idname1b12b23b3计算a表和b表交叉连接的结果:Mysqlselect * from mytest.a cross join mytest.b;idnameidname1a11b11a12b21a13b32a21b12a22b22a23b3内连接:利用条件表达式来消除交叉连接中的某些数据行,在FROM子句中使用
43、关键字INNER JOIN连接两张表,并使用ON子句来设置连接条件。如果没有任何条件的话,INNER JOIN和 CROSS JOIN在语法上是等同的,两者可以互换。需要注意的是:内连接是系统默认的表连接,所以在from子句后可以省略INNER关键字.例9:在例7的表中,利用内连接查询出a表Id大于b表Id的结果集。Mysqlselect * from mytest.a inner join mytest.b on mytest.a.Id mytest.b.Id;相等连接:使用运算符“=”例10:在例8的表中,利用内连接查询出a表Id等于b表Id的结果集。Mysqlselect * from
44、mytest.a inner join mytest.b on-mytest.a.Id=mytest.b.Id;不等连接:内连接的一种,只是在ON子句中的连接条件使用除“=”的其他运算符。自连接:内连接的一种,如果需要在一个表中查找具有相同列值的行,则可以考虑用自连接。自然连接:自然连接是只有在连接的列在两张表中的名称都相同时才会有用,否则返回的会是笛卡尔积。自然连接在FROM子句中使用关键字NATURAL JOIN。外连接:外连接分为左外连接和右外连接,首先将连接的表分为基表和参考表,然后再以基表为依据返回满足条件和不满足条件的记录。关于特殊的比较运算符“”的说明:对于运算符“”,当两个表达式彼此相等或者都等于空值的时候,比较的结果值为TRUE;若其中一个是空值或者都是非空值但却不相等时,则为FALSE,不会出现UNKNOWN的情况。例11:查找数据库mytest的表students,输出所有女生的信息。Mysqlse