计算机二级MySQL基本知识点汇总

上传人:痛*** 文档编号:103218485 上传时间:2022-06-08 格式:DOC 页数:50 大小:209.50KB
收藏 版权申诉 举报 下载
计算机二级MySQL基本知识点汇总_第1页
第1页 / 共50页
计算机二级MySQL基本知识点汇总_第2页
第2页 / 共50页
计算机二级MySQL基本知识点汇总_第3页
第3页 / 共50页
资源描述:

《计算机二级MySQL基本知识点汇总》由会员分享,可在线阅读,更多相关《计算机二级MySQL基本知识点汇总(50页珍藏版)》请在装配图网上搜索。

1、.计算机二级MySQL基本知识点数据库:数据库是指长期存储在计算机内的、有组织的、可共享的数据集合。数据库管理系统:是一种操纵和管理数据库的大型软件,用于建立、使用和维护数据库,简称DBMS。DBMS的主要功能:数据定义功能;数据操纵功能;数据库的运行和管理;数据库的建立和维护功能;数据库的通信功能提供方便、有效存储数据库信息的接口和工具;数据库系统:是指在计算机系统引入数据库后的系统;一个完整的数据库系统一般包括数据库、数据库管理系统、应用开发工具、应用系统、数据库管理员和用户构成。数据库系统的特点:数据结构化;数据独立性高;数据共享性好;数据冗余度低;数据由DBMS统一管理和控制;内模式:

2、对数据物理结构和存储方式的描述,是数据在数据库内部的具体表示方式。模式:对数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图。外模式:对数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式也称为子模式三层模式使各层数据保持独立:层次独立性:数据库的整体逻辑结构和特征的描述是独立于数据库其他层次结构的描述;存储模式独立性:数据库的内部存储结构依赖于概念模式,但存储模式独立于外部模式,也独立于具体的存储设备;外模式独立性:用户逻辑结构外模式是在全局逻辑结构的描述的基础上定义的,它面向具体的应用程序,独立于内部模式和

3、存储设备。应用程序独立性:特定的应用程序是在外模式描述的逻辑结构上编写的,它依赖于特定的外模式,与数据库的模式和存储结构独立。映象:是一种对应规则,它指出映象双方是如何进行转换的。两层映象:外模式/模式映象、模式/内模式映象。数据库系统的应用结构:客户/服务器C/S结构优点:运行速度快、表现能力强缺点:需要专门的客户端,不能跨平台浏览器/服务器B/S结构eg:百度、淘宝等网站。优点:基于网络语言,与操作系统无关,可以跨平台数据模型:对现实世界数据特征的抽象。概念模型:是面向数据库用户的现实世界的模型。模型:对现实世界特征的模拟和抽象。实体:客观存在并且可以相互区别的事物。属性:实体所具有的某一

4、特性。_连接实体之间的一种关系。码:唯一标识实体的属性集。域 :域是一组具有相同数据类型的值的集合。实体型:同型实体的集合称为实体集。E/R图 :表示实体型、属性和联系的方法。E-R图为实体-联系图,提供了表示实体型、属性和联系的方法,用来描述现实世界的概念模型。表示方法如下: 实体型:用矩形表示,矩形框内写明实体名; 属性:用椭圆形表示,并用无向边将其与相应的实体连接起来; _用菱形表示,菱形框内写明联系名,并用无向边分别与有关实体连接起来,同时在无向边旁标上联系的类型1 : 1,1 : n或m : n。两个实体之间联系的种类:一对一联系1:1:实体集A中的一个实体至多与实体集B中的一个实体

5、相对应,反之亦然,则称实 体集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,且每一个非主属性完全函数依赖于任何一个候选码,则R属于2NF 3NF:每一个非主属性既不传递依赖于码,也不部分依赖于码。BCNF:如果一个关系R中所

