
MySQL必知必会
吃着火锅x唱着歌
这个作者很懒,什么都没留下…
展开
-
MySQL必知必会 学习笔记 第三十章 改善性能
MySQL与其他DBMS一样有自己的硬件建议,对于用于生产的服务器,应坚持这些建议。一般,关键的生产DBMS应运行在自己的专用服务器上。MySQL用的是默认设置预先配置的,用了一段时间后应调整内存分配、缓冲区大小等设置,可用SHOW VARIABLES和SHOW STATUS查看当前设置。MySQL是多用户多线程的DBMS,如果一个任务执行缓慢,所有请求都会执行缓慢,如果遇到性能显著下降,可使用SHOW PROCESSLIST显示所有活动进程以及他们的线程ID和执行时间。还能用KILL终结某个特定进程原创 2020-12-29 08:33:30 · 157 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十九章 数据库维护
MySQL数据库是基于磁盘的文件,普通的备份系统和例程就能备份MySQL数据,但这些文件总是打开和使用状态,普通的文件备份不一定总是有效。备份方法:1.使用mysqldump转储所有数据库内容到某个外部文件,进行常规备份前这个应用应先运行,以便正确地备份转储文件。2.使用mysqlhotcopy从一个数据库复制所有数据,并非所有数据库引擎都支持它)。3.可用BACKUP TABLE或SELECT INTO OUTFILE转储所有数据到某个外部文件,这两条语句都接受将要创建的系统文件名,此系统文件必须原创 2020-12-28 19:03:02 · 209 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十八章 安全管理
用户应该对他们所需要的数据具有适当的访问权,既不能多也不能少。MySQL Administrator提供了图形界面,可用来管理用户和账号权限。MySQL创建一个名为root的用户账号,它对整个MySQL服务器由完全的控制。在日常工作中,决不能使用root,而应创建一系列账号供不同用户使用,防止恶意或无意地破坏数据库。MySQL的用户账号和信息存储在名为mysql的数据库中,获取所有用户的账号列表:USE mysql;SELECT user FROM user;user表中包含所有用户账号,表中原创 2020-12-28 18:08:15 · 141 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十七章 全球化和本地化
不同的语言和字符集需要以不同的方式存储和检索,MySQL需要适应不同的字符集、排序和检索数据的方法。术语:1.字符集:字母和符号的集合。2.编码:某个字符集成员的内部表示。3.校对:规定字符如何比较的指令。查看MySQL支持的字符集列表:SHOW CHARACTER SET;运行它:这条语句显示了所有可用的字符集和每个字符集的描述和默认校对。查看所支持的校对列表:SHOW COLLATION;运行它:此语句显示了所有可用的校对和它们适用的字符集。一种字符集可能有多种校对,如l原创 2020-12-27 14:38:07 · 155 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十六章 管理事务处理
并非所有引擎都支持事务处理。MyISAM不支持,InnoDB支持。事务处理可用来维护数据库的完整性,它保证成批的MySQL操作要么完全执行,要么完全不执行。如果没有错误发生,整组语句写到数据库表,如果发生错误,则进行回退,以恢复数据库到某个已知且安全的状态。术语:1.事务:一组SQL语句。2.回退:撤销指定SQL语句。3.提交:将为存储的SQL语句结果写入数据库表。4.保留点:指事务处理中设置的临死占位符,可以对它发布回退。标识事务的开始:START TRANSACTION;回退MySQ原创 2020-12-26 15:18:44 · 128 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十五章 使用触发器
触发器在MySQL 5中增加。触发器可以在MySQL响应DELETE、INSERT、UPDATE语句时自动执行一条SQL语句。MySQL 5中触发器名必须在每个表中唯一而不是在一个数据库中唯一。其他DBMS有的重名限制是数据库范围,以后MySQL可能会使命名规则更加严格,最好在一个库中使用唯一的触发器名。创建触发器:CREATE TRIGGER triggerName AFTER INSERT ON tableNameFOR EACH ROW SELECT 'added';触发器可以在一个操作原创 2020-12-24 19:03:28 · 202 阅读 · 1 评论 -
MySQL必知必会 学习笔记 第二十四章 使用游标
MySQL 5增加了对游标的支持。游标是存储在MySQL服务器上的数据库查询,它不是SELECT语句,而是被该语句检索出来的结果集,存储了游标后,就能在检索出来的行中前进或后退一行或多行。不同于多数DBMS,MySQL游标只能用于存储过程和函数。使用游标步骤:1.使用前必须先声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。2.声明后,必须打开游标以供使用。这个过程使用前面定义的SELECT语句把数据实际检索出来。3.根据需要取出(检索)各行。4.使用结束时,关闭原创 2020-12-24 17:50:48 · 404 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十三章 使用存储过程
MySQL 5中增加了存储过程的支持。有时一个操作需要多条SQL语句才能完成。可以创建存储过程,其中保存一条或多条SQL语句。使用存储过程理由:1.通过把处理封装在容易使用的单元中,简化复杂的操作。2.所有人都使用同一存储过程代替某复杂操作,可防止错误,保证了所有人使用的代码相同,保证了数据一致性。3.简化对变动的管理,如需要更改表名、列名等,只需在存储过程中更改即可,使用它的人甚至不需要知道这些变化。4.提高性能,使用存储过程比使用单独的SQL要快。5.有一些只能用在单个请求中的特性,存储过原创 2020-12-23 18:35:18 · 132 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十二章 使用视图
MySQL 5添加了对视图的支持。视图是虚拟的表。它包含的是一个查询的结果,它本身不含数据,只是用来查看存储在别处的数据的一种设施。在添加或更改这些表中的数据时,视图将返回改变过的数据。视图的应用:1.重用SQL语句。2.简化复杂的SQL操作,编写查询后,可以方便地重用它而不必知道它的基本细节。3.使用表的组成部分而不是整个表。4.保护数据,可以给用户授予表的特定部分的访问权限而不是整个表的访问权限。5.更改数据格式和表示,视图可返回与底层表的表示和格式不同的数据。视图创建后,可以像表一样使原创 2020-12-22 18:12:04 · 145 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十一章 创建和操纵表
创建表例子:MySQL忽略语句中的空格,可像上例一样格式化一下语句。创建的表名必须不存在,否则会报错。如果想在一个表不存在时创建它,则应该在表名后加上IF NOT EXISTS:CREAT TABLE IF NOT EXISTS tableName ... 列定义中的NOT NULL表示此字段不能为空,NULL表示次自担可以为空。默认值为NULL。NULL是没有值,它不是空串。主键值必须唯一,如果主键是多个列,那这些列的组合值必须唯一。主键可以在建表时定义,也可以在之后定义。允许NULL原创 2020-12-21 18:54:57 · 199 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二十章 更新和删除数据
更新数据:UPDATE tableNameSET field1 = newValue1, field2 = newValue2 ...WHERE condition;没有where子句时,UPDATE将会更新整张表。可以使用select的结果更新列值:UPDATE tableNameSET field1 = (SELECT 语句)WHERE condition;如果用UPDATE语句更新多行,如果其中一行出现了一个错误,则整个UPDATE语句被取消,语句中错误发生前更改的值也被还原,即原创 2020-12-21 17:52:15 · 149 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十九章 插入数据
插入可用以下方式进行:1.插入完整行。2.插入行的一部分。3.插入多行。4.插入某些查询的结果。可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句。插入语句没有输出。插入完整的行:INSERT INTO tableNameVALUES(fieldsValueList);插入完整行时,每个字段的值都要出现,如果某个列没有值且表允许该列为空值,则使用NULL值。列值必须以它们在表定义中出现的顺序填充。如果某列是自动增长的,那么填入NULL时MySQL会填入自动增长后原创 2020-12-20 12:02:07 · 423 阅读 · 1 评论 -
MySQL必知必会 学习笔记 第十八章 全文本搜索
并非所有引擎都支持全文本搜索,MyISAM支持,InnoDB不支持。原创 2020-12-19 14:37:58 · 167 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十七章 组合查询
可将多个SELECT语句的查询结果作为单个查询结果集返回,通常称此为并或复合查询。使用组合查询的情况:1.查询从不同的表返回类似结构的数据。2.单个表中执行多个查询,按单个查询返回数据。组合查询通常能在WHERE中使用OR代替,但这两个方式的性能不同,应测试一下找出性能好的。对于以上表,找出年份在2015年后,电影id大于500的电影:SELECT titleFROM filmWHERE release_year >= 2015UNIONSELECT titleFROM fil原创 2020-12-16 18:57:55 · 106 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十六章 创建高级联结
可给表起别名,理由是:1.缩短SQL语句。2.允许在单条SELECT语句中多次使用相同的表(自联结时可用)。SELECT title, nameFROM film f, language lWHERE f.language_id = l.language_id;与上一章取电影和语言的SQL返回相同。表别名还可用于SELECT的列表、ORDER BY子句和语句的其他部分。表别名只在查询执行中使用,不会像列别名一样返回到客户机。找出film表中与某电影所用语言相同的电影名和语言:SELEC原创 2020-12-16 18:34:08 · 164 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十五章 联结表
如上图,语言表中包含语言的很多信息,而电影表中包含语言的id,独立出一个语言表的原因如下:1.同一种语言的所有信息都是相同的,对每个电影重复此信息既浪费时间又浪费存储空间。2.如果语言的某信息改变,只需在语言表中改动一次即可。3.每个电影输入时,很难保证每次输入该语言数据的方式都相同,不一致的数据在报表中很难利用。关系表的设计就是要保证把信息分解成多个表,一类数据一个表,各表通过某些常用的值(即关系设计中的关系)互相关联。语言表中每种语言有唯一的标识,此标识称为主键,可以是语言id或任何其他唯一.原创 2020-12-14 21:45:05 · 181 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十四章 使用子查询
MySQL 4.1引入了子查询。任何SQL语句都是查询,但此术语一般指SELECT语句。有两张表,一张是语言表,一张是电影表:选出语言是英语的电影:SELECT titleFROM filmWHERE language_id IN (SELECT language_id FROM language WHERE name = 'English');能嵌套的子查询没有数量限制,但由于性能限制,不能嵌套太多子原创 2020-12-12 13:35:05 · 190 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十三章 分组数据
按年龄分组计算出每个年龄的人数:分组允许将数据分为多个逻辑组,以便能对每个组进行聚集计算。GROUP BY子句中可以包含任意数目的列:GROUP BY子句中列出的每个列都必须是检索列或有效的表达式(不能是聚集函数),如果SELECT中有表达式,则在GROUP BY子句中必须使用相同表达式,但我测试时并不需要:GROUP BY中不能使用别名,但我测试时可以:除聚集计算语句外,SELECT语句中的每个列都必须在GROUP BY子句中给出,但我测试时不用:此时childno列值为该分组中的一原创 2020-12-11 22:13:21 · 128 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十二章 汇总数据
聚集函数是运行在行组上,计算和返回单个值的函数。对表中数据而非实际数据本身进行汇总,如获取行数、获取某列最值等。除上述函数外,MySQL还支持标准偏差聚集函数。返回某列平均值:SELECT AVG(columnName) AS avgValFROM tableName;AVG函数只能用于确定数值列的平均值,且列名必须作为函数参数给出。为获取多个列的平均值,要使用多个AVG函数。AVG函数忽略值为NULL的行。COUNT函数两种用法:1.COUNT(*):对表中行的数目进行计数,不管表列中原创 2020-12-10 21:18:02 · 188 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十一章 使用数据处理函数
函数的可移植性不强,每种DBMS都支持其他实现不支持的函数,有时差异还很大。将文本全部大写的函数:SELECT Upper(columnName)FROM tableName;right函数参数为right(columnName, num),num含义为要返回的字符数,left函数与此相似:locate函数参数为locate(substr, str, pos),substr指明要查找的串,str指明要查找的列,pos指明要查找的起始位置,起始位置是可选参数,默认为0,返回值为子串开始的下标原创 2020-12-09 18:36:01 · 175 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第十章 创建计算字段
计算字段不实际存在于数据库表中,而是运行时在SELECT语句内创建的。字段基本上与列的意思相同,可互换使用,但数据库列一般称为列,而术语字段通常用在计算字段的连接上。只有数据库知道SELECT语句中哪些列是实际的表列,哪些是计算字段,从客户机(如应用程序)的角度看,计算字段的数据是以与其他列的数据相同的方式返回的。...原创 2020-12-08 22:38:35 · 188 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第九章 用正则表达式进行搜索
正则表达式是用来匹配文本的特殊的串,它用正则表达式语言来建立。MySQL支持的正则表达式仅为正则表达式的一个很小的子集。可通过WHERE子句使用正则表达式过滤SELECT检索出的数据。检索条件列包含字符100的所有行:SELECT columnNameFROM tableNameWHERE columnName REGEXP '100';正则表达式.00中的点表示匹配任意一个字符。LIKE匹配整个列,而REGEXP会在列中找到匹配模式串的部分,如果存在此部分就会返回该行。MySQL 3.原创 2020-12-07 08:52:42 · 288 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第八章 用通配符进行过滤
通配符是用来匹配值的一部分的特殊字符,可用于创建特定的数据搜索模式,搜索模式是由字面值、通配符或两者组合构成的搜索条件。为在搜索子句中使用通配符,必须使用LIKE操作符,LIKE操作符指示MySQL后跟的搜索模式利用通配符匹配而非直接相等匹配进行比较。从技术上说,LIKE是谓词而不是操作符,了解此术语以在看SQL文档时能看懂。百分号通配符%表示任何字符出现任意次数(包括0次):SELECT columnNameFROM tableNameWHERE columnName LIKE 'jet%';原创 2020-12-06 14:13:10 · 221 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第七章 数据过滤
可用AND操作符给WHERE子句附加条件:SELECT columnNameFROM tableNameWHERE columnName1 = 1 AND columnName2 = 2;OR操作符指示MySQL匹配符合任一条件的行:SELECT columnNameFROM tableNameWHERE columnName1 = 1 OR columnName2 = 2;AND的优先级比OR高。可使用圆括号()改变运算次序。任何时候使用具有AND和OR操作符的WHERE子句时都应明确原创 2020-12-05 12:20:18 · 197 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第六章 过滤数据
使用WHERE字句选出特定条件的数据:SELECT columnNameFROM tableNameWHERE columnName = value;数据也能在应用层过滤,但性能较低,服务器还会发送多余的数据,浪费网络带宽。ORDER BY字句要在WHERE字句后。...原创 2020-12-04 22:54:26 · 193 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第五章 排序检索数据
检索出的数据如果不排序,不是以纯粹的随即顺序显示的,一般以它在底层表中出现的顺序显示,这可以是数据最初添加到表中的顺序,但如果数据后来进行过更新或删除,则此顺序将会受到MySQL重用回收存储空间的影响,因此不能依赖不排序的顺序。关系数据库的设计理论认为,如不明确规定排序顺序,则不应假定检索出的数据顺序有意义。SQL语句由子句构成,有些字句是必需的,有些是可选的。字句通常由一个关键字和所提供的数据组成。例子是SELECT语句的FROM字句。ORDER BY字句对检索结果排序:SELECT columnN原创 2020-12-03 21:40:09 · 224 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第四章 检索数据
选出一列:SELECT columnName FROM tableName;一列的输出顺序可能与其他人的输出顺序不同,如果没有明确排序查询结果,则返回的数据的顺序没有特殊意义,可能是数据被添加到表中的顺序,也可能不是。多条SQL语句必须以分号;分隔。特定的DBMS可能不需要在单条SQL语句后加分号,但也可以加,加上总没有坏处。mysql命令行必须以分号结束SQL语句。SQL语句不分大小写。对SQL关键字大写,对列和表名小写可以使代码易于阅读和调试。在MySQL 4.1及之前,标识符(库名、表名、原创 2020-12-01 21:16:23 · 165 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第三章 使用MySQL
为连接到MySQL,需要:1.主机名,如连接到本地MySQL服务器,为localhost。2.端口,如使用默认的3306以外的端口。3.用户名。4.用户口令。连接之后,就可以访问你的登录名能访问的库和表了。连接到MySQL时,没有任何数据库打开供你使用,打开数据库:use databaseName;查看现有的数据库:show databases;进入数据库后查看库中的表:show tables;查看表中的列:show columns from tableName;此句输出原创 2020-11-29 16:43:38 · 227 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第二章 MySQL简介
MySQL是一种DBMS。它开放源代码,可免费使用和修改,且执行速度很快。很多重要公司都用。DBMS分两类:1.基于共享文件系统的DBMS(如Microsoft Access和FileMaker),用于桌面用途,通常不支持高端或更关键的应用。2.基于客户机-服务器的DBMS(如MySQL、Microsoft SQL Server),分为两部分,服务器部分是负责数据和处理的一个软件,运行在被称为数据库服务器的计算机上;客户机是于用户打交道的软件,客户机通过网络提交请求给服务器软件,服务器软件处理这个请求原创 2020-11-29 14:16:38 · 256 阅读 · 0 评论 -
MySQL必知必会 学习笔记 第一章 了解SQL
数据库是保存有组织的数据的容器,通常是一个或一组文件。数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。数据库究竟是文件或其他东西并不重要,因为你不直接访问数据库,你使用的是DBMS,它替你访问数据库。表是某种特定类型数据(如顾客清单类型数据或订单清单类型数据)的结构化清单。相同数据库中不能使用两个相同的表名,不同数据库中可以。模式是关于数据库和表的布局及特性的信息,如可以存什么样的数据、各部分信息如何命名等,模式可用来描述数据库中特定表以及整个数据库和其中表的关系。原创 2020-11-28 15:06:08 · 223 阅读 · 0 评论