###本文是在学习《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 语句为