7、有属性都不传递依赖于R的任何候选关键字,或者说关系R的每个决定因数都是候选关键字时,则称关系R属于BCNF范式。也即通过消除主键列对主键的部分函数依赖和传递函数依赖,将3NF规范为BCNF。数据库结构设计的不同阶段形成数据库的各级模式,即:在概念设计阶段形成独立于机器特点,独立于各个DBMS产品的概念模式,在本篇中就是E-R图;在逻辑设计阶段将E-R图转换成具体的数据库产品支持的数据模型,如关系模型,形成数据库逻辑模式;然后在基本表的基础上再建立必要的视图, 形成数据的外模式;在物理设计阶段,根据DBMS特点和处理的需要,进行物理存储安排,建立索引,形成数据库内模式。概念模式是面向用户和设计人

8、员的,属于概念模型的层次;逻辑模式、外模式、内模式是DBMS支持的模式,属于数据模型的层次。可以在DBMS中加以描述和存储。课后总复习错题10. 设有E-R图,含有A、B两个实体,A、B之间的联系类型是M:N,则将该E-R图转换为关系模式时,关系模式的数量是3.解释:一般情况下,在设计数据库的时候,如果存在多对多的情况那么就必须将其分解为两个一对多的情况。也就是说,两个实体多对多的关系,分解后必然在它们之间再出现一个实体来连接它们的关系。 举个例子来说:学生和课程之间它们是多对多的关系,因此在设计的时候就需添加选课表了。这样答案就是3.当两个实体是一对多的关系时,那就不需要分解了,这是就是2.

9、15. 数据库、数据库管理系统和数据库系统三者之间的关系是:数据库系统包括数据库和数据库管理系统。20. 在讨论关系模型时,与属性同义的术语是列。21. 下列关于数据的叙述中,错误的是AA. 数据的种类包括文字、图形和图像三类; B.数字只是简单的一种数据;C.数据是描述事物的符号记录; D.数据是数据库中存储的基本对象。phpMyAdmin:是一个以PHP为基础,以Web-Base方式架构在网站主机上的MySQL的数据库管理工具。注意:由于phpMyAdmin是PHP程序,因此需要LAMP或者WAMP运行环境。SQL:结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据

10、库语言。SQL的特点优点:综合统一,具有一体化特点高度非过程化,是一种是面向对象的操作方式语言简洁、易学易用DDL:数据定义语言 DML:数据操纵语言DCL:数据控制语言比较运算符:运算符含义=相等大于=大于等于=小于等于、!=不等于!不小于/不大于逻辑运算符:运算符含义ALL如果一组的比较都为TRUE,那么就为TRUEAND/&如果两个布尔表达式都为TRUE,那么就为TRUEANY/SOME如果一组的比较中其中有任何一个为TRUE,那么就为TRUEBETWEEN如果操作数在某个范围以内,那么就为TRUEEXISTS如果子查询中包含一些行,那么就为TRUEIN如果操作数等于表达式列表中的一个,

11、那么就为TRUELIKE如果操作数与一种模式相匹配,那么就为TRUENOT/!对任何其他布尔运算符的值取反OR/ |如果两个布尔表达式中的一个为TRUE,那么就为TRUE位运算符:运算符运算规则&位AND|位OR位XOR位取反位右移位左移内置函数的主要分类:数学函数:用于执行一些比较复杂的算术操作的函数,例如ABS函数、SORT函数;聚合函数:特意为求和或者对表中的数据进行集中概括而设计的函数;例如,COUNT函数。字符串函数:为2字符串操作而设计的函数;例如,ASCII函数、CHAR函数。日期和时间函数:操作日期和时间的函数;例如,NOW函数、YEAR函数。加密函数:对数据进行加密的函数;例

