MySQL 操作详解

创建并选择数据库:

mysql> SHOW DATABASES;
mysql> CREATE DATABASE test;
mysql> USE test

创建表:

mysql> CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),     
-> species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);

查看表:

mysql> SHOW TABLES;
mysql> DESCRIBE pet;

加载数据到表中:

mysql> LOAD DATA INFILE '/home/shiyanlou/Desktop/pet.txt' INTO TABLE pet;
mysql> INSERT INTO pet     -> VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

检索表中信息:

mysql> SELECT * FROM pet;

修正错误记录:

mysql> UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';

选择特殊行:

mysql> SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')     
-> OR (species = 'dog' AND sex = 'f');

选择特殊列:

mysql> SELECT name, species, birth FROM pet     
-> WHERE species = 'dog' OR species = 'cat';

行分类:

mysql> SELECT name, species, birth FROM pet    
 -> ORDER BY species, birth DESC;

注意DESC关键字仅适用于在它前面的列名(birth);不影响species列的排序顺序。

日期计算:

mysql> SELECT name, birth, CURDATE(),     
-> (YEAR(CURDATE())-YEAR(birth))     
-> - (RIGHT(CURDATE(),5)<RIGHT(birth,5)) AS age       
-> FROM pet;
-> FROM pet ORDER BY name;

要想确定每个宠物有多大,可以使用函数TIMESTAMPDIFF()计算当前日期的年和出生日期之间的差也可以按照直接使用语句(YEAR(CURDATE())-YEAR(birth))计算,其中函数CURDATE()是计算当前的日期。如果当前日期的日历年比出生日期早,则减去一年。以下代码是查询每个宠物的出生日期、当前日期和年龄(以年作为计算单位),其中关键字age是年龄这个计算结果的标签。

此处,YEAR()提取日期的年部分,RIGHT()提取日期最右面5个字符的MM-DD (月份和日期)部分。MM-DD值的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。整个表达式看起来有些难懂,使用age来使输出的列标记更有意义。

模式匹配:

MySQL提供标准的SQL模式匹配,以及一种基于类Unix里的程序如vi、grep和sed里的扩展正则表达式模式匹配的格式。 SQL模式匹配允许你使用“_”匹配任何单个字符,而“%”匹配任意数目字符(包括零字符)。在 MySQL中,SQL的模式默认是忽略大小写的。下面给出一些例子。注意使用SQL模式时,不能使用=或!=;而应使用LIKE或NOT LIKE比较操作符。 要想找出以“b”开头的名字的动物信息:

mysql> SELECT * FROM pet WHERE name LIKE 'b%';

要想找出以“fy”结尾的名字:

mysql> SELECT * FROM pet WHERE name LIKE '%fy';
要想找出包含“w”的名字:
mysql> SELECT * FROM pet WHERE name LIKE '%w%';
要想找出正好包含5个字符的名字,使用“_”模式字符:
mysql> SELECT * FROM pet WHERE name LIKE '_____';
扩展正则表达式的一些字符是:
 ‘.’匹配任何单个的字符。  字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。  “ *”匹配零个或多个在它前面的东西。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配的任何数量的数字,而“.*”匹配任何数量的任何东西。

如果REGEXP模式与被测试值的任何地方匹配,模式就匹配(这不同于LIKE模式匹配,只有与整个值匹配,模式才匹配)。 为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”。 为了说明扩展正则表达式如何工作,下面使用REGEXP重写上面所示的LIKE查询:

为了找出以“b”开头的名字,使用“^”匹配名字的开始:

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

如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。

mysql> SELECT * FROM pet WHERE name REGEXP BINARY '^b';

为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:

mysql> SELECT * FROM pet WHERE name REGEXP 'fy$';

为了找出包含一个“w”的名字,使用以下查询:

mysql> SELECT * FROM pet WHERE name REGEXP 'w';

为了找出包含正好5个字符的名字,使用“^”和“$”匹配名字的开始和结尾,和5个“.”实例在两者之间:

mysql> SELECT * FROM pet WHERE name REGEXP '^.....$';

计算行数:

检索了拥有宠物的人的名字。如果你想要知道每个主人有多少宠物,你也可以使用COUNT(*)函数:

mysql> SELECT owner, COUNT(*) FROM pet GROUP BY owner;

查看每种动物的数量:

mysql> SELECT species, COUNT(*) FROM pet GROUP BY species;
按种类和性别组合分类的动物数量:
mysql> SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值