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; -- 查看生日在三月份的鸟名字和 生日日期
循环渐进学习mysql(1)