收藏 分享(赏)

计算机二级MySQL基本知识点.doc

上传人:精品资料 文档编号:11228804 上传时间:2020-02-21 格式:DOC 页数:55 大小:1.15MB
下载 相关 举报
计算机二级MySQL基本知识点.doc_第1页
第1页 / 共55页
计算机二级MySQL基本知识点.doc_第2页
第2页 / 共55页
计算机二级MySQL基本知识点.doc_第3页
第3页 / 共55页
计算机二级MySQL基本知识点.doc_第4页
第4页 / 共55页
计算机二级MySQL基本知识点.doc_第5页
第5页 / 共55页
点击查看更多>>
资源描述

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

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

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 属于 1N

7、F,且每一个非主属性完全函数依赖于任何一个候选码,则 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 为基础,

10、以 Web-Base 方式架构在网站主机上的 MySQL 的数据库管理工具。注意:由于 phpMyAdmin 是 PHP 程序,因此需要 LAMP 或者 WAMP 运行环境。SQL:结构化查询语言,是关系数据库的标准语言,也是一个通用的、功能极强的关系数据库语言。SQL 的特点(优点):综合统一,具有一体化特点高度非过程化,是一种是面向对象的操作方式语言简洁、易学易用DDL :数据定义语言 DML:数据操纵语言DCL:数据控制语言比较运算符:运算符 含义= 相等 大于= 大于等于、!= 不等于! 不小于/不大于逻辑运算符:运算符 含义ALL 如果一组的比较都为 TRUE,那么就为 TRUEAN

11、D/可以在这里加上 if exists 用于判断是否存在这个数据库,用于防止数据库不存咋时发生错误。例 2:修改已有数据库 mytest 的默认字符集和校对规则。Mysqlalter database mytest -default character set gb2312-default collate gb2312_chinese_ci;其中 character set 子句用于更改默认的数据库字符集。例 3:首先删除一个尚未创建的数据库“an_test” ,然后在删除语句中加上 if exists 语句以后再操作一次。出现报错的现象;加上 if exists 语句以后,可以正常执行;My

12、sqldrop database if exists an_test;例 4:列出当前用户可查看的数据库列表。Mysqlshow databases;显示权限范围内的所有数据库名;Mysqlshow databases like mytest;显示与mytest相匹配的数据库名。例 5:在一个已有的数据库 mytest 中新建一个包含姓名、性别、年龄、专业、联系方式等字段的学生的基本信息表,要求将字段 student_id 号指定为该表的主键,并使用 InnoDB 引擎存储表数据。mysql use mytestDatabase changedmysql create table studen

