网站首页 > 教程分享 正文
TOP, LIMIT, ROWNUM用于规定要返回的记录的数目。对于拥有数千条记录的大型表来说,TOP, LIMIT, ROWNUM是非常有用的。
注:Sqlserver 使用TOP ,MySQL 使用 LIMIT, Oracle使用 ROWNUM。
1、LIMIT语法(Mysql)
SELECT 字段名 FROM 表名 LIMIT 数据数(数字)
2、ROWNUM语法(Oracle)
SELECT 字段名 FROM 表名 WHERE ROWNUM <=数据数(数字)
3、TOP语法(Sqlserver)
SELECT TOP 数据数(数字)或者(百分比) 字段名 FROM 表名
准备测试用表,并构造些测试数据。
4、--建表语句,表test_account
注:下面建表语句在MySQL 中使用。Sqlserver, Oracle中需要修改。
DROP TABLE IF EXISTS `test_account`; CREATE TABLE `test_account` ( `id` int(20) auto_increment, `realname` varchar(500) NOT NULL, `username` varchar(500) NOT NULL, `age` int(10) NOT NULL, PRIMARY KEY (`id`) USING BTREE ) ENGINE = InnoDB;
5、--插入测试数据
INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (1, '管理员', 'admin', 23); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (2, '大王磊', 'dwl', 23); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (3, '徐兴昌', 'xxc', 15); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (4, '陈兴木', 'cmx', 18); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (5, '蔡晶', 'cj', 12); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (6, '许君', 'xj', 16); INSERT INTO `test_account`(`id`, `realname`, `username`, `age`) VALUES (7, '陈兴木', 'mxc', 33);
6、利用存储过程构造些测试数据
drop procedure if exists `all_test_account` CREATE PROCEDURE `all_test_account`(IN n int) BEGIN DECLARE i INT DEFAULT 1; WHILE (i <= n ) DO insert into `test_account` (realname,username,age) select realname,username,floor(rand()*100+rand()) as age from `test_account` order by rand() limit 1 set i=i+1; END WHILE; END
7、--调用存储过程
call all_test_account(1000);
8、--构造完毕,查询目前数据量,COUNT() 函数返回匹配指定条件的行数。
select count(*) from `test_account`;
9、-- 先查询 " test_account " 表中姓名为 "陈兴木" 的用户有多少
SELECT count(*) FROM test_account where realname='陈兴木';
10、-- 我们查询其中的11条
--Mysql写法 SELECT * FROM test_account where realname='陈兴木' LIMIT 11; --Oracle写法 SELECT * FROM test_account where realname='陈兴木' ROWNUM <= 11 ; --Sqlserver写法 SELECT top 11 * FROM test_account where realname='陈兴木';
11、--随机查询数据
--Mysql写法 SELECT * FROM test_account where realname='陈兴木' ORDER BY RAND() LIMIT 11 ; --Oracle写法 SELECT * FROM test_account SAMPLE(20) where realname='陈兴木' and ROWNUM <=11; --Sqlserver写法 SELECT top 11 * FROM test_account where realname='陈兴木' order by newid();
猜你喜欢
- 2024-09-09 SQL Server优化50法(sql server 优化)
- 2024-09-09 SQLServer-高级篇(sqlserver ag)
- 2024-09-09 2022-12-17:订单最多的客户。以下数据,结果输出3。请问sql语句
- 2024-09-09 springboot整合mybatis使用xml实现sql语句的查询配置
- 2024-09-09 Qt的数据库(Driver类、Query类、Model类、View类)
- 2024-09-09 VBA+ADO+SQL语句,小试牛刀。(vba的sql)
- 2024-09-09 MS SQL Server——SQL语句导入导出大全
- 2024-09-09 mysql根据条件执行sql(mysql根据条件查询)
- 2024-09-09 MyBatis3-动态SQL语句(navicat怎么写sql语句)
- 2024-09-09 SQL优化——IN和EXISTS谁的效率更高
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- css导航条 (66)
- sqlinsert (63)
- js提交表单 (60)
- param (62)
- parentelement (65)
- jquery分享 (62)
- check约束 (64)
- curl_init (68)
- sql if语句 (69)
- import (66)
- chmod文件夹 (71)
- clearinterval (71)
- pythonrange (62)
- 数组长度 (61)
- javafx (59)
- 全局消息钩子 (64)
- sort排序 (62)
- jdbc (69)
- php网页源码 (59)
- assert h (69)
- httpclientjar (60)
- postgresql conf (59)
- winform开发 (59)
- mysql数字类型 (71)
- drawimage (61)
本文暂时没有评论,来添加一个吧(●'◡'●)