MySQL数据库课件_第1页
MySQL数据库课件_第2页
MySQL数据库课件_第3页
MySQL数据库课件_第4页
MySQL数据库课件_第5页
已阅读5页,还剩45页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、v1.0可编辑可修改第一章数据库简介1 .数据库的概念数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,每 个数据库都有一个或多个不同的 API用于创建,访问,管理,搜索和复制所保存 的数据。我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统 (RDBMS来存储和管理的大数据量。 所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数 学概念和方法来处理数据库中的数据。RDBMS关系数据库管理系统(Relational Database Management System) 的特 点' 八、1 .数

2、据以表格的形式出现2 .每行为各种记录名称3 .每列为记录名称所对应的数据域4 .许多的行和列组成一张表单5 .若干的表单组成 databaseRDBMSS语在我们开始学习My SQL数据库前,让我们先了解下 RDBMS一些术语:数据库:数据库是一些关联表的集合。.数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。 歹U: 一列(数据元素)包含了相同的数据,例如邮政编码的数据。行:一行(二元组,或记录)是一组相关的数据,例如一条用户订阅的数据。冗余:存储两倍数据,冗余可以使系统速度更快。主键:主键是唯一的。一个数据表中只能包含一个主键。你可以使用主键来查询数 据。外键:外键

3、用于关联两个表。复合键:复合键(组合键)将多个列作为一个索引键,一般用于复合索引。索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。类似于书籍的目录。参照完整性:参照的完整性要求关系中不允许引用不存在的实体。与实体完整性是 关系模型必须满足的完整性约束条件,目的是保证数据的一致性。My SQL数据库My SQL是一个关系型数据库管理系统,由瑞典 My SQL A吆司开发,目前属于 Oracle公司。My SQL是一种关联数据库管理系统,关联数据库将数据保存在不 同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。My SQ

4、L是开源的,所以你不需要支付额外的费用。My SQL支持大型的数据库。可以处理拥有上千万条记录的大型数据库。My SQL使用标准的SQL数据语言形式。My SQL可以允许于多个系统上,并且支持多种语言。这些编程语言包括C、C+、Python、Java、Perl、PHP Eiffel 、Ruby和 TCL等。My SQL对PHP有很好的支持,PHP是目前最流行的 Web开发语言。My SQL支持大型数据库,支持 5000万条记录的数据仓库,32位系统表文件最大可 支持4GB 64位系统支持最大的表文件为 8TB。My SQL 系My SQL是可以定制的,采用了GPL协议,你可以修改源码来开发自己

5、的统。49第二章My SQL数据库的安装与配置1 .所需My SQL安装包EXE2 .安装方法步骤图解 1运行安装程序下一步3 .选才? "Customf自定义安装,下一步4 .这里可以将不需要的安装删除,可以更改安装目录,下一步5 .单击“Install ”按钮,开始安装6 .安装中,耐心等一会儿7 .这里是询问你是否要注册一个My的账号,或是使用已有的账号登陆My , 一般不需要了,点选“ SkipSign- Up ,按"Next”略过此步骤。8 .安装完成出现如下界面现在软件安装完成了,出现上面的界面,这里有一个很好的功能,My SQL配置向导,不用向以前一样,自己手

6、动乱七八糟的配置了,将 "Configure the My SQL Server now"前 面的勾打上,点“Finish ”结束软件的安装并启动My SQL配置向导。9 .进入配置过程9.选择配置方式选择配置方式,"Detailed Configuration(手动精确配置)"、"Standard,方便熟悉配置过程Configuration(标准配置)”,我们选择"Detailed Configuration10 .选择服务器类型,"Developer Machine (开发测试类,My SQL占用很少资源)"、

7、"Server Machine (服务器类型,My SQL占用较多资源)"、“Dedicated My SQL Server Machine(专门的数据库服务器,My SQL占用所有可用资源)”,大家根据自己的类型选择了,一般选“ Server Machine ",不会太少,也 不会占满。11 .选择My SQL数据库的大致用途,“M ULTI functional Database(通用多功能型,好)"、“ Tran SacTIONALDatabase Only (服务器类型,专注于事务处理,一般)"、" Non - Tran Sa

8、c TIONALDatabase Only (非事务处理型,较简单,主要做一些监控、记数用,对MYL SAM据类型的支持仅限于 Non - Tran SacTIONAL),随自己的用途而选择了,我这里选择“ Tran Sac TIONAL Database Only w ,按“ Next”继续。12 .对INNODB Table space进行配置,就是为INNODB数据库文件选择一个存储空间,如果修改了,要记住位置,重装的时候要选择一样的地方,否则可能会造成数据库损坏,当然,对数据库做个备份就没问题了,这里不详述。我这里没有修改,使用用默认位置,直接按“Next”继续fdert m Gy *

9、 Ife IrroOVm M g s tie defajll! stmxiServer kwfiancf Clrgunstioi W zarrfiwui >13.选择您的网站的一般 MySQL访问量,“Online Transaction Processing(OLTP)同时连接的数目,“Decision Support(DSS)/OLAP ( 20 个左右)”、5 500个左右)"、"Manual Setting (手动设置,自己输一个 数)",我这里选"Online Transaction Processing(OLTP)”,自己的服务器,应该