13、ts- (- student_id int not null auto_increment,- student_name 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

14、 窗口”上面的 蓝色横条选择编辑-标记-然后按住鼠标左键选中你要修改的语句,再去右击蓝色横条选择编辑-复制就把这条你要修改的语句复制到剪贴板了然后去记事本里粘贴修改!在记事本里写好命令复制,然后右键单点“mysql”的“ dos 窗口”上面的蓝色横条编辑-粘贴然后执行,当然这只是 windows 下的办法,要一次执行很多行代码的时候比较省事。例 6:向数据库 mytest 的表 students 中添加一列,并且命名为 student_from,用于描述学生的生源地,要求不能是 NULL,且该列位于原表列 student_sex 列之后。Mysqluse table mytest.studen

15、ts-add column student_from char(10) not null after student_sex;change 子句:同时修改表中指定列的名称和数据类型。例 7:将数据库 mytest 中标 students 的 student_from 列重命名为 student_city,且数据类型为 char(20),允许为 NULL。Mysqlalter table mytest.students-change column student_from student_city char(20) null;Alter 子句可以修改或者删除表中指定列的默认值。例 8:将数据库

16、mytest 中表 students 的 student_sex 列的默认值改为 1(代表女 ).Mysqlalter table mytest.students-alter column student_sex set default 1;modify 子句可以修改指定列的数据类型,但不会干涉它的列名。与 change 的区别:change 是可以将列名和数据类型都一起改了的。例 9:将数据库 mytesr 中的表 students 的 students_name 列的数据类型由 char(50)更改为char(20),并且将此列设置为该表的第一列。Mysqlalter table myte

17、st.students-modify column student_name char(20) first;注意:add 和 modify 都可以通过 first 或者 after 关键字来修改指定列在表中的位置。例 10:删除数据库 mytest 中 students 的 student_contact 列。Mysqlalter table mytest.students-drop column student_contct;rename 子句可以为表重新赋予一个表名。例 11:使用 rename 子句,重新命名数据库 mytest 中表 students 的表名为university_st

18、udents.Mysqlalter table mytest.students-rename to mytest.university_students;或者使用另一种格式:例 12:使用 rename table 子句将数据库中 mytest 的 university_students 重新命名为 studentsMysqlrename table mytest.university_students to mytest.students;复制表的语法格式:Create table LIKE|ASLIKE:可以创建一个与旧表结构相同的表,其中列名、数据类型、空指定和索引都将复制到新表,但是表

19、的内容不会复制,因此创建的是一个和原表结构相同的空表;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.

20、students_copy;显示表的名称:show tables方法一:Mysqluse mytest;Mysqlshow tables;这里的 use 引用了数据库以后也可以不用 “;”直接就接下一个 show tables;方法二:Mysqlshow tables from mytests;显示表的结构:show columns(可以理解为每一列相当于属性,也即为表中的结构)例 16:显示数据库 mytest 中表 students 的结构。Mysqlshow columns from mytest.students;注意:mysql 支持用 describe 或者 desc 作为 sho

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

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

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

24、+-+-+-+-+| 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 | | studen

25、t_major | char(50) | NO | | NULL | +-+-+-+-+-+-+应该按照显示的表结构输入数据。注意:在 MySQL 不能输入中文或者现实不出中文的时候,可以使用 SET NAMES GBK;语句来临时改变字符集。例 2:使用 INSERTVALUES 语句向数据库 mytest 表 students 中插入一行数据,这行数据只给出 student_name、student_major 和 student_age 列的信息,对应的值是“李明” 、 “数学专业” , “22”,其中 student_id 由系统自动生成,其他采用默认或者不指定值。mysql inse

26、rt into mytest.students- values(李明,0,default,null,22,数学专业);其中的 0 代表的是学号;由于 AUTO_INCREMENT 属性列的值是在表中其它列被赋值以后生成的,所以在对表中其它列做任何赋值操作时,对该 AUTO_INCREMENT 属性列的引用只会返回数字 0.还有一种方法:由于自动增长大的学号值可以不必列出,由系统自动生成,同时允许NULL 值的列也可以不给出,因为系统允许其为空值,只需要输入提供的值即可。Mysqlinsert into mytest.students-(student_name,student_sex,stud

27、ent_age,student_major)values(李明,DEFAULT,22, 数学专业);这种方法的好处是不必知道表结构,不会出现输入列与结构不对应的情况。例 3:使用 INSERTSET 语句来实现例 2 的数据插入需求。Mysqlinsert into mytest.students-set student_name=李明,student_sex=default,student_age=22,student_major= 数学专业;采用这种方式的好处:输入方式更为灵活。例 4:使用 INSERTVALUES 一次向 mytest 表 students 中插入两行数据,数据分别为(

28、张三 , 1,24, 化学专业 )和(王五 , 1,23, 数学专业 ) 。mysql insert into mytest.students- (student_name,student_sex,student_age,student_major)- values(张三,1,24,化学专业),- (王五,1,23,数学专业);例 5:假设数据库 mytest 的表 student 中有一个拷贝备份表 student_copy,现使用insertselect 语句将 student_copy 中的数据合并到表 students。Mysqlinsert into mytest.students-

29、(student_name,student_sex,student_age,student_major)-select student_name,student_sex,student_age,student_major-from mytest.sudents_copy;REPLACE 语句的功能:插入的数据主键与已有数据的主键重复,则 INSERT 语句将无法插入此行。此时若是需要插入此行数据,则可以使用 REPLACE 语句来实现。则REPLACE 的功能是替换主键重复的行数据。REPLACE 的三种语法格式为:REPLACEVALUES、REPLACESET 、REPLACE SELEC

30、T 语句。例 6:使用 INSERT 语句成功执行例 2 以后,数据库 mytest 表 students 会存在这样一条数据:(王丽,1320,1,138xxxxxx,22,计算机专业);现在向该表插入一条新数据:( 李芳 ,1320, 1, 137xxxxxx,26, 会计专业 ) 。如果直接插入,则程序会出现错误,原因是两条数据的主键都一样,都是 1320。所以,此程序应该为:mysql replace into mytest.students- values(李芳,1320,1,137xxxxxx,26,会计专业);使用 DELETE 语句从单个表中删除数据DELETE FROM 表名

31、 where 子句/order by 子句/limit 子句Limit 子句:用于告知服务器在控制命令被返回到客户端前删除行的最大值。例 7:使用 DELETE 语句删除数据库 mytest 的表 students 中名字为王丽的学生信息。Mysqldelete from mytest.students where student_name=王丽;例 8:假设数据库中有三个表 tbl1,tbl2,tbl3,它们均含有 id 列,现在要求删除表 tbl1 中 id值等于 tbl2 的 id 值的所有行,以及表 tbl2 中 id 值等于 tbl3 的 id 值的所有行。注意:弄清楚要删除的是哪个

32、表。Mysqldelete tbl1,tbl2 from tbl1,tb2l,tbl3-where tbl1.id=tbl2.id and tbl2.id=tbl3.id;使用 TRUNCATE 删除表数据(清除表数据):使用 TRUNCATE 以后,表中的AUTO_INCREMENT 计数器重新被置为该列的初始值。对于参与了索引和视图的表,不能使用 TRUNCATE 语句删除数据,而应该使用 DELETE 语句。事务日志:事务日志是一个数据库文件分开的文件,它存储对数据库进行的所有更改,并全部记录插入、更新、删除、提交、回退和数据库模式变化。使用 UPDATE 语句修改单个表:例 9:使用

33、UPDATE 语句将数据库 mytest 的表 students 中姓名为“张三”的学生的联系方式更新为“139xxxxxx” 。mysql update mytest.students- set student_city=139xxxxxx- where student_name=张三;例 10:使用 UPDATE 语句将数据库 mytest 的表 students 中名为“李芳”的年龄修改为23,将专业修改为“物理专业” 。mysql update mytest.students- set student_age=23 and student_major=物理专业- where stude

34、nt_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,执行

35、SQL语句 INSERT 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,

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

37、UP 子句之前,GROUP 子句必须位于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

38、:查询数据库 mytest 中表 students 的 student_name 和 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 和 studen

39、t_id 列,同时要求输出 student_id 加上数字 100 后构成的新列的值。Mysqlselect student_name,student_id,student_id+100-from mytest.students;替换查询结果中的数据:在对表进行查询的时候,如果希望得到某些列的分析结果,而不仅仅是查询的原始值,则可以在 SELECT 语句中替换这些列。CASE 表达式:WHEN 条件 1 THEN 表达式 1WHEN 条件 2 THEN 表达式 2ELSE 表达式END AS 列名列名可更改也可以不更改。例 6:查询数据库 mytest 中表 students,输出 stude

40、nt_name 和 student_sex 列,判断student_sex,如果为 0,则显示为“男” ,否则显示为“女” ,并且在结果集中用“性别”来标注该列。mysql select student_name, /*要记得这里的逗号*/- case- when student_sex=0 then 男- else 女- end as 性别- from mytest.students;聚合函数:MySQL 中的内置函数,常常用于对一组值进行计算或者统计,然后返回计算或者统计结果。例 7:查询 mytest 中 students 表的年龄最大值。 (这里不需要用聚合函数)Mysqlselect

41、 max(student_age) from mytest.students;连接查询的类型以及使用方法:交叉连接:用于实现一张表的每一行与另一张表的每一行的笛卡尔积,返回两张表的每一行相乘的所有可能的搭配结果。例 8:假设数据库中有两张表,分别是 a 和 b,要求查询这两张表的交叉连接后的结果集。首先查看 a 表中的数据行:Mysqlselect * from mytest.a;id name1 a12 a2接着查看 b 表中的数据行:Mysqlselect * from mytest.b;id name1 b12 b23 b3计算 a 表和 b 表交叉连接的结果:Mysqlselect *

42、 from mytest.a cross join mytest.b;id name id name1 a1 1 b11 a1 2 b21 a1 3 b32 a2 1 b12 a2 2 b22 a2 3 b3内连接:利用条件表达式来消除交叉连接中的某些数据行,在 FROM 子句中使用关键字INNER JOIN 连接两张表,并使用 ON 子句来设置连接条件。如果没有任何条件的话,INNER JOIN 和 CROSS JOIN 在语法上是等同的,两者可以互换。需要注意的是:内连接是系统默认的表连接,所以在 from 子句后可以省略 INNER 关键字.例 9:在例 7 的表中,利用内连接查询出 a

43、 表 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 mytest.a inner join mytest.b on-mytest.a.Id=mytest.b.Id;不等连接:内连接的一种,只是在 ON 子句中的连接条件使用除 “=”的其他运算符。自连接:内连接的一种,如果需要在一个表中查找具有相同列值的行

44、,则可以考虑用自连接。自然连接:自然连接是只有在连接的列在两张表中的名称都相同时才会有用,否则返回的会是笛卡尔积。自然连接在 FROM 子句中使用关键字 NATURAL JOIN。外连接:外连接分为左外连接和右外连接,首先将连接的表分为基表和参考表,然后再以基表为依据返回满足条件和不满足条件的记录。关于特殊的比较运算符“”的说明:对于运算符“” ,当两个表达式彼此相等或者都等于空值的时候,比较的结果值为TRUE;若其中一个是空值或者都是非空值但却不相等时,则为 FALSE,不会出现UNKNOWN 的情况。例 11:查找数据库 mytest 的表 students,输出所有女生的信息。Mysql

45、select * from mytest.students -where student_sex=1;字符串匹配通配符有以下两种:%:%可以表示任何字符串,并且该字符串可以出现任意次数。例 12:查询数据库 mytest 中表 students,输出所有姓“李 ”的学生姓名和 ID。Mysqlselect student_name,student_id from mytest.students-where student_name like 李%;下划线_:下划线只匹配单个字符,而不是多个字符,也不是 0 个字符。例 13:查询数据库 mytest 中 students,输出姓李并且姓名只有两

46、个中文字符的学生名字。Mysqlselect student_name from mytest.students -where student_name like 李_;文本匹配;基本字符匹配:例 14:查询数据库 mytest 中 students,分别使用字符串匹配和文本匹配的方式,输出专业含有“物”字的学生信息。 (学生信息包括名字、年龄和专业)采用百分号匹配:Mysqlselect student_name,student_age,student_major -from mytest.students where student_major like %物%;采用正则表达式 regex

47、p 匹配:Mysqlselect student_name,sttudent_age,student_major-from mytest.students where student_major regexp 物; 这里可以在“物”左右括号。选择匹配:正则表达式而已达到待搜索对象的选择性匹配,使用|分隔符提供选择匹配的字符串,该分割符类似于在 SELECT 语句中使用 OR 子句。例 15:查询数据库 mytest 的表 students,输出“自动化专业 ”或者“数学专业”的学生姓名。mysql select student_name,student_major- from mytest.s

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报