show databases;:显示所有数据库
use test;:进入到test数据库中
show tables from information_schema;:显示information_schema数据库中的所有的表
select database();:查询当前在哪个数据库中(database()是mysql提供的函数)
desc student;:查询student表的表结构,如下图所示:
select version();:查询数据库版本
mysql不区分大小写。建议关键字大写,表名、字段名小写。
注释:
单行注释:#xxx 或者 -- xxx
多行注释:/*xxx*/
select语句不仅可以查询表的字段,也可以查询常量值、表达式和函数等:
select 1;
select 'john';
select 1%2;
select version();
别名可以使查询结果便于理解;如果连表查询时有字段重名,可以使用别名进行区分。
起别名时AS关键字可省略。
别名中有特殊字符(如空格)时,需用双引号包裹。
mysql中的加号只作为运算符,不能用于拼接字符串。如果操作数中有字符串,mysql会自动尝试将字符串转为数字。如果转换失败,则转成0。如果操作数中有null,则结果为null。
mysql中&&和and等价。
mysql通配符:
%:匹配任意多个字符,包括0个字符。
_:任意单个字符。如果要将下划线当作普通字符使用,需进行转义,默认使用反斜杠进行转义,也可以临时指定一个转义符,如:
select * from student where name like '$_%' ESCAPE '$';
BETWEEN关键字指定的是闭区间。
IN关键字不支持通配符。
不能使用等于号判断字段是否为null,用is null。
<=>:安全等于,可以用于判断null。不建议使用,可读性差。
order by支持单个字段、多个字段、表达式、函数和别名。
mysql中字符串索引从1开始。
sum()、avg()、max()、min():忽略为null的值
count(字段名):忽略null值
count(*):如果一行中所有字段都为null,则忽略。
count(1):在表中插入一列,每一行的这一列的值都设为1,然后统计这一列的不为null的数量,其实就等价于查询表的行数。
在MYISAM引擎中,count(*)效率最高,因为引擎中存储了表的行数。
在INNODB引擎中,count(*)和count(1)的效率差不多,比count(字段)高。
where:在分组前筛选
having:在分组后筛选
1.内连接:
等值连接
非等值连接
自连接
2. 外连接:
左外连接
右外连接
全外连接
3. 交叉连接
等值连接:
select *
from student , teacher
where student.teacher_id = teacher.id;
先将student表的每一行与teacher表的每一行匹配,然后根据where条件过滤。如果student表中的行无法与teacher表的任意一行匹配,则过滤掉,所以内连接取的是两个表的交集。内连接时表的顺序可以任意。
非等值连接:where条件不是等于。
自连接:连接的两张表是同一张表。
上例中的等值连接也可以这样写:
select *
from student
inner join teacher
on student.teacher_id = teacher.id;
ta left join tb:ta是主表。
ta right join tb:tb是主表。
full outer join:全外连接。mysql貌似不支持。效果如下:
写法:
select *
from A
full outer join B
on A.xx = B.xx
cross join:交叉连接。输出笛卡尔乘积。
如果想达到如下效果:
可以这样写:
select *
from A
left join B
on A.xxx = B.xxx
where B.xxx is null;
如果想达到如下效果:
可以这样写:
select *
from A
full outer join B
on A.xx = B.xx
where A.xx is null or B.xx is null;
子查询可以出现在:
select 后面
from 后面
where或having后面
exists后面
按查询的结果集划分:
标量子查询(结果集只有一行一列)
列子查询(结果集只有一列,但有多行)
行子查询(结果集只有一行,但有多列)
表子查询(结果集有多行多列)
select 后面只支持标量子查询;
from后面只支持表子查询;
where或having后面支持标量子查询和列子查询、行子查询;
exists后面支持表子查询。