10、够用了,按“Next继续14 .是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器上访问MySQL数据库了,我这里启用,把前面的勾打上,Port Number 3306,在这个页面上,您还可以选择"启用标准模式"(Enable StrictMod® ,这样MySQLB不会允许细小的语法错误。如果您还是个新手,我建议您取消标准模式以减少麻烦。 但熟悉My SQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续15 .这个比较重要,就是对 My SQL默认数据库语言编码进行设置,第一个是西文编码,第二个是多字节的 通

11、用utf8编码,都不是我们通用的编码,这里选择第三个,然后在Character Set那里选择或填入“ GBK , 当然也可以用“ gb2312',区别就是 GBK的字库容量大,包括了 gb2312的所有汉字,并且加上了繁体字、 和其它乱七八糟的字一一使用My SQL的时候,在执行数据操作命令之前运行一次“ SET NAMES GBK;(运行一次就行了, GBK以替换为其它值,视这里的设置而定),就可以正常的使用汉字(或其它文字)了, 否则不能正常显示汉字。按“Next”继续。16 .选择是否将 My SQL安装为windows服务,还可以指定 Service Name (服务标识名称

12、),是否将 My SQL的bin目录加入到 Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“My -UUSER Name -PPASS word;”就可以了,不用指出 My的完整地址,很方便),我这里全部打上了勾,Service Name 不变。按"Next"弼一片 Se-i-iser In&EjMvtforton 阳(HyEQl l*Lta*cd- Caniiqur&w已r睁um t0出/1 5_D r-EStancQ1 blS-LlIlAB npIHfow,iWTM.E至匚、Hifi. itif rrtts*

13、wdr- E 5 He 隔裙牛 j-r * EVMndn”.Hjrna:/ Laurzi Ht WtSQ_ Serib a-rUnrrsticB >- Jmkrfhs Hitt liwm riwTf hiTHChaoi th.斗匕5 ti irtddg 幽gmEe f C?史口匕/国仁打作处:I i" (hr/明 口IH+wx &r 片 El E KBnwxl f.-= =-*±?to£ >17这一步询问是否要修改默认root用户(超级管理)的密码(默认为空),"New root password "如果要修改,就在此填入新

14、密码(如果是重装,并且之前已经设置了密码,在这里更改密码可能会出错,请留空,并将"Modify Security Settings "前面的勾去掉,安装配置完成后另行修改密码)," Confirm(再输一遍)”内再填一次,防止输错 。"Enable root access from remote machines (是否允许 root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account (新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,

15、设置完毕,按“ Next”继续。vi'iiSQ-Lilance所帖扣间bn知心总18 .确认设置无误,如果有误,按“ Back”返回检查。按“ Execute”使设置生效。19 .设置完毕,按“ Finish ”结束 MySQL的安装与配置一一这里有一个比较常见的错误,就是不能“Startservice ",一般出现在以前有安装My SQL的服务器上,解决的办法,先保证以前安装的My SQL服务器彻底卸载掉了;不行的话,检查是否按上面一步所说,之前的密码是否有修改,照上面的操作;如果依然不行,将My SQL安装目录下的data文件夹备份,然后删除,在安装完成后,将安装生成的d

16、ata文件夹删除,备份的data文件夹移回来,再重启 MySQL服务就可以了,这种情况下,可能需要将数据库检查一下,然后修复一次,防止数据出错。安装路径不要带有中文!也不能有空格括号之类的,否则就会遇到下图显示的错误防区wonEll Emfu»U 修仲一1 F4b-&UHtM>LWnprr *4rmv 中rmfrtfll* e could no4 b» mr,wd arni 疆nt,E M SW>vfFEf (E*JgrMBEr*JL 3*rw Wi/ML trrw到此我们的My SQL安装配置完成,我们需要测试My SQL是否真的安装配置成功。在我们的

17、 CMD命令行下输入 net start My SQL看是否能启动服务;M£cra&oTtlJiridoui£版本 6-1.7匕阻版权所有 8> 2009 rtici'osroFt C&i*poi-at ion (> 保宙所有权利。C: Misersdministi*at&p> netmysql请求的服务已经启动口请翩入HET HELPMSG 2182以获得更多的帮助。C: MJersAdninistPfttnr?使用工具 NAVI cat Lite for My SQL看是否能够链接到 My SQL数据库第三章数据库和表的

18、操作1.SQL语句分类DQL(Data Query Language ,数据查询语言)查询数据库中的数据SELECTDML (Data Manipulation Language ,数据操作语言) 插入、删除和修改数据库中的数据; INSERT UPDATE、DELET等DCL ( Data Control Language ,数据控制语言) 用来控制存取许可、存取权限等; GRANT REVOKED;DDL ( Data Definition Language ,数据定义语言) 用来建立数据库、数据库对象和定义其列 CREATE DROP 等事务控制语言(Tran Sac tional Co

19、ntrol Language, TCL )COMMIT ROLLBACK2.SQL语句书写规则书写SQL语句应遵循以下规则:SQL语句不区分大小写字符值和日期值区分大小写SQL语句可以写成一行或多行关键字不能简写或分割于多行子句通常置于单独行这样更具可读性并便于编辑Tab和缩进的使用可以提高程序的可读性关键字最好大写,其他词诸如表名、列名使用小写3 . SQL中的注释:SQL标准:多行注释:/* */。单行注释:-My SQL :“#"4 .数据库对象的命名规则必须以字母开头可包括数字和三个特殊字符(# _ $ )不要使用My SQLB保留字(保留字与关键字My SQL数据库系统的

20、用户只 能使用,不能用它来定义表的名称与字段名)同一 SchemaT的对象不能同名5 .列类型My SQL支持多种列类型:数值类型、日期/时间类型、 字符串(字符)类型My SQL中的数值数据类型:数值数据类型-整数in Ti m对或 INTEGERb g mm普通大小的整案.大整数14748364M21W483647尢符号的范用的44294骐729 5-922337203685477580B、9223372036884775807无符号的愈围是 0 18446744073709551615(J/ . JtaJ : 1. 事 、工3也不足13- E*T I J jj 'j 'I

21、 J1HnmUU UNSIGNEDiSun有储字节描述范围BrTRgl位字段类型M表示写中苴的堂歌,范围为从1和8TINYINTim1很小的整蒙128727无符号的亳围是惘之钻BOOLc BOOLEANTINNMT囿义闻。值极视为假,非0值视为真.SMALXINT2小的整数-32760-32767工符号的范围导6655 35MEDIUMIN7中笔大小的整数3-8388600-8383607无符号的范围是076777216数值数据类型-浮点数类量一下指述范圉FLOW MQ单精度3402 骁 3468E*38 到-1.1754。435%-3gDOUBLE WQ)双精度-1.767603134623

22、157E+3O85IJ2 225Q3a5£5072C(4E-308DECIMALKHO 或DEC变长 ,严格,整数晶大位数为65n小数最大位数)为 的定点数3。DECIMAI i-f -i rn I * I JL在内部以力日期/时间类型ES3DATE4日期京府的药国力”10060卜。丁到9火牛12-3 VDATETIME8日期和时阿的堀合SSJc,1000-01-01 00:00:00''9999-12-31 23:59:5 守TIMESTAMP4,19701-01 00:00 001flj'203 8-01-09 03:14:07'TIME3时间范围

23、是83出5卬5守到183B:5S吗9,YEAR(2|4J1两把或四位格式的 年.勒认导匚位格在四位格式中1允许的值是1001到2155和 00CQ.式在两位言式中,先说的值是7日到89,表示义伯70年到2069年T1/IESTAMP跟时区相关,崎人口期时,会先转换为本地时区后存 而取出时,也会需口期代换为木地扁区后显示C字符串类型CHA明胡CHARVRRCHAR做EINARYMVARBNARYfMThYBLOBTIMYTEXTBLOBTEXTM个固定K度M表示列反魔旭区是0到255个字符CHAR(nLM个变长对表示聂人列长山 Wj!£L05ie5.535附中EIMARY类型柔似于CH

24、AR类夔,但保存二年捌字中字蜡用得不是甘一道嗣字向中L+1为4于VMCHAR类型,但保声二迸制字栏亍符串而不是抬二步制字花丰L+1最大性度为25823尸看的ELOB?明L+1景大长度为233型T)不符的TEKT列L+2二例1制大对象晕大长度为陌制$住面一D字节云aLOB利,L+2长文本幅大区陨为6工53畀不-1)字行的TEXT列MEDIUM BLOB MEDIUMTEXT LON GE LOB LONGTEXT ENUM(VSETCvr'vZ. jL+3余大长度海137户段佃逑一1件节的EL。即刃记大长度为13777,215<2-*-1片符的TEXT列*L+3果大长戋为4 294

25、,9612ss或4GB(?兜-1>字节的BL0口蚪+3后大k度为4 234,967,205或4G良”7字蒋的TEXT列1或2个植埋啜七只群有一个值的芋符车1-&个校玲,可以官苦或去个假数据库的操作查看数据库:show databases;创建数据库:create database if not exists数据库名;删除数据库:drop database数据库名;使用数据库 use数据库名表的操作显示当前数据库中已有的数据表的信息:show tables;查看数据表中各列的信息:DESCRIBE|DESC表名歹U名;查看表的详细结构:show create table 表名 G;

26、备注:如果不加“ G”参数,显示的结果可能非常混乱;加上该参数可以使结果更加直观,易于查看。创建表:CREATE TABLED名(列名列类型,列名列类型);删除表:DROP TABLED修改表结构:增加列ALTER TABLE表名ADD歹U名 歹U类型;修改列类型ALTER TABLE表名MODIFY列名列类型;列改名ALTER TABLE表名CHANGE旧歹U名新列名列类型;删除列ALTER TABLE表名 DROP 歹U名;更改表名ALTER TABLE 表名 RENAME 新表名;RENAME TABLE1名 TO 新表名;支持一次重命名多个表。RENAME TABLE old_tabl

27、e1 TO tmp_table,new_table TO old_table,tmp_table TO new_table;表的约束:约束约束用于确保数据库数据满足特定的商业规则。约束是表级的强制规定,约束可分为列级、表级约束两种:列级约束是字段定义的一部分,只能应用在一个列上表级约束是独立于列的定义定义约束的关键字 constraint 。大部分数据库都支持以下五种约束:NOT NULL(非空)如果在列上定义了 not null ,那么当插入数据时,必须为列提供数据。not null约束只能定义在列级;UNIQUE(唯一):当定义了唯一约束后,该列值不能是重复的,但是可以为null。被定义的

28、唯一性约束,会自动建立一个唯一性的索引;UNIQUE勺束既可以定义在列级,也可以定义在表级;注意:如果字段定义为 UNIQUE勺束时,允许包含多个 NULL值。null 。PRIMARY KEY(主键)用于唯一的标识表行的数据,当定义主键约束后,该列不但不能重复而且不能为需要说明的是:一张表最多只能有一个主键,但是可以有多个unique约束。My SQL中会自动产生主键索引;主键约束既可以定义在列级,也可以定义在表级;FOREIGN KEY(外键)用于定义主表和从表之间的关系。外键约束要定义在从表上,主表则必须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列

29、存在或是为null。一个表中可以定义多个外键约束;My SQL中会自动产生外键键索引;外键约束既可以定义在列级,也可以定义在表级;CHECK检查)检查性约束,检查输入的每一个数据,只有符合条件的数据才允许插入到表中。check表达式的结果必须是一个布尔值check约束既可以定义在列级也可以定义在表级。所有的存储引擎均对 CHECK?句进行分析,但是忽略CHECKF句。添加约束可增加或删除约束,但不能直接修改;可使约束启用和禁用只要是可以使用表级约束语法来定义的约束,都可以通过add constraint来增加该约束。语法:ALTER TABLE tableADD CONSTRAINT cons

30、traint_name type (column);非空约束必须使用MODIFY?句增加ALTER TABLE table MODIFY column type not null;添加约束示例给学生表添加约束:1 .将sid设为主键alter table stu add constraint pk_sid primary key(sid);2 .为sname添加唯一约束alter table stu add constraint uq_sname unique(sname);3 .性别默认为男alter table stu modify sex char(2) default '男&#

31、39;注意:默认值不是约束,要加默认值可以在建表时添加或修改表结构。4 .性别为非空alter table stu modify sex char(2) not null;5 .给classId 添加外键alter table stu add constraint fk_classId foreign key (classId) references classes(classId);删除定义的约束*:删除NOT NULL约束> ALTER TABLEMO口IFY 列名 类型:* 删除UNIQUE约束尸 ALTER TABLE DROP INDEX 悻一约束名:* >删除PR工MA

32、R丫 KEY约束ALTER TAELE 表名 CROP PRIMARY KEY;* :* 删除FOREIGN KEV约束> ALTER TABLE 表名 DROP FOREIGN KEY 外键名;R (Sw,工删除定义的约束删除约束示例:删除主键约束alter table stu drop primary key;注意:如果主键列有自增长列, 必须先删除自增长,再删除主键:alter table stu changetno tno int(11);删除not null 约束alter table stu modify sex char(2);删除唯一约束alter table stu d

33、rop index uq_tname;删除外键约束alter table stu drop foreign key fk_stu_sc;表级约束和列级约束列级定义:是在定义列的同时定义约束如在classes表定义主键约束:create table classes(给约束取名字classId number(2) constraint pk_cid primary key,-cname varchar2(12);表级定义:是指在定义了所有列后,再定义约束。注意:not null约束只能在列级上定义。以建立stu表时定义主键约束和外键约束为例:creat table stu(sid number(4

34、), sname varchar2(20), classid number(2),constraint pk_sid primary key(sid),constraint uq_sname unique(sname);自动增长和默认值*:* AUTO INCREMENT:自动增长人为新的行产生唯一的标识-一个表只能有一个AUTCJNCREMENT属性.且该属性必须为主鲤 的一部分 AUO_ INCREMENT属性可以是任何整数受型*DEF具ULT默认值:指定默认值CREATE TAELEde|Lt Jd INT FRIMARV KEY AUTO_IWCREMENT.namF VAFCHHR

35、;7O) pdescription VARCHAR(255) DEFAULT '这痂伙很阑.什么也设留下 兄作业: 创建数据库:school在其中创建表: stu, course, sc添加相应的约束信息。第四章数据更新操作1课程学习目标:数据的增加数据的修改数据的删除2.插入数据INSERTINSERT 语句用于完成各种向数据表中插入数据的功能,可以对列赋值一次 插入一条记录,也可以根据select查询子句获得的结果记录集批量插入指定数 据表。语法格式:1 .所有字段都插入:INSERT INTO 表名 VALUES(value1 , value2 , value3);2 .插入部分

36、字段:INSERT INTO 表名(column1,column2,column3,.)VALUES (value1, value2 , value3,.);注意:1>插入空值可以用null ,默认值用default。2> 可以使用last_insert_id()函数获取上一条insert命令生成的 auto_increment 值。这是一个面向连接的函数,只对本次会话有效。、插入数据时的注意事项:注意事项1:每次插入一行数据,不可能只插入半行或者几列数据,因此,插入的数据是 否有效将按照整行的完整性的要求来检验;注意事项2:每个数据值的数据类型、精度和小数位数必须与相应的列匹配;

37、注意事项3:如果在设计表的时候就指定了某列不允许为空,则必须插入数据;注意事项4:插入的数据项,要求符合检查约束的要求注意事项5:具有缺省值的列,可以使用DEFAULT缺省)关键字来代替插入的数值;允许为空值的列,可以使用 NULL关键字来插入空值。修改数据UPDATEUPDATED句用于修改表中一列或多列的值,使用where子句限制修改的行。语法格式:UPDATE 表名 SET column1=value1,column2=value2,.WHERE 条件;删除数据DELETEDELET曲句向用户提供了删除数据的功能,同UPDAT曲句一样限定表中哪些行将被删除。语法格式:DELETE FRO

38、M 表名WHERE 条件;TRUNCATE TABLE 表名;二者关系:TRUNCATE TABLED功能上与不带 WHER打句的DELETE语句相同,二者均删除表中的全部行。但TRUNCATE TABL速度快,但不可以回滚;DELETE速度慢,但可以回滚。第五章数据库查询查询基本语法(单表查询):SELECT < 歹|名>FROM <表名WHERE <查询条件表达式>ORDER BY <非序的歹U名 >ASC或 DESC查询全部的行和列select * from stu;查询部分的列:select sid, sname, sex, age from

39、stu;查询满足条件的行的部分列:select sid, sname ,sex from stu where age=20;SQL操作符算术运算符:+-*/ %如:select sal*12 from emp;关系运算符:><>=<=!=或 <> <=>between, in, like, is null,注意:字符类型不区分大小写,binary类型区分大小写;如果字符串的后面有空白符,则会自动忽略逻辑运算符:and or not, &&, |, !基本查询怎样消除重复行:select distinct deptno , job

40、from emp;使用别名:格式:列名 别名 或列名as 别名如:select empno, sal*12"年工资" from emp;"年工资"from emp;或 select empno, sal*12 as注意:1 .如果别名中使用特殊字符,或者是强制大小写敏感,或有空格时,都可以通过为别名添加加双引号实现。2 . where子句中不能使用别名。null 值:空值是指不可用、未分配的值空值不等于零或空格任意类型都可以支持空值包括空值的任何算术表达式都等于空字符串和null进行连接运算,得到也是null.如何查询null值:使用is nullsel

41、ect * from emp where comm is null;select * from emp where comm is not null;通配符使用通配符进行模糊查询:如:查询名字以S开头的员工:select * from emp where ename like 'S%'基本查询使用逻辑操作指定多个查询条件select empno,ename,job,sal from empwhere ename ='SMITH ' or ename='FORD'在where条件中使用in :如:查询SMITH, FORT, KING的员工号、工作

42、,薪水select empno,ename,job,sal from empwhere ename in('SMITH','FORD','KING');在 where 条件中使用 between and :select empno,ename,job,sal from empwhere sal between 1000 and 2000;注意:数据库执行sql语句时是从右到左的顺序,所以尽可能把最优化条件写右边。基本查询一排序使用order by子句进行排序:排序的类型为两种升序 asc、降序desco数字、日期、字符串可以进行排序。NULL认为

43、是排序中的最大值。排序方式:按单个列排序select * from emp order by sal desc;按多列排序select * from emp order by sal desc, empno ;按别名排序select ename,sal*12“年薪" from emp order by"年薪" asc;一次插入多条语句select into 语句语句形式为:create table table2select vale1, value2from table1;要求:目标表table2不存在,因为在插入时会自动创建表table2 ,并将table1中指

44、定字段数据复制到 table2 中。insert into select from语句形式为:insert into table2(column1,column2)select col1,col2from table1;要求:目标表table2已创建好,且从table1表查询出来的列类型应与table2中列的类型一致。nsert into select value union select value语句形式为:insert into table2(column1,column2)select value1_1,value1_2 unionselect value2_1,value2_1 un

45、ion作用:将多行值一次性插入到表中要求:目标表table2已创建好。常用的聚合函数:MAX (colLiim) MIN (c oluim) COUNT (求) COUNT (co lumn)列中最大值列中最小值 表中行的数量 列不为null的行数COUNT (distinct csolunin)SUM (column)AVG (cQlum)Siu皿指定列中相异值的数量 到申所有值的总和冽中所有值的平均数分组查询:GROUP BYSELECT列名(条件),MAX(结果列名)AS要求查询的结果显示列名FROM表名GROUP BW名(条件)分组查询一多列分组:SELECT列名1 (条件),列名2

46、(条件),AVG(结果列名)AS要求查询的结果显示列名FROM表名GROUP BYiJ名1 (条件),列名2 (条件)分组查询一HAVINGHAVING的使用 HAVING通常是在 GROUP BY勺后面SELECT列名1 (条件),列名2 (条件),AVG(结果列名)AS平均成绩FROM表名GROUP BYiJ名1 (条件),列名2 (条件)HAVING avg(结果列名)10条件分组查询:WHER子句从数据源中去掉不符合其搜索条件的数据GROUP B什句搜集数据行到各个组中,统计函数为各个组计算统计值HAVING子句去掉不符合其组搜索条件的各组数据行ORDER BY排序使用顺序先 WHER

47、E接着1 GROUP BY 接着2 HAVING 最后 ORDER BYwith rollup如果group by子句里只有一个数据列,加上 with rollup关键字的效果是将在查询结果的最后一行将自动添加一条总数统计记录。如果按多列分组,将会进行阶段性总和(相当于“小计”),最后再为全体记录统计一个最终的总和(相当于“总计”)。例:select sno, count(*),avg(score)from scgroup by sno with rollup;统计函数的使用:SELECT字段名,group_concat(DISTINCT要连接的字段Order BY ASC/DESC排序字段S

48、eparator ' 分隔符')多表联接查询内联:INNER JOIN外联:左外联接 (LEFT JOIN)右外联接 (RIGHT JOIN)完整外联接(FULL JOIN) -My SQL 暂不支持交叉联接(CROSS JOIN)内联查询:NNER JOINPU做等值连接(2个表联接)SQL语法:SELECT * FROM点名1 INNER JOIN表名2 ON表名1.与表名2相同的 字段二表名2.与表名1相同的字段多表联接:SELECT * FROM豉1 INNER JOIN表2 ON表1.字段号=表2.字段号) INNER JOIN表3 ON表1.字段号=表3.字段号SE

49、LECT * FROM (俵 1 INNER JOIN 表 2 ON 表 1.字段号=表 2.字段号) INNER JOIN 表 3 ON 表 1.字段号=表 3.字段号)INNER JOIN 表 4 ON Member. 字段号=表4.字段号SELECT * FROM (俵 1 INNER JOIN 表 2 ON 表 1.字段号=表 2.字段号) INNER JOIN 表 3 ON 表 1.字段号=表 3.字段号)INNER JOIN 表 4 ON Member.字段号=表4.字段号)INNER JOIN 表5 ON Member.字段号=表5.字段号左外联接:显示左表T1中的所有行,并把右

50、表T2中符合条件加到左表T1中;右表T2中不符合条件,就不用加入结果表中,并且NULLS示。SQL语法:select * from T1 left outer join T2 on =右联(right outer join) 。显示右表T2中的所有行,并把左表T1中符合条件加到右表T2中;左表T1中 不符合条件,就不用加入结果表中,并且NULLS示SQL®句:select * from T1 right outer join T2 on =第四:全联(full outer join) 。显示左表T1、右表T2两边中的所有行,即把左联结果表+右联结果表组合 在一起,然后过滤掉重复的。S

51、QL®句:select * from T1 full outer join T2 on =更新关联数据表里的数据记录1 .修改关联数据表里的数据记录使用updata命令在一条SQLf句中对多个表中的数据记录做出修改语法:UPDATE product pINNER JOIN productPrice ppON =SET = * ,=CURDATE()WHERE < '2004-01-01'2删除关联数据表里的数据记录:从数据表t1里在数据表t2里没有匹配的记录查找出来并删除掉 1DELETE t1 FROM t1 LEFT JOIN T2 ON = WHERE I

52、S NULL 或DELETE FROM t1,USING t1 LEFT JOIN T2 ON = WHERE IS NULL从两个表中找出相同记录的数据并把两个表中的数据都删除掉1DELETE t1,t2 from t1 LEFT JOIN t2 ON = WHERE =25注意此处的delete t1,t2 from 中的t1,t2 不能是别名子查询:单行子查询指只返回一行N列数据的子查询语句。多行子查询指返回多行数据的子查询多列子查询在from子句中使用子查询子查询的本质:多个 select语句的嵌套在子查询中使用any、all操作符Any操作符的使用:any则表示,查询语句是以子查询返

53、回的值作为一个范围,在此值范围内进行查询,与比较操作符联合使用,表示与子查询返回的任何值比较为 TRUE,则返回 TRUE。例子:SELECT si FROM tablei WHERE si > ANY (SELECT s2 FROM table2)在子查询中,返回的是table2 的所有s2歹结果(5,12,20 ),然后将tablei 中的si的值与之进行比较,只要大于s2的任何值即表示为TRUE符合查询 条件。直倒返回结果如下所示:IN是=ANY的别名,二者相同,但NOTIN的别名却不是<> ANY而是<> SOME特殊情况如果table2 为空表,则ANY

54、后的结果为FALSE;如果子查询返回如(NULL,NULL,NULL)列为空的结果,则 ANY后的结果为 UNKNOWNALL操作符:ALL关键字必须接在一个比较操作符的后面,表示与子查询返回的所有值比较为TRUE,则返回TRUE例子:SELECT si FROM tablel WHERE si > ALL (SELECT s2 FROM table2)该查询不会返回任何结果,因为 si中没有比s2所有值都大的值。当然在该例子查询中,返回了 s2的所有值,您可以在该子查询中添加任何条件以限制返回的查询结果而无需全部返回。NOT IN是<> ALL的别名,二者相同特殊情况如果table2 为空表,则ALL后的结果为TRUE;如果子查询返回如(0,NULL,1) 这种尽管si比返回结果都大,但有空行的结果,贝U ALL后的结果为UNKNOWN行子查询:例子:artde 夷:aidtitleHQDlt巳ntuid1文章1交章1正交内容17文审了正文内宪13文章?文章3正文内容

温馨提示

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

评论

0/150

提交评论