《MYSQL必知必会》没有内容详细补充

###本文是在学习《MYSQL必知必会》后对书中没有的内容进行补充,强烈推荐该书进行MYSQL数据库入门!!!!!

总结:

use RUNOOB; 命令用于选择数据库RUNOOB。
set names utf8; 命令用于设置使用的字符集。set names utf8指定了客户端和服务器之间传递字符的编码规则为UTF8。
set char set 'gbk';由于个人设置问题无法显示和插入中文,估多加本条语句。
SELECT * FROM Websites; 读取数据表Websites的信息。
注:SQL 对大小写不敏感:SELECT 与 select 是相同的。
一些最重要的 SQL 命令
SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引

用正则表达式进行搜索

正则表达式是用来匹配文本的特殊的串(字符集合)

REGEXP

下面的语句检索列 prod_name 包含文本12 的所有行:

select prod_name

from Products

where prod_name REGEXP ‘12’

ORDER BY prod_name;

注意:与LIKE不同:REGEXP ‘12’是指包含12的字符串,而LIKE‘12’指prod_name=12;

REGEXP 后所跟的东西作为正则表达式(与文字正文12 匹配的一个正则表达式)处理。

MySQL中的正则表达式匹配不区分大小写(即,大写和小写都匹配)。为区分大小写,可使用 BINARY 关键字,如 WHERE prod_name REGEXP BINARY 'JetPack .000' 。

 

 | 的用法

为搜索两个串之一(或者为这个串,或者为另一个串),使用 |

 

正则表达式 [123] Ton 。 [123] 定义一组字符,它的意思是匹配 1 或 2 或 3 ,

 [] 是另一种形式的 OR 语句。事实上,正则表达式 [123]Ton为 [1|2|3]Ton 的缩写

 

但是注意下面程序的 区别

 

这并不是期望的输出。两个要求的行被检索出来,但还检索出了另外3行。之所以这样是由于MySQL假定你的意思是 '1' 或'2' 或 '3 ton' 。除非把字符 | 括在一个集合中,否则它将应用于整个串。

匹配范围

[0-9]匹配0-9内的数字字符

 [a-z] 匹配任意字母字符

为了匹配特殊字符,必须用 \\ 为前导。 \\- 表示查找 - , \\. 表示查找 .

 

为更方便工作,可以使用预定义的字符集,称为字符类(character class)。表9-2列出字符类以及它们的含义。

表9-2 字符类

[类]          说 明

[:alnum:]  任意字母和数字(同[a-zA-Z0-9])

[:alpha:]  任意字符(同[a-zA-Z])

[:blank:]  空格和制表(同[\\t])

[:cntrl:]  ASCII控制字符(ASCII 0到31和127)

[:digit:]  任意数字(同[0-9])

[:graph:]  与[:print:]相同,但不包括空格

[:lower:]  任意小写字母(同[a-z])

[:print:]  任意可打印字符

[:punct:]  既不在[:alnum:]又不在[:cntrl:]中的任意字符

[:space:]  包括空格在内的任意空白字符(同[\\f\\n\\r\\t\\v])

[:upper:]  任意大写字母(同[A-Z])

[:xdigit:]  任意十六进制数字(同[a-fA-F0-9])

 

 \\( 匹配 (,[0-9] 匹配任意数字(这个例子中为1和5), sticks? 匹配 stick和 sticks ( s 后的 ? 使 s 可选,因为 ? 匹配它前面的任何字符的0次或1次出现), \\) 匹配 ) 。没有 ? ,匹配 stick 和 sticks会非常困难。

如前所述, [:digit:] 匹配任意数字,因而它为数字的一个集合。 {4} 确切地要求它前面的字符(任意数字)出现4次,所以[[:digit:]]{4} 匹配连在一起的任意4位数字。

上面的例子也可以如下编写:

 

 

目前为止的所有例子都是匹配一个串中任意位置的文本。为了匹配特定位置的文本,需要使用表9-4列出的定位符

 

如果你想找出以一个数(包括以小数点开始的数)开始的所有产品,怎么办?简单搜索 [0-9\\.] (或 [[:digit:]\\.] )不行,因为它将在文本内任意位置查找匹配。解决办法是使用 ^ 定位符,如下所示:

 

 

^ 匹配串的开始。因此, ^[0-9\\.] 只在 . 或任意数字为串中第一个字符时才匹配它们。没有 ^ ,则还要多检索出4个别的行(那些中间有数字的行)。

 LIKE 和 REGEXP的不同在于, LIKE 匹配整个串而 REGEXP 匹配子串。利用定位符,通过用 ^ 开始每个表达式,用 $ 结束每个表达式,可以使REGEXP 的作用与 LIKE 一样。

 

常用日期和时间处理函数

函 数           说 明

AddDate()  增加一个日期(天、周等)

AddTime()  增加一个时间(时、分等)

CurDate()  返回当前日期

CurTime()  返回当前时间

Date()  返回日期时间的日期部分

DateDiff()  计算两个日期之差

Date_Add()  高度灵活的日期运算函数

Date_Format()  返回一个格式化的日期或时间串

Day()  返回一个日期的天数部分

DayOfWeek()  对于一个日期,返回对应的星期几

Hour()  返回一个时间的小时部分

Minute()  返回一个时间的分钟部分

Month()  返回一个日期的月份部分

Now()  返回当前日期和时间

Second()  返回一个时间的秒部分

Time()  返回一个日期时间的时间部分

Year()  返回一个日期的年份部分

 

存储的 order_date 值为2005-09-01 11:30:05 ,则 WHERE order_date = '2005-09-01' 失败。

为此,必须使用 Date()函数。 Date(order_date) 指示MySQL仅提取列的日期部分,更可靠的

SELECT 语句为

 

猜你喜欢

转载自blog.csdn.net/zangba9624/article/details/103888637