12、如ENCODE函数、ENCRYPT函数。控制流函数:用来进行条件操作的函数;例如IF函数。格式化函数:为格式化数据设计的函数;例如FORMAT函数。类型转化函数:可以把一个值转换为指定的数据类型的函数;例如,CAST函数。系统信息函数:获得系统本身的信息的函数;例如USER函数、VERSION函数。课后总复习错题2. 在MySQL中,NULL的含义是CA. 空串 B.数值0 C.无值 D.FALSENULL和空串的区别:NULL是指该字段没有值,而空串代表的是该字段有值。5.在安装和配置MySQL实例的向导中,可选的MySQL服务器类型包括Developer Machine开发者机器、Serv

13、er Machine 服务器、Dedicated MySQL Server Machine专用MySQL服务器7.使用MySQL时,可以在MySQL客户端中执行SQL语句,但下面无法用于执行SQL语句的客户端工具是mysqldC。A.mysql命令行 B.phpMyAdmin C.mysqld D.Navicat工具8.函数NOW返回的结果是系统的当前日期和时间。数据对象:性质相同的数据元素的组合。数据类型:系统中所允许的数据的类型。在MySQL中可以利用SHOW ENGINES语句来显示可用的数据库引擎和默认引擎。InnoDB是系统的默认引擎,其支持可靠的事务处理。一般语法描述所使用的符号如

14、下:表示在语句中必须指定数据对象,是不可缺少的。:表示可以根据需要进行选择。|:表示多个选项只能选择其一。:表示必选项。问题:mysql命令行输入时,忘记输入分号;就按了回车,就会出现-,然后回不到上一行怎么办?若是没有分号结束的话,不管多少行都会视作一句,如果已经输好了程序但是忘了输入分号按了回车,接着在出现-的后边输入分号即可,然后按回车就会执行前面的sql。例1:在MySQL中创建一个名为mytest的数据库。MysqlCreate database mytest;可以在这里加上if exists用于判断是否存在这个数据库,用于防止数据库不存咋时发生错误。例2:修改已有数据库mytest

15、的默认字符集和校对规则。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:列出当前用户可查看的数据库列表。Mysqlshow databases;显示权

16、限范围内的所有数据库名;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_name char not null, - student_

17、sex char not null default 0, - student_age int not null, - student_major char not null, - student_contact char null, - primary key - engine=innodb;在mysql中写sql语句回车后如何更改上一句话?右键单击mysql的dos窗口上面的 蓝色横条选择编辑-标记-然后按住鼠标左键选中你要修改的语句,再去右击蓝色横条选择编辑-复制就把这条你要修改的语句复制到剪贴板了然后去记事本里粘贴修改!在记事本里写好命令复制,然后右键单点mysql的dos窗口上面的蓝色

18、横条编辑-粘贴然后执行,当然这只是windows下的办法,要一次执行很多行代码的时候比较省事。例6:向数据库mytest的表students中添加一列,并且命名为student_from,用于描述学生的生源地,要求不能是NULL,且该列位于原表列student_sex列之后。Mysqluse table mytest.students-add column student_from char not null after student_sex;change子句:同时修改表中指定列的名称和数据类型。例7:将数据库mytest中标students的student_from 列重命名为studen

19、t_city,且数据类型为char,允许为NULL。Mysqlalter table mytest.students-change column student_from student_city char null;Alter子句可以修改或者删除表中指定列的默认值。例8:将数据库mytest中表students的student_sex列的默认值改为1代表女.Mysqlalter table mytest.students-alter column student_sex set default 1;modify子句可以修改指定列的数据类型,但不会干涉它的列名。与change的区别:chang

20、e是可以将列名和数据类型都一起改了的。例9:将数据库mytesr中的表students的students_name列的数据类型由char更改为char,并且将此列设置为该表的第一列。Mysqlalter table mytest.students-modify column student_name char first;注意:add和modify都可以通过first或者after关键字来修改指定列在表中的位置。例10:删除数据库mytest中students的student_contact列。Mysqlalter table mytest.students-drop column stude

21、nt_contct;rename子句可以为表重新赋予一个表名。例11:使用rename子句,重新命名数据库mytest中表students的表名为university_students.Mysqlalter table mytest.students-rename to mytest.university_students;或者使用另一种格式:例12:使用rename table 子句将数据库中mytest的university_students重新命名为studentsMysqlrename table mytest.university_students to mytest.student

