mysql 学习二 基本语法

   本文基于你对数据库有一定的了解.
   选择了数据库后就可以对库里面的表进行操作了(前提是你有权限这部分后面会将到).
假设我有个表为pet.列名有name,species,sex,owner,birth.
查看所有数据SELECT * FROM pet;
选择特殊行
查看名字为Bowser的数据:SELECT * FROM pet WHERE name = 'Bowser';
查看生日在1998-1-1之后的数据:SELECT * FROM pet WHERE birth > '1998-1-1';
查看物种为狗而且性别为雌性的数据:SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
查看物种是蛇或者物种是鸟的数据:SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
当然AND和OR可以混用,但AND比OR具有更高的优先级。如果你使用两个操作符,使用圆括号指明如何对条件进行分组是一个好主意.
查看雄性猫或者雌性狗的数据:
SELECT * FROM pet WHERE (species = 'cat' AND sex = 'm') OR (species = 'dog' AND sex = 'f');

选择特殊列
查看名称,出生日期:SELECT name, birth FROM pet;
唯一查看拥有者即拥有者只输出一次:SELECT DISTINCT owner FROM pet;

选择行,选择列
同样也可以选择行并且选择列
如:SELECT name, species, birth FROM pet WHERE species = 'dog' OR species = 'cat';

按日期排序
SELECT name, birth FROM test.pet ORDER BY birth asc/desc;(asc代表升序,desc为降序)
默认为asc也就是升序
同时asc,desc只能用于他前面的字段.
SELECT name, birth FROM test.pet ORDER BY name,birth asc;在该例中asc对name不起作用.

模式匹配
_代表任意字符,%代表任意数量任意字符
查看以b为开头名字的数据:SELECT * FROM pet WHERE name LIKE 'b%';
查看以b为开头名字且只有两个字母的名字的数据:SELECT * FROM pet WHERE name LIKE 'b_';

计数行
查看数据总条数SELECT COUNT(*) FROM pet;
查看每个人的宠物的数量:SELECT owner, COUNT(*) FROM pet GROUP BY owner;
使用count计数函数后还有其他的字段一定要有group字段,group代表分类的意思.所以如果除了count字段外还有其他字段的化一定要有group语句,否则报错.
同样也可以这样SELECT species, sex, COUNT(*) FROM pet GROUP BY species, sex;

多表查询
查看可以配对的动物属于自关联
SELECT p1.name,p1.sex,p2.name,p2.sex,p1.species
from test.pet p1,test.pet p2
where p1.sex='f' and p2.sex='m' and p1.species=p2.species

查看每个物种出生最晚的动物:
SELECT p1.species,p1.name,p1.birth
FROM `test`.`pet` p1
where birth=(
select max(birth)
from test.pet p2
where 1=1
and p1.species=p2.species
)

数据分页
获取第3,4,5共3条记录:SELECT * FROM `test`.`pet` limit 2,3;

union 和union all
union相当于or
而union all相当与不去重的union
SELECT owner,name,species
FROM `test`.`pet`
where 1=1
and sex='f'
union
SELECT owner,name,species
FROM `test`.`pet`
where 1=1
and species='bird'
相当于
SELECT owner,name,species
FROM `test`.`pet`
where 1=1
and sex='f' or species='bird'

由于有一条记录既是鸟而且性别是雌性所以在union all比union中多一条重复的记录

你可能感兴趣的:(mysql 学习二 基本语法)