202XMySQL必知必会2021-01-03演讲人第一章了解SQL01第一章了解SQL数据库(database)保存有组织的数据的容 器(通常是一个文件或一组文件)。第一章了解SQL表(table)某种特定类型数据的结构化清单。第一章了解SQL表名表名的唯一 性取决于多个因素,如数据库名和表名等的结合。这表示,虽然在相同数据库中不能两次使用相同的表名,但在不同的数据库中却可以使用相同的表 名。第一章了解SQL模式(schema)关于数据库和表的布局及特性的信息。第一章了解SQL列(column)表中的一个字段 。所有表都是由一个或多个列组成的。所容许的数据的类型。每个表列都有相应的数据类型,它限制(或容许)该列中存储的数据。01第一章了 解SQL定义好数据类型,对优化磁盘和排序数据有帮助02数据类型(datatype)第一章了解SQL行(row)表中的一个记录 。主键(primarykey)一列(或一组列),其值能够唯一区分表中每个行。应该总是定义主键主键条件主键的最好习惯备注主键(p rimarykey)应该总是定义主键虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主键,以便于 以后的数据操纵和管理。主键(primarykey)主键条件任意两行都不具有相同的主键值;每个行都必须具有一个主键值(主键列不允许 NULL值)。主键(primarykey)主键的最好习惯不更新主键列中的值;不重用主键列的值;不在主键列中使用可能会更改的值。主 键(primarykey)备注可以使用多个列作为主键所有列值的组合必须是唯一的第一章了解SQLSQL结构化查询语言(Struc turedQueryLanguage)的缩写一种专门用来与数据库通信的语言。第一章了解SQLSQL特点成功SQL不是某个特定 数据库供应商专有的语言。几乎所有重要的DBMS都支持SQL,所以,学习此语言使你几乎能与所有数据库打交道。SQL简单易学。它的语句 全都是由描述性很强的英语单词组成,而且这些单词的数目不多。SQL尽管看上去很简单,但它实际上是一种强有力的语言,灵活使用其语言元素 ,可以进行非常复杂和高级的数据库操作。第二章MySQL简介02第二章MySQL简介MySQLMySQL优点MySQL实用工具第 二章MySQL简介DBMS,数据库管理系统数据库软件MySQL通常由服务器操作MySQLDBMS,数据库管理系统数据库软件通常由 服务器操作第二章MySQL简介MySQL优点成本——MySQL是开放源代码的,一般可以免费使用(甚至可以免费修改)。简单——My SQL很容易安装和使用。14性能——MySQL执行很快(非常快)。可信赖——某些非常重要和声望很高的公司、站点使用MySQL,这些 公司和站点都用MySQL来处理自己的重要数据。23MySQL优点成本——MySQL是开放源代码的,一般可以免费使用(甚至可以免费修 改)。性能——MySQL执行很快(非常快)。可信赖——某些非常重要和声望很高的公司、站点使用MySQL,这些公司和站点都用MySQ L来处理自己的重要数据。简单——MySQL很容易安装和使用。第二章MySQL简介MySQL实用工具命令行实用程序MySQLAd ministratorMySQLQueryBrowserMySQLWorkBench1234MySQL实用工具命令行实用程序 随安装包自带MySQLAdministrator需要自己下载官网不支持了MySQLQueryBrowser需要自己下载官网不 支持了MySQLWorkBench需要自己下载官网支持第3章使用MySQL03第3章使用MySQL选择数据库显示所有数据库显 示数据库中所有表显示表中所有列显示帮助信息第3章使用MySQL选择数据库usexxxxx;第3章使用MySQL显示所有数据库 showdatabases;第3章使用MySQL显示数据库中所有表showtables;第3章使用MySQL显示表中所有列 showcolumnsfromtable1;describetable1;第3章使用MySQL显示帮助信息helpsh ow;第4章检索数据04第4章检索数据SELECT语句SELECTDISTINCTguidfromTABLE1;显示 某一列中不同的行selectfromtable1limit5显示查询结果为5行selectfromtable1 limit5,6显示查询结果为从5开始的6行数据selecttable1.guidfromtlbbdb.table1;完 全限定名第5章排序检索数据05OrderBy升序排列selectid,namefromtable1orderbyi d,name;先按照id排序,若是id相同,则按照name排序desc降序排列selectid,namefromtabl e1orderbyiddesc,name;先按照id降序排序,若是id相同,则按照name排序第6章过滤数据06whe re010203SELECTid,namefromtable1wherename=''lazyelf'';=!=不等于040 506<>不等于与!=一样<<=where>>=BETWEEN空值检查whereBETWEEN SELECTid,nameFROMtable1WHEREidBETWEEN10AND20;where空值检查SE LECTid,namefromtable1wherenameISNULL;第7章数据过滤07第7章数据过滤AND OR圆括号()INNOTMySQL中的NOT第7章数据过滤AND用在WHERE子句中的关键字,用来指示检索满足所有给定条件的行。 第7章数据过滤ORWHERE子句中使用的关键字,用来表示检索匹配任一给定条件的行。第7章数据过滤圆括号()任何时候使用具有AN D和OR操作符的WHERE子句,都应该使用圆括号明确地分组操作符。不要过分依赖默认计算次序,即使它确实是你想要的东西也是如此。使用 圆括号没有什么坏处,它能消除歧义。第7章数据过滤INABWHERE子句中用来指定要匹配值的清单的关键字,功能与OR相当。SELE CTid,nameFROMtable1WHEREidIN(3,4,7)ORDERBYname;第7章数据过滤N OT01WHERE子句中用来否定后跟条件的关键字。02SELECTid,nameFROMtable1WHEREidNO TIN(3,4,7)ORDERBYname;第7章数据过滤MySQL中的NOTMySQL支持使用NOT对IN、BETWE EN和EXISTS子句取反,这与多数其他DBMS允许使用NOT对各种条件取反有很大的差别。第8章用通配符进行过滤08第8章用通 配符进行过滤LIKE操作符第8章用通配符进行过滤LIKE操作符通配符(wildcard)用来匹配值的一部分的特殊字符。百分号( %)通配符注意事项搜索模式(searchpattern)[插图]由字面值、通配符或两者组合构成的搜索条件。下划线(_)通配符LI KE操作符通配符(wildcard)用来匹配值的一部分的特殊字符。LIKE操作符搜索模式(searchpattern)[插图] 由字面值、通配符或两者组合构成的搜索条件。百分号(%)通配符SELECTid,nameFROMtable1WHEREn ameLIKE''%la%zy%'';包含la和zy的name%不能匹配NULLLIKE操作符下划线(_)通配符同%通配符,但 只可匹配一个字符LIKE操作符注意事项不要过度使用通配符。如果其他操作符能达到相同的目的,应该使用其他操作符。在确实需要使用通配符 时,除非绝对有必要,否则不要把它们用在搜索模式的开始处。把通配符置于搜索模式的开始处,搜索起来是最慢的。仔细注意通配符的位置。如果 放错地方,可能不会返回想要的数据。第9章用正则表达式进行搜索09第9章用正则表达式进行搜索01单击此处添加标题基本字符匹配单击 此处添加文本具体内容,简明扼要的阐述您的观点。根据需要可酌情增减文字,以便观者准确的理解您传达的思想。0302匹配几个字符之一进行 OR匹配040506匹配范围匹配特殊字符匹配字符类第9章用正则表达式进行搜索匹配多个实例定位符正则表达式检查第9章用正则表达式 进行搜索基本字符匹配SELECTid,nameFROMtable1WHEREnameREGEXP''1000''ORD ERBYname;9,300Million单击此处添加标题SELECTid,nameFROMtable1WHERE nameREGEXP''.000''ORDERBYname;单击此处输入你的正文,文字是您思想的提炼,为了最终演示发布的良好 效果,请尽量言简意赅的阐述观点;根据需要可酌情增减文字,以便观者可以准确理解您所传达的信息。SELECTid,nameFROM table1WHEREnameREGEXPBINARY''Jay.000''ORDERBYname;基本字符匹配SE LECTid,nameFROMtable1WHEREnameREGEXPBINARY''Jay.000''ORDER BYname;SELECTid,nameFROMtable1WHEREnameREGEXP''.000''ORDE RBYname;SELECTid,nameFROMtable1WHEREnameREGEXP''1000''ORD ERBYname;匹配1000的行将REGEXP换成LIKE将不能匹配,因为LIKE不能匹配相同值的行匹配以000结尾的行.代 表匹配任意字符匹配大小写第9章用正则表达式进行搜索进行OR匹配SELECTid,nameFROMtable1WHERE nameREGEXP''1000|2000''ORDERBYname;进行OR匹配SELECTid,nameFROM table1WHEREnameREGEXP''1000|2000''ORDERBYname;|可以连接多个OR关系的表 达式第9章用正则表达式进行搜索匹配几个字符之一SELECTid,nameFROMtable1WHEREnameREG EXP''[123]sky''ORDERBYname;9,300Million单击此处添加标题SELECTid,name FROMtable1WHEREnameREGEXP''[^123]sky''ORDERBYname;单击此处输入你的正 文,文字是您思想的提炼,为了最终演示发布的良好效果,请尽量言简意赅的阐述观点;根据需要可酌情增减文字,以便观者可以准确理解您所传达 的信息。[]括起来的123相当于1|2|3,必须有[],否则会是另一种解释匹配几个字符之一SELECTid,nameFROM table1WHEREnameREGEXP''[123]sky''ORDERBYname;SELECTid,name FROMtable1WHEREnameREGEXP''[^123]sky''ORDERBYname;[]括起来的123 相当于1|2|3,必须有[],否则会是另一种解释匹配包含1sky、2sky或3sky的name不匹配包含1sky、2sky或3sk y的name第9章用正则表达式进行搜索匹配范围ABSELECTid,nameFROMtable1WHEREname REGEXP''[a-z]sky''ORDERBYname;SELECTid,nameFROMtable1WHERE nameREGEXP''[1-3]sky''ORDERBYname;CD[0123456789]==[0-9]字母同数字匹 配范围SELECTid,nameFROMtable1WHEREnameREGEXP''[1-3]sky''ORDER BYname;SELECTid,nameFROMtable1WHEREnameREGEXP''[a-z]sky'' ORDERBYname;[0123456789]==[0-9]字母同数字第9章用正则表达式进行搜索匹配特殊字符02匹配元字符 01若要匹配特殊字符,需要在特殊字符前面加\\\\匹配特殊字符若要匹配特殊字符,需要在特殊字符前面加\\\\SELECTid,n ameFROMtable1WHEREnameREGEXP''\\\\.''ORDERBYname;匹配元字符\\\\ f换页\\\\t制表\\\\n换行\\\\v纵向制表\\\\r回车第9章用正则表达式进行搜索匹配字符类预定义的字符集[:alnu m:][:alpha:][:blank:][:cntrl:][:digit:]第9章用正则表达式进行搜索匹配字符类[:graph :][:lower:][:print:][:punct:][:space:][:upper:]第9章用正则表达式进行搜索匹配字符 类[:xdigit:]匹配字符类01单击此处添加标题预定义的字符集单击此处添加文本具体内容,简明扼要的阐述您的观点。根据需要可酌情 增减文字,以便观者准确的理解您传达的思想。0302[:alpha:][:alnum:]040506[:blank:][:cntrl :][:digit:]匹配字符类01单击此处添加标题[:graph:]单击此处添加文本具体内容,简明扼要的阐述您的观点。根据需要可 酌情增减文字,以便观者准确的理解您传达的思想。0302[:print:][:lower:]040506[:punct:][:spa ce:][:upper:]匹配字符类[:xdigit:]匹配字符类[:alnum:]任意字母和数字(同[a-zA-Z0-9])匹配 字符类[:alpha:]任意字符(同[a-zA-Z])匹配字符类[:blank:]空格和制表符(同[\\\\t])匹配字符类[:c ntrl:]ASCII控制字符(ASCII0-31和127)匹配字符类[:digit:]任意数字(同[0-9])匹配字符类[:gr aph:]与[:print:]相同,但不包括空格匹配字符类[:lower:]任意小写字母(同[a-z])匹配字符类[:print: ]任意可打印字符匹配字符类[:punct:]既不在[:alnum:]又不在[:cntrl:]中的任意字符匹配字符类[:space: ]包括空格在内的任意空白字符(同[\\\\f\\\\n\\\\r\\\\t\\\\v])匹配字符类[:upper:]任意大写字母( 同[A-Z])匹配字符类[:xdigit:]任意十六进制数字(同[a-fA-F0-9])第9章用正则表达式进行搜索匹配多个实例0 10203重复元字符例1例2010203+?重复元字符040506{n}{n,}{n,m}重复元字符0个或多个匹配重复元字符+ 1个或多个匹配(等于{1,})重复元字符?0个或1个匹配(等于{0,1})重复元字符{n}指定数目的匹配重复元字符{n,}不少于指 定数目的匹配重复元字符{n,m}匹配数目的范围(m不超过255)SELECTid,nameFROMtable1WHERE nameREGEXP''\\\\([0-9]stick?\\\\)''ORDERBYname;匹配得到了TNT(1sti ck)和TNT(5sticks)\\\\(匹配(例1[0-9]匹配1和5stick?匹配stick和sticks?代表前面 匹配0个或1个字符\\\\)匹配)匹配多个实例12SELECTid,nameFROMtable1WHEREnameR EGEXP''[[:digit:]]{4}''ORDERBYname;匹配连在一起的四位数字例234{4}要求它前面的数字出现 4次等同于SELECTid,nameFROMtable1WHEREnameREGEXP''[0-9][0-9][0-9 ][0-9]''ORDERBYname;第9章用正则表达式进行搜索定位符^[[:<:]]SELECTid,name FROMtable1WHEREnameREGEXP''^[0-9\\\\.]''ORDERBYname;$[[:> ;:]]匹配.5ton和1ton第9章用正则表达式进行搜索定位符^的作用是匹配字符串的开始,也就是检查首个字符是0-9和.的 字符串定位符^[[:<:]]SELECTid,nameFROMtable1WHEREnameREGEXP''^[ 0-9\\\\.]''ORDERBYname;$[[:>:]]匹配.5ton和1ton定位符^的作用是匹配字符串的开 始,也就是检查首个字符是0-9和.的字符串定位符^文本的开始定位符$文本的结尾定位符[[:<:]]词的开始定位符[[:> ;:]]词的结尾第9章用正则表达式进行搜索正则表达式检查SELECT''hello''REGEXP''[0-9]'';正则表达式检 查SELECT''hello''REGEXP''[0-9]'';第10章创建计算字段10第10章创建计算字段Concat连接字符 串,字符串之间用逗号分隔第10章创建计算字段Trim去掉串左右两边的空格第10章创建计算字段LTrim去掉串左边空格第10章 创建计算字段RTrim去掉串右边空格第10章创建计算字段AS别名命名一个别名第10章创建计算字段例子1SELECTConc at(Trim(vend_name),''('',Trim(vend_country),'')'')ASvend_titleFROM vendorsORDERBYvend_name;第10章创建计算字段例子2SELECTquantity,item_p rice,quantityitem_priceASvend_titleFROMvendorsORDERBYven d_name;检查计算字段SELECT23;SELECTNow();计算表达式返回当前日期和时间312SELECTTrim (''name'');消除两边空格第11章使用数据处理函数11第11章使用数据处理函数文本处理函数日期和时间处理函数数值处理函 数第11章使用数据处理函数文本处理函数Left()Length()Locate()Lower()LTrim()Right()第1 1章使用数据处理函数文本处理函数RTrim()Soundex()0102SubString()Upper()0304文本处理函数 Left()返回串左边的字符文本处理函数Length()返回串的长度文本处理函数Locate()找出串的一个子串文本处理函数Low er()将串转换为小写文本处理函数LTrim()去掉串左边的空格文本处理函数Right()返回串右边的字符文本处理函数RTrim( )去掉串右边的空格Soundex()返回串的SOUNDEX值英文发音匹配文本处理函数SubString()返回子串的字符文本处理函 数Upper()将串转换为大写第11章使用数据处理函数日期和时间处理函数AddDate()AddTime()CurDate()C urTime()Date()DateDiff()第11章使用数据处理函数日期和时间处理函数Date_Add()Date_Form at()Day()ABCDayOfWeek()Hour()Minute()DEF第11章使用数据处理函数日期和时间处理函数ABC DEMonth()Now()Second()Time()Year()日期和时间处理函数01单击此处添加标题AddDate()单击此 处添加文本具体内容,简明扼要的阐述您的观点。根据需要可酌情增减文字,以便观者准确的理解您传达的思想。0302CurDate()Ad dTime()040506CurTime()Date()DateDiff()日期和时间处理函数ABCDate_Add()Date_ Format()Day()DEFDayOfWeek()Hour()Minute()日期和时间处理函数Month()Now()Sec ond()Time()Year()日期和时间处理函数AddDate()增加一个日期(天、周等)日期和时间处理函数AddTime() 增加一个时间(时、分等)日期和时间处理函数CurDate()返回当前日期日期和时间处理函数CurTime()返回当前时间日期和时间处理函数Date()返回日期时间的日期部分日期和时间处理函数DateDiff()计算两个日期之差日期和时间处理函数Date_Add()高度灵活的日期计算函数日期和时间处理函数Date_Format()返回一个格式化的日期或时间串第12章汇总数据12第12章汇总数据第13章分组数据13第13章分组数据第14章使用子查询14第14章使用子查询第15章联结表15第15章联结表第16章创建高级联结16第16章创建高级联结第17章组合查询17第17章组合查询第18章全文本搜索18第18章全文本搜索第19章插入数据19第19章插入数据第20章更新和删除数据20第20章更新和删除数据第21章创建和操纵表21第21章创建和操纵表第22章使用视图22第22章使用视图第23章使用存储过程23第23章使用存储过程第24章使用游标24第24章使用游标第25章使用触发器25第25章使用触发器第26章管理事务处理26第26章管理事务处理第27章全球化和本地化27第27章全球化和本地化第28章安全管理28第28章安全管理第29章数据库维护29第29章数据库维护第30章改善性能30第30章改善性能感谢聆听 |
|