关于MySQL的一些东西

MySQL命令:

mysql –h localhost –u root –p

quit

select version()

select current_date

select version(), current_date

select sin(pi()/2)

select now()

select user()

show databases

grant all on database.* to ‘username’@’localhost’

use database

show tables

create table …

alter table …

describe table

将数据装入表中

load data方法:

创建一个文本文件,每个条目一行,用tab分开,各个列与create table中的列次序相对应,不知道的值为NULL\N代替。

LOAD DATA LOCAL INFILE ‘/path/filename.txt’ INTO TABLE table_name;

注意windows\r\n做为行的结束符因此应该使用

LOAD DATA LOCAL INFILE ‘/path/filename.txt’ INTO TABLE table_name LINES TERMINATED BY ‘\r\n’;

如果想一次增加一条新的记录使用INSERT语句

从表检索信息

SELECT what_to_select

FROM which_table

WHERE conditions_to_satisfy;

SELECT * FROM table

UPDATE table SET …

SELECT DISTINCT column FROM table WHERE …

ORDER BY column

强制执行区分大小写ORDER BY BINARY column

ORDER BY column DESC/ASC

可以按照不同的方向对不同的列进行排序:

SELECT name, species, birth FROM pet ORDER BY species, birth DESC;

即按照species升序,按照birth降序

MySQL提供了丰富的日期处理函数:

MySQL提供几个日期部分的提取函数:YEAR(), MONTH(), DAYOFMONTH()

NULL需要使用IS NULL或者IS NOT NULL来判断



MySQL中的模式匹配:

<!--[if !supportLists]-->1. <!--[endif]-->标准的SQL模式匹配,不能使用=!=,而应该使用LIKENOT LIKE

“_”匹配任何单个字符,”%”匹配任意数目的字符(包含零字符)

默认情况是不区分大小写

<!--[if !supportLists]-->2. <!--[endif]-->同时MySQL提供扩展的正则表达式匹配的格式

使用REGEXPNOT REGEXP(或者叫做RLIKENOT RLIKE)

扩展的字符有:

. 匹配单个字符;

[…]匹配方括号内的任何字符,如[abc]

[a-z], [0-9]

*匹配0个或多个在它前面的字符,如x*

.*匹配任何数量的任何字符

同时可以定位一个模式必须匹配被匹配字符串的开始或结尾,可以在模式开始使用”^”结尾使用”$”

SELECT * FROM pet WHERE name REGEXP '^b';

寻找b开头的名字

字符串比较函数

  • expr LIKE pat [ESCAPE 'escape-char']

模式匹配,使用SQL简单正规表达式比较。返回1 (TRUE) 0 (FALSE) expr pat 中任何一个为 NULL,则结果为 NULL

模式不需要为文字字符串。例如,可以被指定为一个字符串表达式或表列。

在模式中可以同LIKE一起使用以下两种通配符:

字符

说明

%

匹配任何数目的字符,甚至包括零字符

_

只能匹配一种字符

mysql> SELECT 'David!' LIKE 'David_';

-> 1

mysql> SELECT 'David!' LIKE '%D%v%';

-> 1

若要对通配符的文字实例进行检验, 可将转义字符放在该字符前面。如果没有指定 ESCAPE字符, 则假设为‘\’

字符串

说明

\%

匹配一个 ‘%’字符

\_

匹配一个 ‘_’ 字符

mysql> SELECT 'David!' LIKE 'David\_';

-> 0

mysql> SELECT 'David_' LIKE 'David\_';

-> 1

要指定一个不同的转义字符,可使用ESCAPE语句:

mysql> SELECT 'David_' LIKE 'David|_' ESCAPE '|';

-> 1

转义序列可以为空,也可以是一个字符的长度。 MySQL <chsdate year="1899" month="12" day="30" islunardate="False" isrocdate="False" w:st="on">5.1.2</chsdate>开始, 如若 NO_BACKSLASH_ESCAPES SQL模式被激活, 则该序列不能为空。

以下两个语句举例说明了字符串比较不区分大小写,除非其中一个操作数为二进制字符串:

mysql> SELECT 'abc' LIKE 'ABC';

-> 1

mysql> SELECT 'abc' LIKE BINARY 'ABC';

-> 0

MySQL, LIKE 允许出现在数字表达式中。 (这是标准SQL LIKE 的延伸)。

mysql> SELECT 10 LIKE '1%';

-> 1

注释 由于 MySQL在字符串中使用 C转义语法(例如, ‘\n’代表一个换行字符),在LIKE字符串中,必须将用到的‘\’双写。例如, 若要查找 ‘\n’, 必须将其写成 ‘\\n’。而若要查找 ‘\’, 则必须将其写成 it as ‘\\\\’;原因是反斜线符号会被语法分析程序剥离一次,在进行模式匹配时,又会被剥离一次,最后会剩下一个反斜线符号接受匹配。

  • expr NOT LIKE pat [ESCAPE 'escape-char']

这相当于 NOT (expr LIKE pat [ESCAPE 'escape-char'])


计数行

SELECT COUNT(*) …

GROUP BY结合使用

查询多个表:

单个表的自连接;

多个表之间的连接;

批处理模式下使用MySQL

Mysql <batch-file

其中batch-file即是要运行的脚本文件

如果想分页显示使用mysql <batch-file|more, 或者将结果输出到mysql <batch-file>mysql.out

MySQL一些查询的例子:

列的最大值MAX等,参看MySQL Tutorial.

用户变量:

可以先在用户变量中保存值然后在以后引用它;这样可以将值从一个语句传递到另一个语句。用户变量与连接有关。也就是说,一个客户端定义的变量不能被其它客户端看到或使用。当客户端退出时,该客户端连接的所有变量将自动释放。

使用用户变量的例子,

SELECT @min_price:=MIN(price),@max_price:=MAX(price) FROM shop;

mysql> SELECT * FROM shop WHERE price=@min_price OR price=@max_price;

可以使用LAST_INSERT_ID()函数获取插入新的记录的ID

INSERT INTO person VALUES (NULL, 'Antonio Paz');

SELECT @last := LAST_INSERT_ID();

INSERT INTO shirt VALUES

(NULL, 'polo', 'blue', @last),

(NULL, 'dress', 'white', @last),

(NULL, 't-shirt', 'blue', @last);

或者使用mysql_insert_id()MySQL API函数获取新插入记录的ID

根据两个键搜索

可以充分利用使用单关键字的OR子句,如同AND的处理。

一个比较灵活的例子是寻找两个通过OR组合到一起的关键字:

SELECT field1_index, field2_index FROM test_table

WHERE field1_index = '1' OR field2_index = '1'

该情形是已经优化过的。参见7.2.6节,索引合并优化

还可以使用UNION将两个单独的SELECT语句的输出合成到一起来更有效地解决该问题。参见13.2.7.2节,“UNION语法

每个SELECT只搜索一个关键字,可以进行优化:

SELECT field1_index, field2_index

 FROM test_table WHERE field1_index = '1'

<place w:st="on"><span lang="EN-US" style='font-size: 10.5pt; font-family: "Times New Roman";'>UNION</span></place>

SELECT field1_index, field2_index

 FROM test_table WHERE field2_index = '1';





更多的参考资料:

MySQL参考手册


MySQL教程

MySQL正则表达式


你可能感兴趣的:(sql,mysql,windows,正则表达式,脚本)