22、s;复制表的语法格式:Create table LIKE|ASLIKE:可以创建一个与旧表结构相同的表,其中列名、数据类型、空指定和索引都将复制到新表,但是表的内容不会复制,因此创建的是一个和原表结构相同的空表;AS:如果在复制表结构的同时,复制表的内容,可以用AS子句来完成。使用AS子句可以复制表的内容,但是索引和完整性约束不会被复制。例13:在数据库mytest中创建一份表students的拷贝students_copy。Mysqlcreate table mytest.students_copy like mytest.students;删除表:可以使用drop table子句删除表可以

23、同时删除多个表例14:删除数据库mytest的表students_copy。Mysqldrop table mytest.students_copy;显示表的名称:show tables方法一:Mysqluse mytest;Mysqlshow tables;这里的use引用了数据库以后也可以不用;直接就接下一个show tables;方法二:Mysqlshow tables from mytests;显示表的结构:show columns可以理解为每一列相当于属性,也即为表中的结构例16:显示数据库mytest中表students的结构。Mysqlshow columns from myte

24、st.students;注意:mysql支持用describe或者desc作为show columns from的一种快捷方式。Mysqldesc mytest.students;关于空值NULL:表的关键字不允许为空值,且任意两个空值不相等。关于标志IDENTITY属性:每个表中只有一个列设置为标志属性,并且该列只能是DECIMAL、INT、NUMERIC、SMALLINT、BIGINT、TINYINT数据类型。关于列类型的隐含改变:长度小于4的VARCHAR类型会被改变为CHAR类型;当一张表中包含任何变长的列时,如VARCHAR、TEXT、BLOB类型的列,该表中所有大于3个字符的其他C

25、HAR类型列会被改变为VARCHAR类型列;TIMESTAMP类型的列值显示尺寸必须是在偶数214范围内;不能在TIMESTAMP中存储空值NULL,所以当该列的值设置为NULL的时候,MySQL会默认设置为它当前的日期时间。课后总复习错题5. 查看当前正在使用的工作数据库名称的语句是CA. SHOW DATABASES; B.SHOW TABLES;C.SELECT DATABASE; D.SHOW SCHEMAS;6. 在MySQL数据库中,以下不会受字符集设置影响的数据类型有BA. CHAR B.INT C.VARCHAR D.TEXT参见以上资料列类型的隐含改变INSERT语句的三种形

26、式:INSERTVALUES:向表中插入一行数据,也可以插入多行数据;INSERTSET:指定插入行中每列的值,也可以指定部分列的值;INSERTSELECT:向表中插入其他表的数据;例1:使用INSERTVALUES语句向数据库mytest的表students中插入这样一行完整数据:1320,王丽,1,22,计算机专业,138xxxxxx。Mysqlset names gbk; /*改变字符集*/mysql insert into mytest.students- values ;由于表的结构如下:+-+-+-+-+-+-+| Field | Type | Null | Key | Defa

27、ult | Extra +-+-+-+-+-+-+| student_name | char | YES | | NULL | | student_id | int | NO | PRI | NULL | auto_increment | student_sex | char | NO | | 1 | | student_contact | char | YES | | NULL | | student_age | int | NO | | NULL | | student_major | char | NO | | NULL | +-+-+-+-+-+-+应该按照显示的表结构输入数据。注意:

28、在MySQL不能输入中文或者现实不出中文的时候,可以使用SET NAMES GBK;语句来临时改变字符集。例2:使用INSERTVALUES语句向数据库mytest 表students中插入一行数据,这行数据只给出student_name、student_major和student_age列的信息,对应的值是李明、数学专业,22,其中student_id由系统自动生成,其他采用默认或者不指定值。mysql insert into mytest.students- values;其中的0代表的是学号;由于AUTO_INCREMENT属性列的值是在表中其它列被赋值以后生成的,所以在对表中其它列做任

