指定查询字段
属性起别名:
格式 属性 as 别名;
属性 别名;
表起别名同理
dinstinct关键字 跟在select后 去重复数据
select [distinct] {* | column_name [as 别名] [,.... ] }
from table_name [as 别名]
查询语法格式
SELECT
{ * | table.* | [ table.field1 [ as alias1] [,table.field2 [as alias2]][,…]] }
FROM table_name [ as table_ alias ]
[left|out|inner join table_name2] #联合查询
[ WHERE … ] #指定结果需满足的条件
[ GROUP BY …] #指定结果按照哪几个字段来分组
[HAVING …] #过滤分组的记录必须满足的次要条件
[ ORDER BY… ] #指定查询记录按一个或者多个条件排序
[ LIMIT { [ offset,] row_count | row_count OFFSET offset }] ; #指定查询的记录从哪条至哪条
where条件语句
逻辑操作符 一般常用英文格式
比较操作符
模糊匹配
between and 范围查询 等同于>=和<=一起使用
like 一般与通配符一起使用
通配符: ‘’_’'代表一个字符 “%” 代表0个或多个字符
in也可以用作子查询
select * from student where stu_id in(select stu_id from result);
连接查询
又称多表查询,当查询的字段来自于多个表,就可以通过连接查询实现
连接查询使用关键词join进行表的加入
分类:
- 内连接 : 两个表符合关联条件的数据(都有的数据)才进行展示
等值连接,非等值连接,自连接
格式:
方式一:
select a.* ,b.* from a [inner] join b on a.id=b.id;
方式二:
select a.* ,b.* from a,b where a.id=b.id; //产生笛卡尔积然后过滤 产生数据量大,不推荐
- 外连接 : 主表的数据全部展示, 附表只展示符合关联条件的数据
左外连接 : 以left join 的左边的表为主表,关联右表的数据
右外连接 : 以right join 的右边的表为主表,关联左表的数据
全外连接 :
左外连接
union //连接并去重 unionall //连接不去重
右外连接
- 自连接 : 自己连接自己
CREATE TABLE IF NOT EXISTS category(
categoryId INT(10) AUTO_INCREMENT PRIMARY KEY,
categoryName VARCHAR(32) NOT NULL ,
pid INT(10)
);
INSERT INTO category(categoryName,pid)
VALUES('软件开发',0),('美术设计',0),('数据库基础',1)
,('PhotoShop基础',2),('色彩搭配学',2),('PHP基础',1)
,('一起学Java',1);
SELECT a.`categoryName` 父栏目,b.`categoryName` 子栏目
FROM `category` a
JOIN `category` b
ON b.`pid`=a.`categoryId`
WHERE a.`pid`=0;