循环渐进学习mysql(1)

来源:互联网 发布:nginx 安全加固 编辑:程序博客网 时间:2024/04/29 10:29

create database menagerie;
show databases;
use menagerie;
show tables;
create table pet (name varchar(20),owner varchar(20),sepcies varchar(20),sex char(1),birth date,death date);
describe pet;
INSERT INTO pet
     VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('cat','dd','hamster','d','1949-03-30',NULL);
INSERT INTO pet
     VALUES ('jon','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('dog','de','cc','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('cat','ge','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('bird','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('niao','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('wangba','gh','de','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('zhu','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('peg','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('houzi','Diane','hamster','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('file','Diane','hamster','u','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('she','Diane','gg','f','1999-03-30',NULL);
INSERT INTO pet
     VALUES ('ji','oo','kk','f','1999-03-30',NULL);
select * from pet order by name desc;

/**SELECT what_to_select
FROM which_table
WHERE conditions_to_satisfy;
what_to_select指出你想要看到的内容,可以是列的一个表,或*表示“所有的列”。which_table指出你想要从其检索数据的表。
WHERE子句是可选项,如果选择该项,conditions_to_satisfy指定行必须满足的检索条件。

**/
UPDATE pet SET birth = '1959-08-31' WHERE name = 'wangba';

select * from pet where name='cat';
select * from pet where name='cat' and owner='ge';
SELECT owner FROM pet;            --  这个地方的要加一个owner字段      
select  name,owner,sex from pet  where name='she' or owner='gh';
SELECT * FROM pet
     ORDER BY  birth DESC;


/***
MySQL提供了几个函数,可以用来计算日期,例如,计算年龄或提取日期部分。

要想确定每个宠物有多大,可以计算当前日期的年和出生日期之间的差。如果当前日期的日历年比出生日期早,
则减去一年。以下查询显示了每个宠物的出生日期、当前日期和年龄数值的年数字。

*****/
 SELECT name, birth, CURDATE(),
    (YEAR(CURDATE())-YEAR(birth)),
    (RIGHT(CURDATE(),5)<RIGHT(birth,5))
     AS age
    FROM pet;



/***
此处,YEAR()提取日期的年部分,RIGHT()提取日期的MM-DD (日历年)部分的最右面5个字符。比较MM-DD值的表达式
部分的值一般为1或0,如果CURDATE()的年比birth的年早,则年份应减去1。整个表达式有些难懂,使用alias (age)
来使输出的列标记更有意义。尽管查询可行,如果以某个顺序排列行,则能更容易地浏览结果。添加ORDER BY name子
句按照名字对输出进行排序则能够实现。

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


/**
为了按age而非name排序输出,只要再使用一个ORDER BY子句:

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

/***
可以使用一个类似的查询来确定已经死亡动物的死亡年龄。你通过检查death值是否是NULL来确定是哪些动物,然后,对于那些非NULL值的动物,
需要计算出death和birth值之间的差:

**/
 SELECT name, birth, death,
    (YEAR(death)-YEAR(birth)) - (RIGHT(death,5)<RIGHT(birth,5))
     AS age
    FROM pet WHERE death IS NOT NULL ORDER BY age;

SELECT name, birth, MONTH(birth) FROM pet;      -- 查看生日


SELECT name, birth FROM pet WHERE MONTH(birth) = 3;   -- 查看生日在三月份的鸟名字和 生日日期


本文出自 “ghost” 博客,请务必保留此出处http://caizi.blog.51cto.com/5234706/1537342

0 0
原创粉丝点击