29、何赋值操作时,对该AUTO_INCREMENT属性列的引用只会返回数字0.还有一种方法:由于自动增长大的学号值可以不必列出,由系统自动生成,同时允许NULL值的列也可以不给出,因为系统允许其为空值,只需要输入提供的值即可。Mysqlinsert into mytest.students - values;这种方法的好处是不必知道表结构,不会出现输入列与结构不对应的情况。例3:使用INSERTSET 语句来实现例2的数据插入需求。Mysqlinsert into mytest.students -set student_name=李明,student_sex=default,student_ag

30、e=22,student_major=数学专业;采用这种方式的好处:输入方式更为灵活。例4:使用INSERTVALUES一次向mytest表students中插入两行数据,数据分别为张三,1,24,化学专业和王五,1,23,数学专业。mysql insert into mytest.students - - values,- ;例5:假设数据库mytest的表student中有一个拷贝备份表student_copy,现使用insertselect语句将student_copy中的数据合并到表students。Mysqlinsert into mytest.students - -select

31、student_name,student_sex,student_age,student_major -from mytest.sudents_copy;REPLACE语句的功能:插入的数据主键与已有数据的主键重复,则INSERT语句将无法插入此行。此时若是需要插入此行数据,则可以使用REPLACE语句来实现。则REPLACE的功能是替换主键重复的行数据。REPLACE的三种语法格式为:REPLACEVALUES、REPLACESET、REPLACESELECT语句。例6:使用INSERT 语句成功执行例2以后,数据库mytest表students会存在这样一条数据:;现在向该表插入一条新数据

32、:李芳,1320,1,137xxxxxx,26,会计专业。如果直接插入,则程序会出现错误,原因是两条数据的主键都一样,都是1320。所以,此程序应该为:mysql replace into mytest.students- values;使用DELETE语句从单个表中删除数据DELETE FROM 表名 where子句/order by子句/limit 子句Limit子句:用于告知服务器在控制命令被返回到客户端前删除行的最大值。例7:使用DELETE 语句删除数据库mytest的表students中名字为王丽的学生信息。Mysqldelete from mytest.students wher

33、e student_name=王丽;例8:假设数据库中有三个表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计数器重新被置为该列的初始值。对于参与了索引和视图的表,不能使用TRUNCA

34、TE语句删除数据,而应该使用DELETE语句。事务日志:事务日志是一个数据库文件分开的文件,它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库模式变化。使用UPDATE语句修改单个表:例9:使用UPDATE语句将数据库mytest的表students中姓名为张三的学生的联系方式更新为139xxxxxx。mysql update mytest.students - set student_city=139xxxxxx- where student_name=张三;例10:使用UPDATE语句将数据库mytest的表students中名为李芳的年龄修改为23,将专业修改为

35、物理专业。mysql update mytest.students - set student_age=23 and student_major=物理专业- 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;课后总

36、复习错题3/7:学生表student包含sname、sex、age三个属性列,其中age默认值为20,执行SQL语句INSERT INTO student VALUES;的结果是AA. 执行成功,sname,sex,age的值分别为Lili,M,20B. 执行成功,sname,sex,age 的值分别为M,Lili,NULLC. 执行成功,sname,sex,age的值分别为M,Lili,20D. SQL语句不正确,执行失败。解析:首先排除B,既然有默认值,那么执行出来的结果就不可能是NULL。有默认值的age可以在VALUES值代入的时候显示default,也可以直接不用理会,直接不显示地填

37、充值注意:不是NULL,NULL是真的表结构规定的时候允许使用NULL而且真的没有相应值代入的时候才去使用注意:以上加粗的办法是最可行的,在有些版本的MySQL中并不支持直接不显示默认值的方法,会有出错提醒。8. 在使用insertinto插入记录时,对于AUTO_INCREMENT列,若需要使其值自动增长,下面填充方式中错误的是DA. 填充NULL值; B.不显示地填充值; C.填充数字0; D.填充数字1;解析:填充数字0和1是制定默认值的时候;而自动增长通常会返回1即可,也可填充NULL值或者不显示地填充值。使用SELECT语句时,WHERE子句必须位于GROUP子句之前,GROUP子句

