mysql参考手册学习笔记

---mysql参考手册
-----------------------------------------小技巧一枚-_-
--在查询数据时,想记录下自己的查询记录?
--tee 'path/to/myrecord.sql'

use test;
CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
--装载表
LOAD DATA LOCAL INFILE 'E:/cloud/mysql数据库相关/pet.txt' INTO TABLE pet
 LINES TERMINATED BY '\r\n';

--插入
INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);

--如果出现错误,删除改正后重新装载
--DELETE FROM pet;

--修改
UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
--日期条件查询
SELECT * FROM pet WHERE birth > '1998-1-1';
--组合条件
SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';

SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm')
OR (species = 'dog' AND sex = 'f');
--安某一列降序排列
SELECT name, birth FROM pet ORDER BY birth DESC;
--双列排序
SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
--日期计算此处,YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。
--比较MM-DD值的表达式部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。
SELECT name, birth, CURDATE(),YEAR(CURDATE())-YEAR(birth) * (RIGHT(CURDATE(),5)<RIGHT(birth,5))
AS age FROM pet;
--日期函数YEAR( )、MONTH( )和DAYOFMONTH( )。
SELECT name, birth, MONTH(birth) FROM pet;
    --DATE_ADD( )允许在一个给定的日期上加上时间间隔。如果在NOW( )值上加上一个月,
    --然后用MONTH()提取月份,结果产生生日所在月份:
SELECT name, birth FROM pet WHERE MONTH(birth) = MONTH(DATE_ADD(CURDATE(),INTERVAL 1 MONTH));
    --它等价于
SELECT name, birth FROM pet WHERE MONTH(birth) = MOD(MONTH(CURDATE()), 12) + 1;


----------------------3.3.4.6. NULL值操作
--0或 NULL意味着假而其它值意味着真。布尔运算的默认真值是1。
--在GROUP BY中,两个NULL值视为相同
----------------------3.3.4.7. 模式匹配
--要想找出以“b”开头的名字:
SELECT * FROM pet WHERE name LIKE 'b%';
--要想找出以“fy”结尾的名字:
SELECT * FROM pet WHERE name LIKE '%fy';
--要想找出包含“w”的名字:
SELECT * FROM pet WHERE name LIKE '%w%';
--要想找出正好包含5个字符的名字,使用“_”模式字符:
SELECT * FROM pet WHERE name LIKE '_____';
--扩展正则表达式的一些字符是: 

--  ‘.’匹配任何单个的字符。

--字符类“[...]”匹配在方括号内的任何字符。例如,“[abc]”匹配“a”、“b”或“c”。
--为了命名字符的范围,使用一个“-”。“[a-z]”匹配任何字母,而“[0-9]”匹配任何数字。
--  “ * ”匹配零个或多个在它前面的字符。例如,“x*”匹配任何数量的“x”字符,“[0-9]*”匹配任何数量的数字,而“.*”匹配任何数量的任何字符。
--为了定位一个模式以便它必须匹配被测试值的开始或结尾,在模式开始处使用“^”或在模式的结尾用“$”
--为了找出以“b”开头的名字,使用“^”匹配名字的开始:
SELECT * FROM pet WHERE name REGEXP '^b';
--如果你想强制使REGEXP比较区分大小写,使用BINARY关键字使其中一个字符串变为二进制字符串。该查询只匹配名称首字母的小写‘b’。
SELECT * FROM pet WHERE name REGEXP BINARY '^b';
--为了找出以“fy”结尾的名字,使用“$”匹配名字的结尾:
SELECT * FROM pet WHERE name REGEXP 'fy$';


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

---------------------------------3.3.4.9. 使用1个以上的表

--pet表追踪你有哪个宠物。如果你想要记录其它相关信息,建立一个event表吧!
CREATE TABLE event (name VARCHAR(20), date DATE,type VARCHAR(15), remark VARCHAR(255));
LOAD DATA LOCAL INFILE 'E:/cloud/mysql数据库相关/event.txt' INTO TABLE event;
--两个表的连接
SELECT pet.name,(YEAR(date)-YEAR(birth)) - (RIGHT(date,5)<RIGHT(birth,5)) AS age,remark
FROM pet, event WHERE pet.name = event.name AND event.type = 'litter';
--与自身连接
--你不必有2个不同的表来进行联结。如果你想要将一个表的记录与同一个表的其它记录进行比较,可以将一个表联结到自身
SELECT p1.name, p1.sex, p2.name, p2.sex, p1.species
   FROM pet AS p1, pet AS p2
   WHERE p1.species = p2.species AND p1.sex = 'f' AND p2.sex = 'm';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值