简单查询:
简单查询:
语法:
SELECT {*, column [AS] [alias],...}
FROM table_name;
说明:
SELECT 选择查询列表
FROM 提供数据源(表、视图或其他的数据源)
-------------------------------------------------------------------------------------------------------------------------------
范围查询
1.使用BETWEEN运算符显示某一值域范围的记录,这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。
格式:
SELECT <selectList>
FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。
2.使用IN运算符,判断列的值是否在指定的集合中。
格式:
SELECT <selectList>
FROM table_name
WHERE 列名 IN (值1,值2....);
3.使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%:通配符:可表示零或多个字符。
_:通配符:可表示一个字符。
通配符:用来实现匹配部分值得特殊字符。
关键字:LIKE
-------------------------------------------------------------------------------------------------------------------------------
分页查询:
分页设计:
假分页(逻辑分页): 把数据全部查询出来,存在于内存中,翻页的时候,直接从内存中去截取.
真分页(物理分页): 每次翻页都去数据库中去查询数据.
假分页: 翻页比较快,但是第一次查询很慢,若数据过大,可能导致内存溢出.
真分页: 翻页比较慢,若数据过大,不会导致内存溢出.
规定:每页显示3条数据. pageSize = 3 ,currentPage = 1
第一页: SELECT * FROM `product` LIMIT 0, 3
第二页: SELECT * FROM `product` LIMIT 3, 3
第三页: SELECT * FROM `product` LIMIT 6, 3
第 N页: SELECT * FROM `product` LIMIT (N-1)*3, 3
分页查询的SQL:
SELECT * FROM table_name LIMIT ?,?;
SELECT * FROM table_name LIMIT beginIndex,pageSize;
beginIndex = (currentPage-1) * pageSize;
第一个?: 表示本页,开始索引(从0开始).
第二个?: 每页显示的条数
-------------------------------------------------------------------------------------------------------------------------------
内连接查询
内连接查询:是相对于外连接。(两张表中只有满足等值条件的数据才会被查询出来)
内连接分为:隐式内连接、显示内连接,其查询效果相同,仅仅只是语法不同而已。
隐式内连接语法:
SELECT <selectList>
FROM A ,B WHERE A.列 = B.列
显示内连接语法:
SELECT <selectList>
FROM A [INNER] JOIN B ON A.列 = B.列
在做等值连接的时候,若A表中和B表中的列名相同. 则可以简写:
SELECT <selectList>
FROM A [INNER] JOIN B USING(同名的列)
前提:在emp和dept表中都有deptno列. 并且是外键关系。
如: SELECT * FROM emp JOIN dept USING (deptno)
使用表名前缀在多个表中区分相同的列。
在不同表中具有相同列名的列可以用表的别名加以区分。
使用别名可以简化查询。
使用表名前缀可以提高执行效率。
如果使用了表的别名,则不能再使用表的真名
-------------------------------------------------------------------------------------------------------------------------------
自连接查询:
把一张表看成两张来做查询.
需求: 查询每个商品分类的名称和父分类名称:
隐式内连接:
SELECT sub.dirName,super.dirName
FROM productdir super,productdir sub
WHERE sub.parent_id = super.id
显示内连接:
SELECT sub.dirName,super.dirName
FROM productdir super JOIN productdir sub
ON sub.parent_id = super.id
外连接查询
外连接:解决内连接的数据丢失问题;
外连接分为:左连接,右连接,全连接;
左外连接:
SELECT table1.column, table2.column
FROM table1 LEFT [OUTER] JOIN table2 ON (table1.column_name = table2.column_name);
在LEFT OUTER JOIN中,会返回所有左边表中的行,即使在右边的表中没有可对应的列值。即对连接中左边的表中的记录不加限制
右外连接:
SELECT table1.column, table2.column
FROM table1 RIGHT [OUTER] JOIN table2 ON (table1.column_name = table2.column_name);
RIGHT OUTER JOIN中会返回所有右边表中的行,即使在左边的表中没有可对应的列值。即对连接中右边的表中的记录不加限制