38、必须位于HAVING子句之前。例1:在MySQL数据库中执行SELECT 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_na

39、me 和student_contact字段,并且要求student_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

40、 student_name,student_id,student_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,则显示为男,否则显示为女,并且在结果集中用性别来

41、标注该列。mysql select student_name, /*要记得这里的逗号*/ - case - when student_sex=0 then 男 - else 女 - end as 性别 - from mytest.students;聚合函数:MySQL中的内置函数,常常用于对一组值进行计算或者统计,然后返回计算或者统计结果。例7:查询mytest中students表的年龄最大值。这里不需要用聚合函数Mysqlselect max 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内连接:利用条件表达式来消除交叉连接中的某些数据行,在FR

43、OM子句中使用关键字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 *

44、from mytest.a inner join mytest.b on-mytest.a.Id=mytest.b.Id;不等连接:内连接的一种,只是在ON子句中的连接条件使用除=的其他运算符。自连接:内连接的一种,如果需要在一个表中查找具有相同列值的行,则可以考虑用自连接。自然连接:自然连接是只有在连接的列在两张表中的名称都相同时才会有用,否则返回的会是笛卡尔积。自然连接在FROM子句中使用关键字NATURAL JOIN。外连接:外连接分为左外连接和右外连接,首先将连接的表分为基表和参考表,然后再以基表为依据返回满足条件和不满足条件的记录。关于特殊的比较运算符的说明:对于运算符,当两个表达式

45、彼此相等或者都等于空值的时候,比较的结果值为TRUE;若其中一个是空值或者都是非空值但却不相等时,则为FALSE,不会出现UNKNOWN的情况。例11:查找数据库mytest的表students,输出所有女生的信息。Mysqlselect * from mytest.students -where student_sex=1;字符串匹配通配符有以下两种:%:%可以表示任何字符串,并且该字符串可以出现任意次数。例12:查询数据库mytest中表students,输出所有姓李的学生姓名和ID。Mysqlselect student_name,student_id from mytest.stude

46、nts-where student_name like 李%;下划线_:下划线只匹配单个字符,而不是多个字符,也不是0个字符。例13:查询数据库mytest中students,输出姓李并且姓名只有两个中文字符的学生名字。Mysqlselect student_name from mytest.students -where student_name like 李_;文本匹配;基本字符匹配:例14:查询数据库mytest中students,分别使用字符串匹配和文本匹配的方式,输出专业含有物字的学生信息。学生信息包括名字、年龄和专业采用百分号匹配:Mysqlselect student_name,

47、student_age,student_major -from mytest.students where student_major like %物%;采用正则表达式regexp匹配:Mysqlselect student_name,sttudent_age,student_major-from mytest.students where student_major regexp 物; 这里可以在物左右括号。选择匹配:正则表达式而已达到待搜索对象的选择性匹配,使用|分隔符提供选择匹配的字符串,该分割符类似于在SELECT语句中使用OR子句。例15:查询数据库mytest的表students,

48、输出自动化专业或者数学专业的学生姓名。mysql select student_name,student_major - from mytest.students where student_major regexp 自动化专业|数学专业;LIKE和REGEXP的区别:LIKE严格受单引号之间的内容查询,有没有百分号对于选择结果而言至关重要。范围匹配:正则表达式还可以在某一个范围内对数据进行过滤,使用包含字符或者数字集合。如果表示范围4-6则可以表示为4-6.例16:查询数据库mytest的表students,输出年龄中含有数字4或5的学生信息。这里的学生信息包括名字和年龄mysql sele

