在大学实习的时候,用到了 Python 里头的一个小模块 ulrilb2,是一个简单的爬虫,这个模块出错的时候,会抛出各种异常,突然想知道为什么会抛出这些异常,而且 Python 自带的模块都是开源的,能拿到一手的源码,于是把它读完了。这也是第一次知道最简单的爬虫是怎么样的。接着,实习项目中用到了 Python 的 Web 框架 Django,非常强大。
作者随笔过去的一年,确实有点压力,就快喘息不过来了。原因有二,一是工作,一是《Redis 源码日志》。《Redis 源码日志》在前天发布了,心里的石头总算落地。发布之前好好将排版做了一遍,内容上除了代码,也通读了一遍,尽量语句连贯,最主要是把问题解释到位就好。之前还疑惑着怎么发布这本电子书好,是免费在博客上发布 PDF 的好,还是将其制作成网页发布在博客上。
本书分为六个部分,包括 Redis 源码日志,服务框架,基础数据结构,内功心法,应用,其他,从源码层面循序渐进的了解 Redis。通过阅读本书,读者可以快速、有效地了解 Redis 的内部构造以及运作机制,更好、更高效地使用 Redis。第一部分,主要是在阅读代码过程中的日志和笔记。
COUNT函数是 SQL 中最简单的函数了,对于统计由 SELECT 语句返回的记录非常有用。要理解 COUNT 函数,请考虑 employee_tbl 表,表中的记录如下所示: SQL> SELECT * FROM employee_tbl;
CONCAT 函数用于将两个字符串连接为一个字符串,试一下下面这个例子: SQL> SELECT CONCAT('FIRST ', 'SECOND'); +----------------------------+ | CONCAT('FIRST ', 'SECOND') | +----------------------------+ | FIRST SECOND | +----------------------------+ 1 row in set (0.
SQL 有一个 RAND 函数,用于产生 0 至 1 之间的随机数: SQL> SELECT RAND( ), RAND( ), RAND( ); +------------------+-----------------+------------------+ | RAND( ) | RAND( ) | RAND( ) | +------------------+-----------------+------------------+ | 0.45464584925645 | 0.1824410643265 | 0.
SQRT 函数用于计算得出任何数值的平方根。你可以像下面这样使用 SELECT 语句计算任何数值的平方根: SQL> select SQRT(16); +----------+ | SQRT(16) | +----------+ | 4.000000 | +----------+ 1 row in set (0.00 sec)你在这里看到的是浮点数,因为 SQL 以浮点数类型来进行平方根的计算。你还可以使用 SQRT 函数来计算表中记录的平方根。
SUM函数用于找出表中记录在某字段处的总和。要理解 SUM 函数,请考虑 employee_tbl 表,表中记录如下所示: SQL> SELECT * FROM employee_tbl;
AVG函数用于找出表中记录在某字段处的平均值。要理解 AVG 函数,请考虑 employee_tbl 表,表中记录如下所示: SQL> SELECT * FROM employee_tbl;
MIN函数用于找出记录集中具有最大值的记录。要理解 MIN 函数,请考虑 employee_tbl 表,表中记录如下所示: SQL> SELECT * FROM employee_tbl;
MAX函数用于找出记录集中具有最大值的记录。要理解 MAX 函数,请考虑 employee_tbl 表,表中记录如下所示: SQL> SELECT * FROM employee_tbl;
如果你从网页中获取用户输入,并将其插入到 SQL 数据库中的话,那么你很可能已经暴露于一种被称作 SQL 注入的安全风险之下了。本节将会教你如何防止 SQL 注入,以及如何保护 Perl 这样的服务器端脚本中的程序和 SQL 语句。注入通常发生在获取用户输入的时候,例如预期得到用户的名字,但是得到的却是一段很可能会在你不知情的情况下运行的 SQL 语句。
有时候,数据表中会存在相同的记录。在获取表中记录时,相较于取得重复记录来说,取得唯一的记录显然更有意义。我们之前讨论过的 SQL DISTINCT 关键字,与 SELECT 语句一起使用可以时,可以达到消除所有重复记录,只返回唯一记录的目的。语法:利用 DISTINCT 关键字来消除重复记录的基本语法如下所示:SELECT DISTINCT column1, column2,.....
序列是根据需要产生的一组有序整数:1, 2, 3 ... 序列在数据库中经常用到,因为许多应用要求数据表中的的每一行都有一个唯一的值,序列为此提供了一种简单的方法。本节阐述在 MySQL 中如何使用序列。
子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。子查询用于为主查询返回其所需数据,或者对检索数据进行进一步的限制。子查询可以在 SELECT、INSERT、UPDATE 和 DELETE 语句中,同 =、<、>、>=、<=、IN、BETWEEN 等运算符一起使用。
有些情况下,你可能需要原样拷贝某张数据表。但是,CREATE TABEL 却不能满足你的需要,因为复制表必须和原表拥有一样的索引、默认值等等。如果你在使用 MySQL 关系型数据库管理系统的话,下面几个步骤可以帮你解决这个问题:使用 SHOW CREATE TABLE 命令来获取一条指定了原表的结构、索引等信息的 CREATE TABLE 语句。将语句中的表名修改为克隆表的名字,然后执行该语句。
某些关系型数据库管理系统支持临时表。临时表是一项很棒的特性,能够让你像操作普通的 SQL 数据表一样,使用 SELECT、UPDATE 和 JOIN 等功能来存储或者操作中间结果。临时表有时候对于保存临时数据非常有用。有关临时表你需要知道的最重要的一点是,它们会在当前的终端会话结束后被删除。临时表自 MySQL 3.23 起受到支持。如果你的 MySQL 版本比 3.
下面的列表中是 SQL 中所有与日期和时间相关的重要函数。你所用的 RDBMS 可能会支持更多其他的函数。下面的列表基于 MySQL 关系型数据库管理系统。
关注时代Java