MySQL必知必会
MySQL必知必会
亥虫
做人如果没有梦想,那跟咸鱼有什么差别
展开
-
MySQL必知必会二十八:安全管理
28.1 访问控制MySQL服务器的安全基础是: 用户应该对他们需要的数据具有适当的访问权,既不能多也不能少。换句话说,用户不能对过多的数据具有过多的访问权。28.2 管理用户需要获得所有用户账号列表时。为此,可使用以下代码:mysql> USE mysql;Database changedmysql> SELECT user FROM user;+------------------+| user |+------------------+| mys原创 2020-06-27 17:17:42 · 197 阅读 · 0 评论 -
MySQL必知必会三十:改善性能
30.1 改善性能首先, MySQL(与所有DBMS一样)具有特定的硬件建议。在学习和研究MySQL时,使用任何旧的计算机作为服务器都可以。但对用于生产的服务器来说,应该坚持遵循这些硬件建议。一般来说,关键的生产DBMS应该运行在自己的专用服务器上。MySQL是用一系列的默认设置预先配置的,从这些设置开始通常是很好的。但过一段时间后你可能需要调整内存分配、缓冲区大小等。(为查看当前设置,可使用SHOW VARIABLES;和SHOW STATUS;。)MySQL一个多用户多线程的DBMS,换言之,原创 2020-06-27 16:17:21 · 222 阅读 · 0 评论 -
MySQL必知必会二十七:全球化和本地化
27.1 字符集和校对顺序数据库表被用来存储和检索数据。不同的语言和字符集需要以不同的方式存储和检索。因此, MySQL需要适应不同的字符集(不同的字母和字符),适应不同的排序和检索数据的方法。在讨论多种语言和字符集时,将会遇到以下重要术语:字符集为字母和符号的集合;编码为某个字符集成员的内部表示;校对为规定字符如何比较的指令。在MySQL的正常数据库活动(SELECT、 INSERT等)中,不需要操心太多的东西。使用何种字符集和校对的决定在服务器、数据库和表级进行。27.2 使用字符集和校原创 2020-06-27 14:00:25 · 175 阅读 · 0 评论 -
MySQL必知必会二十六:管理事务处理
26.1 事务处理并非所有引擎都支持事务处理 正如第21章所述, MySQL支持几种基本的数据库引擎。正如本章所述,并非所有引擎都支持明确的事务处理管理。 MyISAM和InnoDB是两种最常使用的引擎。前者不支持明确的事务处理管理,而后者支持。这就是为什么本书中使用的样例表被创建来使用InnoDB而不是更经常使用的MyISAM的原因。如果你的应用中需要事务处理功能,则一定要使用正确的引擎类型。事务处理(transaction processing)可以用来维护数据库的完整性,它保证成批的MySQ原创 2020-06-27 11:41:07 · 206 阅读 · 0 评论 -
MySQL必知必会二十五:使用触发器
25.1 触发器触发器是MySQL响应以下任意语句而自动执行的一条MySQL语句(或位于BEGIN和END语句之间的一组语句):DELETE;INSERT;UPDATE。其他MySQL语句不支持触发器。25.2 创建触发器在创建触发器时,需要给出4条信息:唯一的触发器名;触发器关联的表;触发器应该响应的活动( DELETE、 INSERT或UPDATE);触发器何时执行(处理之前或之后)。触发器用CREATE TRIGGER语句创建。下面是一个简单的例子:CREATE TR原创 2020-06-27 11:13:53 · 703 阅读 · 0 评论 -
MySQL必知必会二十四:使用游标
24.1 游标游标( cursor) 是一个存储在MySQL服务器上的数据库查询,它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游标之后,应用程序可以根据需要滚动或浏览其中的数据。只能用于存储过程 不像多数DBMS, MySQL游标只能用于存储过程(和函数)。24.2 使用游标使用游标涉及几个明确的步骤。在能够使用游标前,必须声明(定义)它。这个过程实际上没有检索数据,它只是定义要使用的SELECT语句。一旦声明后,必须打开游标以供使用。这个过程用前面定义的SELECT语原创 2020-06-26 10:33:59 · 463 阅读 · 0 评论 -
MySQL必知必会二十三:使用存储过程
23.1 存储过程存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件,虽然它们的作用不仅限于批处理。23.2 为什么要使用存储过程使用存储过程有3个主要的好处,即简单、安全、高性能。显然,它们都很重要。不过,在将SQL代码转换为存储过程前,也必须知道它的一些缺陷。一般来说,存储过程的编写比基本SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。你可能没有创建存储过程的安全访问权限。许多数据库管理员限制存储过程的创建权限,允许用户使用存储过程,但不允许原创 2020-06-23 23:06:49 · 6015 阅读 · 1 评论 -
MySQL必知必会二十二:使用视图
22.1 视图视图是虚拟的表。与包含数据的表不一样,视图只包含使用时动态检索数据的查询。理解视图的最好方法是看一个例子。第15章中用下面的SELECT语句从3个表中检索数据:SELECT cust_name, cust_contact FROM customers, orders, orderitems WHERE customers.cust_id = orders.cust_id AND orderitems.order_num=orders.order_num AND prod_id='TN原创 2020-06-19 22:33:58 · 324 阅读 · 0 评论 -
MySQL必知必会二十一:创建和操纵表
21.1 创建表MySQL不仅用于表数据操纵,而且还可以用来执行数据库和表的所有操作,包括表本身的创建和处理。21.1.1 表创建基础为利用CREATE TABLE创建表,必须给出下列信息:新表的名字,在关键字CREATE TABLE之后给出;表列的名字和定义,用逗号分隔。CREATE TABLE语句也可能会包括其他关键字或选项,但至少要包括表的名字和列的细节。下面的MySQL语句创建本书中所用的customers表:CREATE TABLE customers( cust_id int原创 2020-06-19 21:47:51 · 267 阅读 · 0 评论 -
MySQL必知必会二十:更新和删除数据
20.1 更新数据为了更新(修改)表中的数据,可使用UPDATE语句。可采用两种方式使用UPDATE:更新表中特定行;更新表中所有行。不要省略WHERE子句 在使用UPDATE时一定要注意细心。因为稍不注意,就会更新表中所有行。UPDATE语句非常容易使用,甚至可以说是太容易使用了。基本的 UPDATE语句由3部分组成,分别是:要更新的表;列名和它们的新值;确定要更新行的过滤条件。举一个简单例子。客户10005现在有了电子邮件地址,因此他的记录需要更新,语句如下:mysql&原创 2020-06-14 21:56:52 · 362 阅读 · 0 评论 -
MySQL必知必会十九:插入数据
19.1 数据插入顾名思义, INSERT是用来插入(或添加)行到数据库表的。插入可以用几种方式使用:插入完整的行;插入行的一部分;插入多行;插入某些查询的结果。插入及系统安全 可针对每个表或每个用户,利用MySQL的安全机制禁止使用INSERT语句19.2 插入完整的行把数据插入表中的最简单的方法是使用基本的INSERT语法,它要求指定表名和被插入到新行中的值。下面举一个例子:mysql> INSERT INTO Customers VALUES(NULL, 'Pep E.原创 2020-06-14 21:38:51 · 331 阅读 · 0 评论 -
MySQL必知必会十八:全文本搜索
18.1 理解全文本搜索并非所有引擎都支持全文本搜索 MySQL支持几种基本的数据库引擎。并非所有的引擎都支持本书所描述的全文本搜索。两个最常使用的引擎为MyISAM和InnoDB,前者支持全文本搜索,而后者不支持。这就是为什么虽然本书中 创 建 的 多 数 样 例 表 使 用 InnoDB , 而 有 一 个 样 例 表( productnotes表)却使用MyISAM的原因。如果你的应用中需要全文本搜索功能,应该记住这一点。LIKE关键字和正则表达式虽然这些搜索机制非常有用,但存在几个重要的限原创 2020-06-03 23:16:11 · 3668 阅读 · 0 评论 -
MySQL必知必会十七:组合查询
17.1 组合查询MySQL允许执行多个查询(多条SELECT语句),并将结果作为单个查询结果集返回。这些组合查询通常称为并( union) 或复合查询(compound query)。有两种基本情况,其中需要使用组合查询:在单个查询中从不同的表返回类似结构的数据;对单个表执行多个查询,按单个查询返回数据。17.2 创建组合查询17.2.1 使用UNIONmysql> SELECT vend_id, prod_id, prod_price FROM products WHERE pr原创 2020-06-03 21:37:53 · 341 阅读 · 0 评论 -
MySQL必知必会十六:创建高级联结
16.1 使用表别名别名除了用于列名和计算字段外, SQL还允许给表名起别名。这样做有两个主要理由:缩短SQL语句;允许在单条SELECT语句中多次使用相同的表。mysql> SELECT cust_name, cust_contact FROM customers AS c, orders AS o, orderitems AS oi WHERE c.cust_id=o.cust_id AND oi.order_num=o.order_num AND prod_id='TNT2';+-原创 2020-06-02 22:16:14 · 4249 阅读 · 0 评论 -
MySQL必知必会十五:联结表
15.1 联结15.1.1 关系表外键(foreign key) 外键为某个表中的一列,它包含另一个表的主键值,定义了两个表之间的关系。15.2 创建联结mysql> SELECT vend_name, prod_name, prod_price FROM vendors, products WHERE vendors.vend_id=products.vend_id ORDER BY vend_name, prod_name;+-------------+----------------+原创 2020-06-01 21:55:12 · 156 阅读 · 0 评论 -
MySQL必知必会十四:使用子查询
14.1 利用子查询进行过滤现在,假如需要列出订购物品TNT2的所有客户,应该怎样检索?下面列出具体的步骤。检索包含物品TNT2的所有订单的编号。检索具有前一步骤列出的订单编号的所有客户的ID。检索前一步骤返回的所有客户ID的客户信息。上述每个步骤都可以单独作为一个查询来执行。可以把一条SELECT语句返回的结果用于另一条SELECT语句的WHERE子句。mysql> SELECT cust_name, cust_contact FROM customers WHERE cust_id原创 2020-05-28 23:31:17 · 2090 阅读 · 0 评论 -
MySQL必知必会十三:分组数据
13.1 创建分组分组是在SELECT语句的GROUP BY子句中建立的。理解分组的最好办法是看一个例子:mysql> SELECT vend_id, COUNT(*) AS num_prods FROM products GROUP BY vend_id;+---------+-----------+| vend_id | num_prods |+---------+-----------+| 1001 | 3 || 1002 | 2 ||原创 2020-05-28 22:45:18 · 3323 阅读 · 0 评论 -
MySQL必知必会十二:汇总数据
12.1 聚集函数聚集函数( aggregate function) 运行在行组上,计算和返回单个值的函数。函 数说 明AVG()返回某列的平均值COUNT()返回某列的行数MAX()返回某列的最大值MIN()返回某列的最小值SUM()返回某列值之和12.1.1 AVG()函数AVG()通过对表中行数计数并计算特定列值之和,求得该列的平均值。 AVG()可用来返回所有列的平均值,也可以用来返回特定列或行的平均值。下面的例子使用AVG()返回p原创 2020-05-26 22:47:08 · 3568 阅读 · 0 评论 -
MySQL必知必会十一:使用数据处理函数
11.1 函数SQL支持利用函数来处理数据。函数一般是在数据上执行的,它给数据的转换和处理提供了方便。函数没有SQL的可移植性强:能运行在多个系统上的代码称为可移植的( portable)。相对来说,多数SQL语句是可移植的,在SQL实现之间有差异时,这些差异通常不那么难处理。而函数的可移植性却不强。几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异还很大。为了代码的可移植,许多SQL程序员不赞成使用特殊实现的功能。虽然这样做很有好处,但不总是利于应用程序的性能。如果不使用这些函数,原创 2020-05-26 21:35:33 · 237 阅读 · 0 评论 -
MySQL必知必会十:创建计算字段
10.1 拼接字段字段(field) 基本上与列( column) 的意思相同,经常互换使用,不过数据库列一般称为列,而术语字段通常用在计算字段的连接上。拼接(concatenate) 将值联结到一起构成单个值。解决办法是把两个列拼接起来。在MySQL的SELECT语句中,可使用Concat()函数来拼接两个列。mysql> SELECT Concat(vend_name, '(', vend_country, ')') FROM vendors ORDER BY vend_name;+--原创 2020-05-25 23:59:17 · 157 阅读 · 0 评论 -
MySQL必知必会九:用正则表达式进行搜索
1. 基本字符匹配我们从一个非常简单的例子开始。下面的语句检索列prod_name包含文本1000的所有行:mysql> SELECT prod_name FROM products WHERE prod_name REGEXP '1000' ORDER BY prod_name;+--------------+| prod_name |+--------------+| JetPack 1000 |+--------------+分析:除关键字LIKE被REGEXP替代外,原创 2020-05-24 23:46:15 · 3508 阅读 · 0 评论 -
MySQL必知必会八:用通配符进行过滤
8.1 LIKE操作符通配符(wildcard):用来匹配值的一部分的特殊字符。搜索模式(search pattern):由字面值、通配符或两者组合构成的搜索条件为在搜索子句中使用通配符,必须使用LIKE操作符。 LIKE指示MySQL,后跟的搜索模式利用通配符匹配而不是直接相等匹配进行比较。8.1.1 百分号( %)通配符最常使用的通配符是百分号(%)。在搜索串中, %表示任何字符出现任意次数。例如,为了找出所有以词jet起头的产品,可使用以下SELECT语句:mysql> SELECT原创 2020-05-24 22:56:05 · 207 阅读 · 0 评论 -
MySQL必知必会七:数据过滤
7.1 组合WHERE子句MySQL允许给出多个WHERE子句。这些子句可以两种方式使用:以AND子句的方式或OR子句的方式使用。操作符(operator) 用来联结或改变WHERE子句中的子句的关键字。也称为逻辑操作符( logical operator) 。7.1.1 AND操作符mysql> SELECT prod_id, prod_price, prod_name FROM products WHERE vend_id = 1003 AND prod_price <= 10;+原创 2020-05-24 22:24:53 · 178 阅读 · 0 评论 -
MySQL必知必会六:过滤数据
6.1 使用WHERE子句只检索所需数据需要指定搜索条件( search criteria) ,搜索条件也称为过滤条件( filter condition)。在SELECT语句中,数据根据WHERE子句中指定的搜索条件进行过滤。WHERE子句在表名(FROM子句)之后给出,如下所示:mysql> SELECT prod_name, prod_price FROM products WHERE prod_price = 2.50;+---------------+------------+|原创 2020-05-24 20:33:13 · 3401 阅读 · 0 评论 -
MySQL必知必会五:排序检索数据
5.1 排序数据子句(clause) SQL语句由子句构成,有些子句是必需的,而有的是可选的。一个子句通常由一个关键字和所提供的数据组成。mysql> SELECT prod_name FROM products ORDER BY prod_name;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Bird see原创 2020-05-24 18:59:11 · 3403 阅读 · 0 评论 -
MySQL必知必会四:检索数据
4.1 SELECT语句SELECT:用途是从一个或多个表中检索信息。为了使用SELECT检索表数据,必须至少给出两条信息——想选择什么,以及从什么地方选择。4.2 检索单个列mysql> SELECT prod_name FROM products;+----------------+| prod_name |+----------------+| .5 ton anvil || 1 ton anvil || 2 ton anvil || Detonat原创 2020-05-24 18:22:26 · 3221 阅读 · 0 评论 -
MySQL必知必会三:使用MySQL
3.1 连接MySQL与所有客户机—服务器DBMS一样,要求在能执行命令之前登录到DBMS。 登录名可以与网络登录名不相同(假定你使用网络)。 MySQL在内部保存自己的用户列表,并且把每个用户与各种权限关联起来。为了连接到MySQL,需要以下信息:主机名(计算机名)——如果连接到本地MySQL服务器,为localhost;端口(如果使用默认端口3306之外的端口);一个合法的用户名;用户口令(如果需要)。3.2 选择数据库在你最初连接到MySQL时,没有任何数据库打开供你使用。在你能执原创 2020-05-24 17:23:13 · 193 阅读 · 0 评论 -
MySQL必知必会二:MySQL简介
2.1 什么是MySQL数据的所有存储、检索、管理和处理实际上是由数据库软件——DBMS( 数据库管理系统)完成的。 MySQL是一种DBMS,即它是一种数据库软件。2.1.1 客户机—服务器软件服务器部分是负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务器的计算机上。客户机是与用户打交道的软件。例如,如果你请求一个按字母顺序列出的产品表,则客户机软件通过网络提交该请求给服务器软件。服务器软件处理这个请求,根据需要过滤、丢弃和排序数据;然后把结果送回到你的客户机软件。2.2 MySQL原创 2020-05-24 16:50:33 · 3553 阅读 · 0 评论 -
MySQL必知必会一:了解SQL
1.1 数据库基础1.1.1 什么是数据库数据库(database)保存有组织的数据的容器(通常是一个文件或一组文件)。误用导致混淆 人们通常用数据库这个术语来代表他们使用的数据库软件。这是不正确的,它是引起混淆的根源。确切地说,数据库软件应称为DBMS(数据库管理系统)。数据库是通过DBMS创建和操纵的容器。数据库可以是保存在硬设备上的文件,但也可以不是。在很大程度上说,数据库究竟是文件还是别的什么东西并不重要,因为你并不直接访问数据库;你使用的是DBMS,它替你访问数据库。1.1.2 表原创 2020-05-24 16:38:00 · 152 阅读 · 0 评论 -
mysql8报错:ERROR 1410 (42000): You are not allowed to create a user with GRANT
背景电脑新装的mysql,版本为8.0以上。分配权限时直接带密码和账号会报错。grant all privileges on *.* to 'tome'@'%' identified by '123123';ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds...原创 2020-04-16 19:01:42 · 829 阅读 · 0 评论