49、ct student_name,student_age- from mytest.students where student_age regexp 4|5;特殊字符匹配;如果要在列值中查找具有这些特殊含义的字符的时候,需要用到转义字符。具体方法是将其作为前导,例如正则表达式中如果出现-则表示查找字符-,正则表达式中为了查找反斜杠本身,则需要使用;f换页;r回车;t制表;v纵向制表。重复匹配:正则表达式支持重复元素匹配。即用某些字符来表示要匹配的元素重复的次数。元字符说明*0个或者多个匹配+1个或者多个匹配?0个或者1个匹配n指定n个匹配n,不少于n个匹配n,m匹配的数目在n和m之间m不可超过

50、255例17:查询数据库mytest中表students,输出学生名字含有两个圆的学生信息。Mysqlselect student_name,student_age,student_major -from mytest.students where student_name regexp 圆2;字符类匹配:例如字符类:upper:表示任意大写字母,如同在正则表达式中的A-Z.使用定位符匹配:定位符说明文本开始$文本结尾:词的结尾例18:查询数据库mytest 中表students,输出生开头的专业名称的学生姓名、专业。Mysqlselect student_name,student_major

51、 -from mytest.students where student_major regexp 生;判定范围:BETWEENAND例19:查询数据库mytest的表student,输出年龄为20到23岁之间学生的姓名、专业。Mysqlselect student_name,student_major -from mytest.students where student_age between 20 and 23;IN例20:查询数据库mytest中students表,输出年龄为23岁和24岁之间的学生姓名。首先解决以下问题:mysql select student_name,studen

52、t_age - from mytest.students where student_age regexp 23|24;+-+-+| student_name | student_age |+-+-+| 李芳 | 25 | 李明 | 22 | 张三 | 24 | 王五 | 23 | 李芳 | 23 | 孙艺华 | 22 | 范圆圆 | 21 |+-+-+为什么不可以?因为REGEXP是只要出现单引号内条件的都会被筛选出来,而23|24都存在2,所以只要包含2就会被选出来。其筛选灵活程度极强。所以此程序应该是:mysql select student_name,student_age from

53、mytest.students - where student_age regexp 3|4;或者使用IN:Mysqlselect student_name,student_age from mytest.students-where student_age in ;判定空值:关键字IS NULL可以用来判断一个表达式是否为空值。例21:查询数据库mytest中表students,输出联系方式为空的学生姓名。Mysqlselect student_name ,student_contact from mytest.students-where student_contact is null;子

54、查询:IN子查询,比如 not in 比较运算符子查询:=|=|!=ALL|SOME|ANYALL、SOME、ANY:可选项。ALL表示指定表达式需要与子查询结果集中的每个值进行比较;SOME和ANY是同义词,表示表达式只要与子查询结果集中的某个值满足关系即可返回TRUE。EXIST子查询:判断子查询结果集是否为空,如果存在子查询的结果则返回TRUE。GROUP BY :通常后面接一个正整数,比如GROUP BY 2的意思是根据SELECT选择列清单上的第二列的值进行分组。ASC|DESC:ASC表示升序分组,DESC表示降序分组。例22:在数据库mysql中表students中获取一个结果数

55、据集,要求该结果集以性别分组,并且统计男生和女生的人数。Mysqlselect student_sex,count as 人数 -from mytest.students -group by student_sex;扩展:mysql select count as 人数, - case - when student_sex=0 then 男 - else 女 - end as 性别 - from mytest.students group by student_sex;+-+-+| 人数 | 性别 |+-+-+| 1 | 男 | 6 | 女 |+-+-+例23:查询数据库mytest的表students中要求输出每个专业学生的平均年龄和专业名称。MySQLselect student_major, avg as 平均年龄 from mytest.students -group by student_major;HAVING子句用于指定过滤条件与WHERE子句的区别:WHERE子句主要用于过滤数据行,而HAVING子句主要用于过滤分组。例24:在数据库mytest中表students,查找专业学生数量大于2的学生总数和专业名称。MySQLselect student_ma

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!