简单查询
查询全部
select * from table_name;
查询指定字段
select column_name from table_name;
注意:如需查询多个字段,则字段名之间需要用英文的逗号隔开。
定义字段起别名
select column_name [as] 别名 from table_name;
去重(去掉重复查询)
select distinct column_name from table_name;
对表只需选择某些字段时,可能出现重复行。 其含义是对结果集中的重复行只选择一行,保证行的唯一性。
字段计算
select 字段公式 from table_name;
单表查询
select * from table_name where 条件表达式;
连接查询
连接是关系数据库模型的主要特点。连接查询是关系数据库中最主要的查询,主要包括内连接、外连接等。通过连接运算符可以实现多个表查询。
1.内连接
内连接(inner join)使用比较 运算符进行表间某(些)列数据的比较操作,并列出这些表中与连接条件相匹配的数据行,组合成新的记录,也就是说,在内连接查询中,只有满足条件的记录才能在结果关系中显示。
2.外连接查询
连接查询将查询多个表中相关的行,内连接时,返回查询结果集中仅是符合查询条件和连接条件的行。但有时候需要包含没有关联的行中数据,即返回查询结果集中不仅包含符合条件的行,而且还包含左表(左外连接或左连接)、右表(右外连接或连接)或两个边接表(全外连接)中的所有数据行。外连接分为左外连接和右外连接。
left join:返回包括左标中的所有记录和右表中连接字段值相等的记录。
right join:返回包括右标中的所有记录和左表中连接字段值相等的记录。
笛卡尔积:交叉连接返回左表中的所有行,左表中的每一行与右表中的每一行与右表中的所有行组合。交叉连接也叫做笛卡尔积。
3.符合条件连接查询
符合条件查询是在连接查询中过程中,通过添加过滤条件,限制查询的结果,是查询的结果更加准确。
子查询
子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从MySQL 4.1开始引入。在select字句中,先计算子查询,子查询的结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表。子查询中常用的操作符有any(some)、all、in、exists等。
1.带any、some关键字的子查询
any和some关键字是同义词,表示满足其中任一条件,它们允许创建一个表达式对子查询的返回列表进行比较,只要满足内层子查询中的任何一个比较条件,就返回一个结果作为外层查询的条件。
2.带all关键字
all关键字与any和some不同,使用all时,需要同时满足所有内层查询的条件。
3.带exists关键字的子查询
exists关键字后面的参数是一个任意的子查询,系统对子查询进行运算来判断它是否返回行,如果至少返回一行,那么exists的结果为true,此时外层的查询语句将进行查询;如果子查询没有返回任何行,那么extsis返回的结果是false,此时外层语句不进行查询。
4.带in的子查询
in关键字进行子查询时,内层查询语句仅仅返回一个数据字段,这个数据字段里的值将提供给外层查询语句进行比较操作。
5.带比较运算符的子查询
'<' '>' '<=' '>=' '=' '!='
合并查询结果
利用union关键字,可以给出多条select语句,并将它们的结果组合成单个结果集。合并时,两个表对应的列数和数据类型必须相同。各个select语句之间使用union或union all关键字分隔。union不使用关键字all,执行的时候删除重复的记录,所有返回的行都是唯一的;使用关键字all的作用是不删除重复行,也不对结果进行自动排列。
select column_name1,column_name2 from table_name1 union [all] select column_name1,column_name2 from table_name2;