SQL笔记一:简单查询之单表查询、多表查询、别名
一、单表查询语法
单表查询-SELECT
1、查询单表所有记录,显示所有字段值
语法:SELECT * FROM 表名;
2、查询单表所有记录,显示指定字段值
语法:SELECT 字段1,字段2,...FROM 表名;
3、条件查询
语法:SELECT * FROM 表名 WHERE 条件1 OR|AND 条件2...;
4、直接查询
例子:SELECT 1; ---(常量)SELECT 1+2;----(计算器)
5、调用函数
例子:SELECT VERSION(); ---(版本)SELECT NOW();----(当前时间)
查询表达式:
语法:SELECT select_exp1,select_exp2...
每个select_exp1表示要显示的一列,至少一个表达式
多个表达式用逗号分隔
使用星号(*)可以表示所有列
使用表名.字段表示该表的指定字段,表名.*表示该表所有字段
使用AS或者空格可以为查询表达式设置别名,别名可用于GROUP BY、ORDER BY或HAVING子句
实例如下:
二、多表查询语法
多表查询
SELECT 字段1,字段2... FROM 表1,表2...
SELECT 字段1,字段2...FROM 表1,表2 WHERE 关联条件 AND|OR 过滤条件...
先了解下笛卡尔积概念和原理:设A,B为集合,用A中元素为第一元素,B中元素为第二元素构成有序对,所有这样的有序对组成的集合叫做A与B的笛卡尔积
示例:有两个表年级表grade和班级表class,要查出高一年级底下所有的班级信息。
分析过程:
1.查询涉及到的表:grade,class
2.查询字段信息:没有特定的即用*表示
3.关联条件:grade.id=class.grade_id
4.过滤条件:grade.name="高一年级"
所以最终得到的sql如下:
select
*
from
grade,class
where
grade.id=class.grade_id
and
grade.name="高一年级"
实例如下:
3、别名的概念与使用别名
别名,可以理解为另外的名称
通过别名,可以提高查询的可读性
MySQL的别名分为列别名和表别名
可以使用ORDER BY,GROUP BY和HAVING子句中的列别名来引用该列
列别名
场景
列的名称是表达式,查询时输出难以理解,通过别名语法给这样的列一个描述性的名称
列名太长,设置一个简单的别名
语法
SELECT [column_1 | expression] AS desc_name FROM table_name;
给列添加别名,使用AS关键字,后面再跟别名,如果别名有空格,则使用‘’进行引用,如AS ‘desc name’
表别名
可以使用别名为表添加不同的名称
table_name AS table_alias
其中AS关键字是可选的
一般在连接查询或者子查询中使用别名
使用别名
使用别名可以让查询语句简洁、可读性高
例子如下: