招聘面试面试资料_第1页
招聘面试面试资料_第2页
招聘面试面试资料_第3页
招聘面试面试资料_第4页
招聘面试面试资料_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

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

文档简介

招聘面试面试资料查询数据是否存在用count(*)效率最快,不用其他方法查询语句where后面顺序影响效率范式第一范式(1NF):数据库表中的字段都是单一属性的,不可再分。谢谢阅读例如,如下的数据库表是符合第一范式的:字段1字段2字段3字段4而这样的数据库表是不符合第一范式的:字段1字段2字段3字段4字段3.1字段3.2DBMS精品文档放心下载的数据库。第二范式(2NF):数据库表中不存在非关键字段对任一候选关键字段的部分函数依赖(部感谢阅读谢谢阅读字段都完全依赖于任意一组候选关键字。(学号,课程名称)→(姓名,年龄,成绩,学分)精品文档放心下载这个数据库表不满足第二范式,因为存在如下决定关系:(课程名称)→(学分)(学号)→(姓名,年龄)即存在组合关键字中的字段决定非关键字的情况。由于不符合2NF,这个选课关系表会存在如下问题:(1)数据冗余:同一门课程由n个学生选修,"学分"就重复n-1m门课程,姓名感谢阅读和年龄就重复了m-1次。(2)更新异常:"学分"精品文档放心下载程学分不同的情况。(3)插入异常:"学号"感谢阅读名称和学分也无法记录入数据库。(4)删除异常:精品文档放心下载此同时,课程名称和学分信息也被删除了。很显然,这也会导致插入异常。精品文档放心下载把选课关系表SelectCourse改为如下三个表:感谢阅读学生:Student(学号,姓名,年龄);课程:Course(课程名称,学分);选课关系:SelectCourse(学号,课程名称,成绩)。精品文档放心下载谢谢阅读另外,所有单关键字的数据库表都符合第二范式,因为不可能存在组合关键字。感谢阅读第三范式(3NF):在第二范式的基础上,数据表中如果不存在非关键字段对任一候选关键精品文档放心下载字段的传递函数依赖则符合第三范式。所谓传递函数依赖,指的是如果存在"A→B→谢谢阅读C"C传递函数依赖于A精品文档放心下载赖关系:关键字段→非关键字段x→非关键字段y假定学生关系表为Student(学号,姓名,年龄,所在学院,学院地点,学院电话)感谢阅读键字为单一关键字"学号",因为存在如下决定关系:(学号)→(姓名,年龄,所在学院,学院地点,学院电话)精品文档放心下载这个数据库是符合2NF的,但是不符合3NF,因为存在如下决定关系:精品文档放心下载(学号)→(所在学院)→(学院地点,学院电话)感谢阅读即存在非关键字段"学院地点"、"学院电话"对关键字段"学号"的传递函数依赖。谢谢阅读它也会存在数据冗余、更新异常、插入异常和删除异常的情况,读者可自行分析得知。谢谢阅读把学生关系表分为如下两个表:学生:(学号,姓名,年龄,所在学院);学院:(学院,地点,电话)。精品文档放心下载鲍依斯-科得范式(BCNF):在第三范式的基础上,数据库表中如果不存在任何字段对任一感谢阅读候选关键字段的传递函数依赖则符合第三范式。假设仓库管理关系表为StorehouseManage(仓库ID,存储物品ID,管理员ID,数量),谢谢阅读感谢阅读决定关系:(仓库ID,存储物品ID)→(管理员ID,数量)精品文档放心下载(管理员ID,存储物品ID)→(仓库ID,数量)精品文档放心下载所以,(仓库ID,存储物品ID)和(管理员ID,存储物品ID)都是StorehouseManage的精品文档放心下载精品文档放心下载下决定关系:(仓库ID)→(管理员ID)(管理员ID)→(仓库ID)即存在关键字段决定关键字段的情况,所以其不符合BCNF范式。它会出现如下异常情谢谢阅读况:(1)删除异常:"存储物品ID"和"数量"信息被删除的同时,"仓库ID"和"管理员精品文档放心下载ID"信息也被删除了。(2)插入异常:当仓库没有存储任何物品时,无法给仓库分配管理员。(3)更新异常:如果仓库换了管理员,则表中所有行的管理员ID都要修改。精品文档放心下载把仓库管理关系表分解为二个关系表:仓库管理:StorehouseManage(仓库ID,管理员ID);

仓库:Storehouse(仓库ID,存储物品ID,数量)。感谢阅读这样的数据库表是符合BCNF范式的,消除了删除异常、插入异常和更新异常。谢谢阅读mysql日志MySQL有几个不同的日志文件,可以帮助你找出mysqld内部发生的事情:精品文档放心下载日志文件记入文件中的信息类型错误日志记录启动、运行或停止mysqld时出现的问题。感谢阅读查询日志记录建立的客户端连接和执行的语句。更新日志记录更改数据的语句。不赞成使用该日志。二进制日志记录所有更改数据的语句。还用于复制。慢查询日志记录所有执行时间超过long_query_time秒的所有查询或不使用索引的查询。谢谢阅读错误日志log-error=d:/mysql/log/log-error.log感谢阅读二进制日志log-bin=d:/wamp/logs/binbinlog_format=Statement#d:/wamp/logs/bin.000001(包括所有增删改查的记录)general_log=ONgeneral_log_file=d:/wamp/logs/mysql2.log感谢阅读Mysqlbinlog日志有三种格式,分别为Statement,MiXED,以及ROW!精品文档放心下载1.Statement:每一条会修改数据的sql都会记录在binlog中。感谢阅读2.Row:不记录sql语句上下文相关信息,仅保存哪条记录被修改。精品文档放心下载3.Mixedlevel:是以上两种level的混合使用,一般的语句修改使用statment格式保存谢谢阅读binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存精品文档放心下载binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在精品文档放心下载Statement和Row之间选择一种.新版本的MySQL中队rowlevel感谢阅读是所有的修改都会以rowlevelstatement模式来谢谢阅读记录。至于update或者delete等修改数据的语句,还是会记录所有行的变更。谢谢阅读1.RowLevel:5.1.5开始支持。mater记录每行数据的更改日志,slave根据谢谢阅读日志逐行应用。优点:数据一致性更有保障。缺点:可能造成日志文件比较大谢谢阅读2.StatementLevelmaster记录每个执行的query语句以及一些上下文信息,感谢阅读slave节点根据这些信息重新在slavebinarylog精品文档放心下载某些情况下数据一致性难以保障3.MixedLevel:MySQL根据情况选择哪种复制方式。5.1.8开始支持谢谢阅读mysql配置参数key_buffer_sizeMyISAM表起作用,key_buffer_size指定索引缓冲区的大小,它决精品文档放心下载定索引处理的速度,尤其是索引读的速度。---键高速缓存区大小感谢阅读我分配给mysql的key_buffer_size为1G内存。感谢阅读mysql>setglobalkey_buffer_size=1024*1024*1024;精品文档放心下载key_buffer_size(关键参数),索引块用的缓冲区大小,所有的连接程序线程共用精品文档放心下载key_cache_block_size每一个索引block的大小,默认1024字节---键高速缓存块大小精品文档放心下载table_cache:指示表高速缓存的大小。当Mysql访问一个表时,如果在Mysql表缓冲区中谢谢阅读谢谢阅读mysql默认安装情况下,table_cache的值在2G内存以下的机器中的值默认时256精品文档放心下载到512,如果机器有4G内存,则默认这个值是2048谢谢阅读query_cache_sizeMySQL服务器可以使用查询缓存来提高那些重复执行的SELECT感谢阅读语句的处理速度。MySQL查询高速缓冲查询缓存存储SELECT查询的文本以及发送给客户端的相应结果。如果随后收到一个相同的精品文档放心下载查询,服务器从查询缓存中重新得到查询结果,而不再需要解析和执行查询。精品文档放心下载设置query_cache_size系统变量。设置为0表示禁用查询缓存。默认缓存大小设置为0;精品文档放心下载也就是禁用查询缓存。当设置query_cache_size40KB来分配其数精品文档放心下载据结构。(具体大小取决于系统结构)。如果你把该值设置的太小,将会得到一个警告,如感谢阅读本例所示:mysql>SETGLOBALquery_cache_size=40000;感谢阅读QueryOK,0rowsaffected,1warning(0.00sec)精品文档放心下载优化优化SELECT语句和其它查询Where条件语句的执行顺序会影响效率Mysql中从左至右执行条件语句,所以要先把结果范围小的放在where后第一个地方谢谢阅读数据库查询的结果会放在result中,然后会在内存中保留,所以最好感谢阅读mysql_free_result($result);比较好感谢阅读Char和varchar的区别CHAR:CHAR存储定长数据很方便,CHAR字段上的索引效率级高感谢阅读VARCHAR:存储变长数据,但存储效率没有CHAR高感谢阅读EXPLAIN和DESCINSERT语句的速度加快插入的一些方法:(1)如果同时从同一个客户端插入很多行,使用含多个VALUE的INSERT语句同时插入几行。精品文档放心下载这比使用单行INSERT语句快(在某些情况下快几倍)。谢谢阅读(2)如果你正向一个非空表添加数据,可以调节bulk_insert_buffer_size变量,使数据插精品文档放心下载入更快。这个参数设置的是bulkinsert的缓存大小,默认是8M。感谢阅读(3)如果你从不同的客户端插入很多行,能通过INSERTDELAYED语句加快速度。感谢阅读(4)用MyISAM,如果在表中没有删除的行,能在SELECT语句正在运行的同时插入行。精品文档放心下载(5)当从一个文本文件装载一个表时,使用LOADDATAINFILE。这通常比使用很多INSERT谢谢阅读语句快20倍。UPDATE语句的速度更新查询的优化同SELECT查询一样,需要额外的写开销。写速度依赖于更新的数据大小和谢谢阅读更新的索引的数量。没有更改的索引不被更新。精品文档放心下载更新比一次做一个快得多。请注意对使用动态记录格式的MyISAM表,更新一个较长总长的记录可能会切分记录。如果精品文档放心下载经常这样该,偶尔使用OPTIMIZETABLE很重要。感谢阅读DELETE语句的速度谢谢阅读的大小。可以使用key_cache_block_size变量为具体的键高速缓冲指定块缓存区的大小。这样允许精品文档放心下载为索引文件调节I/O操作的性能。优化数据库结构使你的数据尽可能小列索引多列索引MyISAM键高速缓冲,可以使用key_buffer_size系统变量控制键高速缓冲的大小。精品文档放心下载语言结构用户变量设置用户变量的一个途径是执行SET语句:SET@var_name=expr[,@var_name=expr]...精品文档放心下载对于SET可以使用=或:=作为分配符expr精品文档放心下载或者NULL值。也可以用语句代替SET:=而不能用谢谢阅读=,因为在非SET语句中=被视为一个比较操作符:mysql>SET@t1=0,@t2=0,@t3=0;谢谢阅读mysql>SELECT@t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;谢谢阅读注释:在SELECT语句中,表达式发送到客户端后才进行计算。这说明在HAVING、GROUP感谢阅读BY或者ORDERBY子句中,不能使用包含SELECT列表中所设的变量的表达式。谢谢阅读mysql>SET@a='test';mysql>SELECT@a,(@a:=20)FROMtbl_name;感谢阅读系统变量mysqld服务器维护两种变量。全局变量影响服务器整体操作。会话变量影响具体客户端连感谢阅读接的操作。要想设置一个GLOBAL变量的值,使用下面的语法:谢谢阅读mysql>SETGLOBALsort_buffer_size=value;精品文档放心下载mysql>SET@@global.sort_buffer_size=value;感谢阅读要想设置一个SESSION变量的值,使用下面的语法:谢谢阅读mysql>SETSESSIONsort_buffer_size=value;感谢阅读mysql>SET@@session.sort_buffer_size=value;精品文档放心下载mysql>SETsort_buffer_size=value;精品文档放心下载要想检索一个GLOBAL变量的值,使用下面的语法:精品文档放心下载mysql>SELECT@@global.sort_buffer_size;精品文档放心下载mysql>SHOWGLOBALVARIABLESlike'sort_buffer_size';精品文档放心下载要想检索一个SESSION变量的值,使用下面的语法:精品文档放心下载mysql>SELECT@@sort_buffer_size;感谢阅读mysql>SELECT@@session.sort_buffer_size;谢谢阅读mysql>SHOWSESSIONVARIABLESlike'sort_buffer_size';感谢阅读列类型数值类型·BIT:位字段类型。M表示每个值的位数,范围为从1到64。精品文档放心下载·TINYINT:很小的整数。带符号的范围是-128到127。无符号的范围是0到255。感谢阅读·SMALLINT:小的整数。带符号的范围是-32768到32767。无符号的范围是0到65535。感谢阅读·MEDIUMINT:中等大小的整数。带符号的范围是-8388608到8388607。感谢阅读·INT:普通大小的整数。带符号的范围是-2147483648到2147483647。谢谢阅读·INTEGER:这是INT的同义词。·BIGINT:大整数。带符号的范围是-9223372036854775808到9223372036854775807。谢谢阅读·BOOL,BOOLEAN:是TINYINT(1)的同义词。谢谢阅读·FLOAT:浮点数。·DOUBLE:普通大小(双精度)浮点数。·DECIMAL[(M[,D])]定点数。M是小数位数(精度)的总数,D是小数点(标度)D感谢阅读是0,则值没有小数点或分数部分。FLOAT(7,4)的一个列可以显示为-999.9999。感谢阅读DECIMAL和NUMERIC类型在MySQL中视为相同的类型。感谢阅读DECIMAL(5,2):从-999.99到999.99感谢阅读日期和时间类型·DATE:日期。MySQL以'YYYY-MM-DD'格式显示DATE值,但允许使用字符串或数字为DATE感谢阅读列分配值。·DATETIME'YYYY-MM-DDHH:MM:SS'格式显示DATETIME谢谢阅读使用字符串或数字为DATETIME列分配值。·TIMESTAMP:时间戳。·TIME'HH:MM:SS'格式显示TIMETIME列分配值。谢谢阅读·YEAR[(2|4)]:两位或四位格式的年。字符串类型·CHAR:固定长度字符串。列长度0到255个字符精品文档放心下载·VARCHAR:可变长度字符串。·BINARY:BINARY类型类似于CHAR类型,但保存二进制字节字符串而不是非二进制字符感谢阅读串。·VARBINARYVARBINARY类型类似于VARCHAR类型,但保存二进制字节字符串而不是非二精品文档放心下载进制字符串。·TINYBLOB:最大长度为255(28–1)字节的BLOB列。精品文档放心下载·BLOB:最大长度为65,535(216–1)字节的BLOB列。精品文档放心下载·MEDIUMBLOB:最大长度为16,777,215(224–1)字节的BLOB列。精品文档放心下载·LONGBLOB:最大长度为4,294,967,295或4GB(232–1)字节的BLOB列。LONGBLOB列的感谢阅读最大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。精品文档放心下载·TINYTEXT:最大长度为255(28–1)字符的TEXT列。谢谢阅读·TEXT[(M)]:最大长度为65,535(216–1)字符的TEXT列。感谢阅读·MEDIUMTEXT:最大长度为16,777,215(224–1)字符的TEXT列。精品文档放心下载·LONGTEXT4,294,967,295或4GB(232–1)字符的TEXT列。LONGTEXT列的最精品文档放心下载大有效(允许的)长度取决于客户端/服务器协议中配置最大包大小和可用的内存。谢谢阅读·ENUM:枚举类型。对于BLOB和TEXT列的索引,必须指定索引前缀的长度。BLOB和TEXT列不能有默认值。感谢阅读函数和操作符以下列表显示了操作符优先级的由低到高谢谢阅读:=||,OR,XOR&&,ANDNOTBETWEEN,CASE,WHEN,THEN,ELSE精品文档放心下载=,<=>,>=,>,<=,<,<>,!=,IS,LIKE,REGEXP,IN谢谢阅读|&<<,>>-,+*,/,DIV,%,MOD^-(一元减号),~(一元比特反转)!BINARY,COLLATE字符串函数(7)CONCAT(str1,str2,...):返回结果为连接参数产生的字符串。精品文档放心下载(10)FIND_IN_SET(str,strlist)精品文档放心下载假如字符串str在由N子链组成的字符串列表strlist中,则返回值的范围在1到N精品文档放心下载之间。如果str不在strlist或strlist为空字符串,则返回值为0。精品文档放心下载mysql>SELECTFIND_IN_SET('b','a,b,c,d');感谢阅读->2(12)INSERT(str,pos,len,newstr)谢谢阅读返回字符串str,其子字符串起始于pos位置被字符串newstr取代的len字符。如果谢谢阅读pos超过字符串长度,则返回值为原始字符串。假如len的长度大于其它字符串的长度,精品文档放心下载则从位置pos开始替换。若任何一个参数为null,则返回值为NULL。谢谢阅读mysql>SELECTINSERT('Quadratic',3,4,'What');精品文档放心下载->'QuWhattic'(13)LCASE(str):LCASE()是LOWER()的同义词。谢谢阅读(14)LEFT(str,len):返回从字符串str开始的len最左字符。谢谢阅读(15)LENGTH(str):返回值为字符串str的长度,单位为字节。感谢阅读(16)LOAD_FILE(file_name)读取文件并将这一文件按照字符串的格式返回。文件的位置必须在服务器上,你必须为文件精品文档放心下载制定路径全名,而且你还必须拥有FILE特许权。文件必须可读取,文件容量必须小于精品文档放心下载max_allowed_packet字节。若文件不存在,或因不满足上述条件而不能被读取,则函数返回值为NULL。精品文档放心下载mysql>UPDATEtbl_nameSETblob_column=LOAD_FILE('/tmp/picture')感谢阅读WHEREid=1;(17)LOCATE(substr,str),LOCATE(substr,str,pos)精品文档放心下载第一个语法返回字符串str中子字符串substr精品文档放心下载str中子字符串substr的第一个出现位置,起始位置在possubstr不在str谢谢阅读返回值为0。(18)LOWER(str):变为小写字母的字符(19)LPAD(str,len,padstr):返回字符串str,其左边由字符串padstr填补到len字谢谢阅读符长度。(20)LTRIM(str):返回字符串str,其开头空格字符被删除。精品文档放心下载(22)MID(str,pos,len):MID(str,pos,len)是SUBSTRING(str,pos,len)的同义词。精品文档放心下载(25POSITION(substrINstr)POSITION(substrINstr)是LOCATE(substr,str)同义感谢阅读词。(26)REPEAT(str,count):返回一个由重复的字符串str组成的字符串,字符串str的精品文档放心下载数目等于count。(27)REPLACE(str,from_str,to_str):返回字符串str以及所有被字符串to_str替代精品文档放心下载的字符串from_str。(28)REVERSE(str):返回字符串str,顺序和字符顺序相反。谢谢阅读(29)RIGHT(str,len):从字符串str开始,返回最右len字符。谢谢阅读(30)RPAD(str,len,padstr):返回字符串str,其右边被字符串padstr填补至len字感谢阅读符长度。(31)RTRIM(str):返回字符串str,结尾空格字符被删去。感谢阅读(32)SPACE(N):返回一个由N间隔符号组成的字符串。精品文档放心下载mysql>SELECTSPACE(6);->''(34)SUBSTRING(str,pos),SUBSTRING(strFROMpos)SUBSTRING(str,pos,len),感谢阅读SUBSTRING(strFROMposFORlen)精品文档放心下载不带有len参数的格式从字符串str返回一个子字符串,起始于位置pos。带有len参数谢谢阅读的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置pos。使用感谢阅读FROM的格式为标准SQLpos精品文档放心下载起始于字符串结尾的pospos精品文档放心下载使用一个负值。(36)TRIM(37)UCASE(str):UCASE()是UPPER()的同义词。谢谢阅读(40)UPPER(str):转化为大写字母的字符感谢阅读模式匹配(1)like(2)REGEXPmysql>SELECT'a'REGEXP'A','a'REGEXPBINARY'A';精品文档放心下载->10数值函数(3)RAND()RAND(N)返回一个随机浮点值v0到1之间(即,其范围为0≤v≤1.0)若已指定感谢阅读一个整数参数N,则它被用作种子值,用来产生重复序列。谢谢阅读mysql>SELECTRAND();->0.9233482386203mysql>SELECTRAND(20);->0.15888261251047mysql>SELECTRAND(20);->0.15888261251047全文搜索功能MATCH(col1,col2,...)AGAINST(expr[INBOOLEANMODE|WITHQUERYEXPANSION])精品文档放心下载mysql>CREATETABLEarticles(感谢阅读->idINTUNSIGNEDAUTO_INCREMENTNOTNULLPRIMARYKEY,谢谢阅读->titleVARCHAR(200),->bodyTEXT,->FULLTEXT(title,body)->);QueryOK,0rowsaffected(0.00sec)感谢阅读mysql>SELECT*FROMarticles精品文档放心下载->WHEREMATCH(title,body)AGAINST('database');谢谢阅读布尔全文搜索利用INBOOLEANMODE修改程序,MySQL也可以执行布尔全文搜索:谢谢阅读mysql>SELECT*FROMarticlesWHEREMATCH(title,body)感谢阅读->AGAINST('+MySQL-YourSQL'INBOOLEANMODE);精品文档放心下载+:一个前导的加号表示该单词必须出现在返回的每一行的开头位置。感谢阅读-:一个前导的减号表示该单词一定不能出现在任何返回的行中。精品文档放心下载无操作符(当没有指定+或–的情况下)感谢阅读MATCH()...AGAINST()不使用INBOOLEANMODE修改程序时的运作很感谢阅读类似。以下例子展示了一些使用布尔全文符号的搜索字符串:'applebanana':寻找包含至少两个单词中的一个的行。谢谢阅读'+apple+juice':寻找两个单词都包含的行。谢谢阅读'+applemacintosh'apple”的行,若这些行也包含单词“macintosh”,感谢阅读则列为更高等级。'+apple-macintosh':寻找包含单词“apple”但不包含单词“macintosh”的行。谢谢阅读'+apple+(>turnover<strudel)':寻找包含单词“apple”和“turnover”的行,或包谢谢阅读“apple”的行(无先后顺序),然而包含“apple的行较包含谢谢阅读“applestrudel”的行排列等级更为高。'apple*':寻找包含“apple”、“apples”、“applesauce”或“applet”的行。谢谢阅读'"somewords"':寻找包含原短语“somewords”的行(例如,包含“somewordsof感谢阅读wisdom”的行,而非包含“somenoisewords”的行)。感谢阅读全文搜索只适用于MyISAM表。控制流程函数mysql>SELECTCASE1WHEN1THEN'one'谢谢阅读->WHEN2THEN'two'ELSE'more'END;精品文档放心下载->'one'2)IF(expr1,expr2,expr3)mysql>SELECTIF(1>2,2,3);谢谢阅读->3(3)IFNULL(expr1,expr2)假如expr1不为NULL,则IFNULL()的返回值为expr1;否则其返回值为expr2。精品文档放心下载(4)NULLIF(expr1,expr2)如果expr1=expr2成立,那么返回值为NULL,否则返回值为expr1。感谢阅读信息函数(1)BENCHMARK(count,expr)BENCHMARK()函数重复count次执行表达式expr。它可以被用于计算MySQL处理表感谢阅读结果值通常为0mysql客户端内部,能够报告问询执行的次谢谢阅读数:mysql>SELECTBENCHMARK(1000000,ENCODE('hello','goodbye'));精品文档放心下载+----------------------------------------------+谢谢阅读|BENCHMARK(1000000,ENCODE('hello','goodbye'))|精品文档放心下载+----------------------------------------------+感谢阅读|0|+----------------------------------------------+感谢阅读1rowinset(4.74sec)(2)FOUND_ROWS()ASELECT语句可能包括一个LIMIT精品文档放心下载下,需要不用再次运行该语句而得知在没有LIMIT时到底该语句返回了多少行。为了知道感谢阅读这个行数,包括在SELECT语句中选择SQL_CALC_FOUND_ROWS,随后调用谢谢阅读FOUND_ROWS():mysql>SELECTSQL_CALC_FOUND_ROWS*FROMtbl_name精品文档放心下载->WHEREid>100LIMIT10;精品文档放心下载mysql>SELECTFOUND_ROWS();谢谢阅读(3)LAST_INSERT_ID()LAST_INSERT_ID(expr)谢谢阅读自动返回最后一个INSERT或UPDATE问询为AUTO_INCREMENT列设置的第一个发生的值。感谢阅读mysql>SELECTLAST_INSERT_ID();感谢阅读->195假如你使用单INSERT语句插入多个行,LAST_INSERT_ID()只返回插入的第一行产生的谢谢阅读值。若给出作为到LAST_INSERT_ID()的参数expr,则参数的值被函数返回,并作为被精品文档放心下载LAST_INSERT_ID()返回的下一个值而被记忆。这可用于模拟序列:精品文档放心下载创建一个表,用来控制顺序计数器并使其初始化:omysql>CREATETABLEsequence(idINTNOTNULL);精品文档放心下载omysql>INSERTINTOsequenceVALUES(0);精品文档放心下载使用该表产生这样的序列数:omysql>UPDATEsequenceSETid=LAST_INSERT_ID(id+1);精品文档放心下载omysql>SELECTLAST_INSERT_ID();谢谢阅读(4)ROW_COUNT()ROW_COUNT()返回被前面语句升级的、插入的或删除的行数。谢谢阅读GROUPBY(聚合)函数(1)AVG([DISTINCT]expr)返回expr的平均值。DISTINCT选项可用于返回expr的不同值的平均值。精品文档放心下载(2)COUNT(expr)返回SELECT语句检索到的行中非NULL值的数目。精品文档放心下载(3)MIN([DISTINCT]expr),MAX([DISTINCT]expr)感谢阅读返回expr的最小值和最大值。(4)SUM([DISTINCT]expr)返回expr的总数。GROUPBY修改程序GROUPBY子句允许一个将额外行添加到简略输出端WITHROLLUP修饰符。感谢阅读mysql>SELECTyear,SUM(profit)FROMsalesGROUPBYyearWITHROLLUP;精品文档放心下载+------+-------------+|year|SUM(profit)|+------+-------------+|2000|4525||2001|3010||NULL|7535|+------+-------------+当你使用ROLLUP时,你不能同时使用ORDERBY子句进行结果排序。谢谢阅读SQL语句语法数据定义语句ALTERTABLE语法mysql>ALTERTABLEt2DROPCOLUMNc,DROPCOLUMNd;//删除列谢谢阅读mysql>ALTERTABLEt1CHANGEbbBIGINTNOTNULL;//变更列类型谢谢阅读mysql>ALTERTABLEt1CHANGEabINTEGER;//重命名,并变更类型感谢阅读mysql>ALTERTABLEt1MODIFYbBIGINTNOTNULL;//改变列的类型谢谢阅读InnoDB支持使用ALTERTABLE来取消外键:精品文档放心下载ALTERTABLEyourtablenameDROPFOREIGNKEYfk_symbol;精品文档放心下载ALTERTABLEDROPPARTITIONp0,p1;//取消分区精品文档放心下载mysql>ALTERTABLEt1RENAMEt2;//把表t1重新命名为t2感谢阅读mysql>ALTERTABLEt2ADDdTIMESTAMP;//添加一个新的TIMESTAMP列,名称为d谢谢阅读mysql>ALTERTABLEt2ADDINDEX(d),ADDINDEX(a);//在列d和列a中添加索引精品文档放心下载CREATETABLE语法mysql>CREATETABLEtest(aINTNOTNULLAUTO_INCREMENT,谢谢阅读->PRIMARYKEY(a),KEY(b))谢谢阅读->TYPE=MyISAMSELECTb,cFROMtest2;谢谢阅读本语句用于创建含三个列(a,b,c)的MyISAM表。注意,用SELECT语句创建的列附在表谢谢阅读的右侧,而不是覆盖在表上。DROPINDEX语法DROPINDEXindex_nameONtbl_name感谢阅读DROPTABLE语法DROP[TEMPORARY]TABLE[IFEXISTS]精品文档放心下载tbl_name[,tbl_name]...[RESTRICT|CASCADE]RENAMETABLE语法RENAMETABLEtbl_nameTOnew_tbl_name感谢阅读[,tbl_name2TOnew_tbl_name2]...谢谢阅读数据操作语句delete语句单表语法:DELETE[LOW_PRIORITY][QUICK][IGNORE]FROMtbl_name感谢阅读[WHEREwhere_definition][ORDERBY...][LIMITrow_count]·如果您指定LOW_PRIORITYDELETE精品文档放心下载执行。·对于MyISAM表,如果您使用QUICK关键词,则在删除过程中,存储引擎不会合并索引端感谢阅读结点,这样可以加快部分种类的删除操作的速度。·在删除行的过程中,IGNORE关键词会使MySQL忽略所有的错误。感谢阅读INSERT语法INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE]感谢阅读[INTO]tbl_name[(col_name,...)]谢谢阅读VALUES({expr|DEFAULT},...),(...),...感谢阅读[ONDUPLICATEKEYUPDATEcol_name=expr,...]精品文档放心下载或:INSERT[LOW_PRIORITY|DELAYED|HIGH_PRIORITY][IGNORE]感谢阅读[INTO]tbl_nameSETcol_name={expr|DEFAULT},...谢谢阅读[ONDUPLICATEKEYUPDATEcol_name=expr,...]精品文档放心下载或:INSERT[LOW_PRIORITY|HIGH_PRIORITY][IGNORE]精品文档放心下载[INTO]tbl_name[(col_name,...)]谢谢阅读SELECT...[ONDUPLICATEKEYUPDATEcol_name=expr,...]感谢阅读(1)如果您使用DELAYED关键字,则服务器会把待插入的行放到一个缓冲器中,而发送感谢阅读INSERTDELAYED语句的客户端会继续运行。如果表正在被使用,则服务器会保留这些行。感谢阅读当表空闲时,服务器开始插入行,并定期检查是否有新的读取请求。如果有新的读取请求,谢谢阅读则被延迟的行被延缓执行,直到表再次空闲时为止。(2)如果您使用LOW_PRIORITY关键词,则INSERT的执行被延迟,直到没有其它客户端从精品文档放心下载表中读取为止。(3)如果您指定了HIGH_PRIORITY,这么做会导致同时进行的插入被取消。谢谢阅读(4)使用mysql_affected_rows()可以获得用于INSERT的受影响行的值。精品文档放心下载(5)如果您在一个INSERT语句中使用IGNORE关键词,在执行语句时出现的错误被当作警精品文档放心下载告处理。INSERT...SELECT语法示例:INSERTINTOtbl_temp2(fld_id)精品文档放心下载SELECTtbl_temp1.fld_order_id精品文档放心下载FROMtbl_temp1WHEREtbl_temp1.fld_order_id>100;感谢阅读LOADDATAINFILE语法LOADDATAINFILE语句用于高速地从一个文本文件中读取行,并装入一个表中。文件名称感谢阅读必须为一个文字字符串。mysql>LOADDATAINFILE'data.txt'INTOTABLEdb2.my_table;谢谢阅读SELECT...INTOOUTFILE谢谢阅读到表中,应使用LOADDATAINFILE。要读取由逗号分隔的文件并返回,则正确的语句应该是:mysql>LOADDATAINFILE'data.txt'INTOTABLEtable2精品文档放心下载->FIELDSTERMINATEDBY',';谢谢阅读REPLACE语法REPLACE的运行与INSERTPRIMARY感谢阅读KEY或一个UNIQUE索引的新记录具有相同的值,则在新记录被插入之前,旧记录被删除。精品文档放心下载SELECT语法SELECT[ALL|DISTINCT|DISTINCTROW]感谢阅读[HIGH_PRIORITY][STRAIGHT_JOIN][SQL_SMALL_RESULT][SQL_BIG_RESULT][SQL_BUFFER_RESULT]精品文档放心下载[SQL_CACHE|SQL_NO_CACHE][SQL_CALC_FOUND_ROWS]谢谢阅读select_expr,...[INTOOUTFILE'file_name'export_options精品文档放心下载|INTODUMPFILE'file_name']谢谢阅读[FROMtable_references[WHEREwhere_definition][GROUPBY{col_name|expr|position}感谢阅读[ASC|DESC],...[WITHROLLUP]]谢谢阅读[HAVINGwhere_definition][ORDERBY{col_name|expr|position}精品文档放心下载[ASC|DESC],...][LIMIT{[offset,]row_count|row_countOFFSEToffset}]感谢阅读[PROCEDUREprocedure_name(argument_list)]精品文档放心下载[FORUPDATE|LOCKINSHAREMODE]]谢谢阅读mysql>SET@skip=1;SET@numrows=5;谢谢阅读mysql>PREPARESTMTFROM"SELECT*FROMtblLIMIT?,?";谢谢阅读mysql>EXECUTESTMTUSING@skip,@numrows;感谢阅读JOIN语法----联合查询USING(column_list)精品文档放心下载果表a和表b都包含列c1,c2和c3,则以下联合会对比来自两个表的对应的列:谢谢阅读·aLEFTJOINbUSING(c1,c2,c3)感谢阅读mysql>SELECT*FROMtable1,table2WHEREtable1.id=table2.id;精品文档放心下载mysql>SELECT*FROMtable1LEFTJOINtable2ONtable1.id=table2.id;谢谢阅读mysql>SELECT*FROMtable1LEFTJOINtable2USING(id);谢谢阅读mysql>SELECT*FROMtable1LEFTJOINtable2ONtable1.id=table2.id精品文档放心下载->LEFTJOINtable3ONtable2.id=table3.id;精品文档放心下载on和where的差别ON与where的使用一定要注意场所:(1ON后面的筛选条件主要是针对的是【而对于主表刷选条件不适用】。精品文档放心下载(2):对于主表的筛选条件应放在where后面,不应该放在ON后面谢谢阅读(3):对于关联表我们要区分对待。如果是要条件查询后才连接应该把查询件放置于ON谢谢阅读后。如果是想连接完毕后才筛选就应把条件放置于where后面感谢阅读UNION语法使用要求:列于每个SELECT语句的对应位置的被选择的列应具有相同的类型。不需要有相精品文档放心下载同字段名表中数据:union:去除重复的数据(selectid,namefromtestwhereidin(1,2))谢谢阅读union(selectid,namefromtestwhereid=2)感谢阅读查询结果unionall:不去除重复的数据(selectid,namefromtestwhereidin(1,2))精品文档放心下载unionall(selectid,namefromtestwhereid=2)谢谢阅读查询结果union不同表不同字段查询mysql>selectdistinctemailsfromtestunionselectdistinctemailtfromtest;感谢阅读+----------------------+|emails|+----------------------+|yiranwang@||zy@||zy@||zyli@|+----------------------+子查询SELECT*FROMt1WHEREcolumn1=(SELECTcolumn1FROMt2);感谢阅读//一条记录,in为多条记录ANY关键词SELECTs1FROMt1WHEREs1>ANY(SELECTs1FROMt2);谢谢阅读//假设表t1中有一行包含(10)。如果表t2包含(21,14,7),则表达式为TRUE感谢阅读词语IN是=ANY的别名。因此,这两个语句是一样的:谢谢阅读SELECTs1FROMt1WHEREs1=ANY(SELECTs1FROMt2);谢谢阅读SELECTs1FROMt1WHEREs1IN(SELECTs1FROMt2);精品文档放心下载不过,NOTIN不是<>ANY的别名,但是是<>ALL的别名。感谢阅读some关键词词语SOME是ANY的别名。all关键词SELECTs1FROMt1WHEREs1>ALL(SELECTs1FROMt2);感谢阅读假设表110t2-505TRUE10谢谢阅读比t2中的所有三个值都大。如果表t2包含(12,6,NULL,-100),则表达式为FALSE,精品文档放心下载因为表t2中有一个值12大于10。如果表t2包含(0,NULL,1),则表达式为unknown。精品文档放心下载行子查询SELECT*FROMt1WHERE(1,2)=(SELECTcolumn1,column2FROMt2);谢谢阅读SELECT*FROMt1WHEREROW(1,2)=(SELECTcolumn1,column2FROMt2);感谢阅读SELECT*FROMarticleWHERE(title,content,uid)=(SELECT谢谢阅读title,content,uidFROMblogWHEREbid=2)感谢阅读EXISTS和NOTEXISTS哪些种类的商店出现在一个或多个城市里?·SELECTDISTINCTstore_typeFROMstores精品文档放心下载·WHEREEXISTS(SELECT*FROMcities_stores精品文档放心下载·WHEREcities_stores.store_type=精品文档放心下载stores.store_type);·哪些种类的商店没有出现在任何城市里?·SELECTDISTINCTstore_typeFROMstores谢谢阅读·WHERENOTEXISTS(SELECT*FROMcities_stores感谢阅读·WHEREcities_stores.store_type=谢谢阅读stores.store_type);·哪些种类的商店出现在所有城市里?·SELECTDISTINCTstore_typeFROMstoress1谢谢阅读·WHERENOTEXISTS(·SELECT*FROMcitiesWHERENOTEXISTS(谢谢阅读·SELECT*FROMcities_stores感谢阅读·WHEREcities_stores.city=cities.city谢谢阅读·ANDcities_stores.store_type=stores.store_type));感谢阅读最后一个例子是一个双嵌套NOTEXISTS查询。该查询正式地回答了这个问题,“是否有某精品文档放心下载个城市拥有没有列在Stores中的商店?”。关联子查询SELECT*FROMt1WHEREcolumn1=ANY精品文档放心下载(SELECTcolumn1FROMt2WHEREt2.column2=t1.column2);精品文档放心下载假设表t1包含一行,在此行中column1=5并且column2=6t2包含一行,在此行感谢阅读中column1=5并且column2=7。简单的表达式...WHEREcolumn1=ANY(SELECTcolumn1精品文档放心下载FROMt2)会为TRUEWHERE子句为FALSE56谢谢阅读于(5,7)),所以子查询总体上为FALSE。FROM子句中的子查询SELECTAVG(sum_column1)FROM(SELECTSUM(column1)ASsum_column1感谢阅读FROMt1GROUPBYcolumn1)ASt1;谢谢阅读TRUNCATE语法TRUNCATE[TABLE]tbl_nameUPDATE语法Single-table语法:UPDATE[LOW_PRIORITY][IGNORE]tbl_name谢谢阅读SETcol_name1=expr1[,col_name2=expr2...]谢谢阅读[WHEREwhere_definition][ORDERBY...][LIMITrow_count]Multiple-table语法:UPDATE[LOW_PRIORITY][IGNORE]table_references谢谢阅读SETcol_name1=expr1[,col_name2=expr2...]谢谢阅读[WHEREwhere_definition]UPDATEitems,monthSETitems.price=month.price精品文档放心下载WHEREitems.id=month.id;MySQL实用工具语句DESCRIBE语法(获取有关列的信息){DESCRIBE|DESC}tbl_name[col_name|wild]谢谢阅读USE语法mysql>USEdb1;MySQL事务处理和锁定语句事务的4个特性①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,是不可折分的,事感谢阅读务是一个完整的操作。②一致性(Consistemcy)感谢阅读数据存储中的数据处于一致状态。保证数据的无损。③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是独感谢阅读立的,不应该以任何方式来影响其他事务。④持久性(Durability)谢谢阅读统故障也将一直保留,真实的修改了数据库STARTTRANSACTION,COMMIT和ROLLBACK语法感谢阅读STARTTRANSACTION|BEGIN[WORK]谢谢阅读COMMIT[WORK][AND[NO]CHAIN][[NO]RELEASE]感谢阅读ROLLBACK[WORK][AND[NO]CHAIN][[NO]RELEASE]感谢阅读SETAUTOCOMMIT={0|1}starttransaction;或者begin;作用是开启事务精品文档放心下载AUTOCOMMIT语句可以禁用或启用默认的autocommit模式,用于当前连接。感谢阅读设置autocommit10精品文档放心下载必须使用COMMIT来接受一个事务,或使用ROLLBACK来取消它。感谢阅读例子STARTTRANSACTION;SELECT@A:=SUM(salary)FROMtable1WHEREtype=1;谢谢阅读UPDATEtable2SETsummary=@AWHEREtype=1;感谢阅读COMMIT;SAVEPOINT和ROLLBACKTOSAVEPOINT语法感谢阅读SAVEPOINTidentifierROLLBACK[WORK]TOSAVEPOINTidentifier谢谢阅读RELEASESAVEPOINTidentifier精品文档放心下载mysql>updatebookssetfree=1,new=1;感谢阅读mysql>commit;mysql>SETAUTOCOMMIT=1;mysql>begin;//或者starttransaction;感谢阅读mysql>selectfree,newfrombookslimit1;谢谢阅读+------+-----+|free|new|+------+-----+|1|1|+------+-----+mysql>updatebookssetfree=0;感谢阅读mysql>selectfree,newfrombookslimit1;感谢阅读+------+-----+|free|new|+------+-----+|0|1|+------+-----+mysql>SAVEPOINTbook1;mysql>updatebookssetnew=0;谢谢阅读mysql>selectfree,newfrombookslimit1;谢谢阅读+------+-----+|free|new|+------+-----+|0|0|+------+-----+mysql>rollbacktobook1;mysql>selectfree,newfrombookslimit1;谢谢阅读+------+-----+|free|new|+------+-----+|0|1|+------+-----+mysql>rollback;mysql>selectfree,newfrombookslimit1;谢谢阅读+------+-----+|free|new|+------+-----+|1|1|+------+-----+1rowinset(0.00sec)LOCKTABLES和UNLOCKTABLES语法精品文档放心下载LOCKTABLEStbl_name[ASalias]{READ[LOCAL]|[LOW_PRIORITY]WRITE}感谢阅读[,tbl_name[ASalias]{READ[LOCAL]|[LOW_PRIORITY]WRITE}]...谢谢阅读UNLOCKTABLES读锁和写锁共享锁(S锁)又称读锁若事务T对数据对象A加上S锁则事务T可以读A但不能修改A,谢谢阅读其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S锁。这保证了其他事务精品文档放心下载可以读A,但在T释放A上的S锁之前不能对A做任何修改。感谢阅读你可以读取但不可以修改,其他事务可以读取不能修改,其他事务只能再加读锁谢谢阅读排他锁(X锁)又称写锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,感谢阅读其他事务不能再对AT释放A上的锁。这保证了其他事务在T释放A上的锁谢谢阅读之前不能再读取和修改A。你可以读取和修改,其他事物不能读取和修改。其他事务不能加锁精品文档放心下载数据库管理语句CREATEUSER语法CREATEUSERuser[IDENTIFIEDBY[PASSWORD]'password']谢谢阅读[,user[IDENTIFIEDBY[PASSWORD]'password']]...谢谢阅读使用自选的IDENTIFIEDBY子句,可以为账户给定一个密码。感谢阅读DROPUSER语法DROPUSERuser[,user]...谢谢阅读GRANT和REVOKE语法GRANT和REVOKE语句允许系统管理员创建MySQL用户账户,授予权限和撤销权限。感谢阅读grantallprivilegeson*.*toadmin@localhostidentifiedby‘123’withgrant精品文档放心下载option;//创建本地的完全超级用户”admin,口令’123’”精品文档放心下载RENAMEUSER语法RENAMEUSER语句用于对原有MySQL账户进行重命名。要使用RENAMEUSER,您必须拥有全精品文档放心下载局CREATEUSER权限或mysql数据库UPDATE权限。感谢阅读RENAMEUSERold_userTOnew_user感谢阅读SETPASSWORD语法SETPASSWORD=PASSWORD('somepassword')谢谢阅读SETPASSWORDFORuser=PASSWORD('somepassword')谢谢阅读mysql>SETPASSWORDFOR'bob'@'%.'=PASSWORD('newpass');感谢阅读这相当于以下语句:mysql>UPDATEmysql.userSETPassword=PASSWORD('newpass')感谢阅读->WHEREUser='bob'ANDHost='%.';谢谢阅读mysql>FLUSHPRIVILEGES;ANALYZETABLE语法ANALYZE[LOCAL|NO_WRITE_TO_BINLOG]TABLEtbl_name[,tbl_name]...谢谢阅读本语句用于分析和存储表的关键字分布。在分析期间,使用一个读取锁定对表进行锁定。谢谢阅读BACKUPTABLE语法BACKUPTABLEtbl_name[,tbl_name]...TO'/path/to/backup/directory'精品文档放心下载感谢阅读同时,也可以使用mysqlhotcopy原本替代。感谢阅读OPTIMIZETABLE语法OPTIMIZE[LOCAL|NO_WRITE_TO_BINLOG]TABLEtbl_name[,tbl_name]...谢谢阅读如果您已经删除了表的一大部分,或者如果您已经对含有可变长度行的表(含有VARCHAR,感谢阅读BLOB或TEXTOPTIMIZETABLE精品文档放心下载INSERTOPTIMIZETABLE来谢谢阅读重新利用未使用的空间,并整理数据文件的碎片。REPAIRTABLE语法REPAIR[LOCAL|NO_WRITE_TO_BINLOG]TABLE精品文档放心下载tbl_name[,tbl_name]...[QUICK][EXTENDED][USE_FRM]感谢阅读REPAIRTABLE用于修复被破坏的表。RESTORETABLE语法RESTORETABLEtbl_name[,tbl_name]...FROM'/path/to/backup/directory'谢谢阅读用于恢复来自用BACKUPTABLE制作的备份的表。谢谢阅读SHOWCREATEDATABASE语法SHOWCREATE{DATABASE|SCHEMA}db_name谢谢阅读显示用于创建给定数据库CREATEDATABASE语句。精品文档放心下载SHOWINDEX语法SHOWINDEXFROMtbl_name[FROMdb_name]感谢阅读SHOWINDEX会返回表索引信息。SHOWVARIABLES语法SHOW[GLOBAL|SESSION]VARIABLES[LIKE'pattern']精品文档放心下载SHOWVARIABLES显示了部门MySQL系统变量的值。本信息也可以使用mysqladmin精品文档放心下载variables命令获得。其他管理语句预处理语句PREPAREstmt_nameFROMpreparable_stmt;感谢阅读EXECUTEstmt_name[USING@var_name[,@var_name]...];精品文档放心下载要对一个预制语句解除分配,需使用DEALLOCATEPREPARE语句。精品文档放心下载{DEALLOCATE|DROP}PREPAREstmt_name;感谢阅读mysql>PREPAREstmt1FROM'SELECTSQRT(POW(?,2)+POW(?,2))AShypotenuse';精品文档放心下载mysql>SET@a=3;mysql>SET@b=4;mysql>EXECUTEstmt1USING@a,@b;谢谢阅读+------------+|hypotenuse|+------------+|5|+------------+mysql>DEALLOCATEPREPAREstmt1;谢谢阅读Mysql实践语句1.不规则排序解决方案:(1)find_in_setselect*fromtablewhereidin('783','769','814','1577','1769')谢谢阅读orderbyfind_in_set(id,'783,769,814,1577,1769')谢谢阅读(2)Casewhenthen$sqlWhen="CASE";$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('+2day',$enddate)))."THEN10";精品文档放心下载$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('+1day',$enddate)))."THEN9";精品文档放心下载$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('-2day',$enddate)))."THEN8";谢谢阅读$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(startdate+day*24*3600,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('-1day',$enddate)))."THEN7";谢谢阅读$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".谢谢阅读strtotime(date("Y-m-d",strtotime('+2day',$startdate)))."THEN6";谢谢阅读$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('+1day',$startdate)))."THEN5";感谢阅读$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".精品文档放心下载strtotime(date("Y-m-d",strtotime('-2day',$startdate)))."THEN4";感谢阅读$sqlWhen.="WHENUNIX_TIMESTAMP(FROM_UNIXTIME(mate_travel.startdate,'%Y-%m-%d'))=".感谢阅读strtotime(date("Y-m-d",strtotime('-1day',$startdate)))."THEN3";精品文档放心下

温馨提示

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

评论

0/150

提交评论