JAVA EE-MYSQL

JAVA EE-MYSQL

知識是人生旅途中的資糧。 —— 雨果

數據倉庫.就與我們之前學過的純文本,properties這些技術一樣.用來保存數據.並提供對數據進行增刪改查的操作.我們以後做項目時,項目中的數據都是保存在數據庫中的.

數據庫的優點?

            1>實現數據共享
            2>減少數據的冗餘度
            3>數據實現集中控制
            4>數據一致性,完整性和可維護性,以確保數據的安全性和可靠性
            5>故障恢復

常見的數據庫?

常用數據庫
    1>MySQL
            MySQL是最受歡迎的開源SQL數據庫管理系統,它由 MySQL AB開發、發佈和支持。MySQL AB是一家基於MySQL開發人員的商業公司.MySQL是一個關係數據庫管理系統。MySQL是開源的。已經被Oracle收購。
  2>SQL Server
        SQL Server是由微軟開發的數據庫管理系統,它只能在Windows上運行.
  3.Oracle
        提起數據庫,第一個想到的公司,一般都會是Oracle(甲骨文)。該公司成立於1977年,最初是一家專門開發數據庫的公司。Oracle在數據庫領域一直處於領先地位。 Oracle數據庫成爲世界上使用最廣泛的關係數據系統之一。
  4.Sybase(退隱) 配套的數據庫設計軟件。 power designer 數據庫設計軟件。建模工具。
        1984年,Mark B. Hiffman和Robert Epstern創建了Sybase公司,並在1987年推出了Sybase數據庫產品。
  5.DB2 IBM開發的。也是收費數據庫。

SQL

  • DDL 數據庫定義語言 Data Definition Language || create alter drop
  • DCL 數據庫控制語言 Data Control Language || grant rollback commit.
  • DML 數據庫操縱語言 Data Manipulation Language || insert update delete select
  • DQL 數據庫查詢語言 Data Query Language || select

SQL中的註釋

單行 :  --   
多行 :  /* */

sql不區分大小寫嗎?
語句不區分大小寫.
數據區分大小寫.

mysql中sql的結束使用”;”號表示.

退出的命令 => exit
//——————————————————————————————
連接數據庫服務的命令

mysql -u root -p

根據提示輸入密碼 ,即可建立連接.

//—————————————————————————————-

數據庫定義語言(庫的操作) DDL

1.創建一個庫
create database 庫名稱 [character set 碼錶名稱 collate 字符校對集名稱]

create database day15;

        1>看到Query OK, 1 row affected (0.00 sec) 表示執行成功.

        2>sql語句語法: 結尾應使用";"號.

        3>字符校對集: 決定數據排序的。 

2.顯示mysql中都有哪些庫了.
show databases;
+——————–+
| Database |
+——————–+
| information_schema |
| day13 |
| mysql |
| performance_schema |
| test |
+——————–+

可以看到除了自己創建的庫之外,還有一些其他庫。其他庫(除了test)不要亂動。因爲是保存mysql的配置信息,賬戶信息等等。
test庫 : 自動創建用於測試的。

3.刪除一個數據
drop database 數據庫名稱;

drop database day15;

4.修改數據庫碼錶和字符校對(不常用)
alter database 數據庫名稱 character set 數據庫碼錶 [collate 校對集名稱];

alter database day15 character set utf8 collate utf8_bin;

5.當前要使用的庫(重要)
use 庫名

use day15;

出現Database changed,說明切換完成.

6.查看當前選擇的數據庫
select database();
+————+
| database() |
+————+
| day15 |
+————+

7.顯示創建庫的語句.
show create database 數據庫名稱;
show create database day15;

| day15    | CREATE DATABASE `day15` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE

utf8_bin */ |

//——————————————————————————————————————–

創建庫
create database` 庫名 [character set 碼錶  collate 字符校對集
顯示所有庫   show databases;
刪除庫     drop database 庫名;
修改數據庫碼錶 alter database 庫名 character set 碼錶  collate 字符校對集
使用數據庫   use 庫名
查看當前使用的庫 select database();
顯示創建庫語句 show create database 庫名;

數據庫中
的數據類型 (瞭解,知道在什麼情況下應該使用什麼類型的數據)

一。數字型
整型
TINYINT 1字節 byte
SMALLINT 2字節 short
MEDIUMINT 3字節
(常用)INT 4字節 int
BIGINT 8字節 long
浮點型
FLOAT 單精度4字節 float
**DOUBLE 8字節 double
*DECIMAL 沒有精度損失
============================================
DOUBLE 和 DECIMAL 區別?
DOUBLE類型在運算時會有精度的缺失。
DECIMAL 就是解決精度缺失問題的。(底層使用字符串來保存數字)

    單純想表示小數屬性時,使用double。
    需要頻繁參與運算的小數,使用decimal。
============================================

二。字符串類型
注意: 字符串類型要使用單引號包裹.
短字符串類型
CHAR/VARCHAR (最大長度255字節)
====================================================
問題:char和varchar有什麼區別?
char定長字符串.varchar表示變長字符串.
同時指定長度爲10。當存儲 abc
char =》 ‘abc ’
varchar => ‘abc’
結論: 開發中varchar用的最多。 char只在表示固定長度的枚舉中使用。例如 :性別(用01,02表示)
====================================================
長字符串類型(流類型)
*TEXT/CLOB 保存文本(字符流) –> 當要保存的內容超過255字節時使用. java中的writer 字符
BLOB 保存字節(字節流) –> 開發中用不到 java中的stream 字節

    Character Large Object 
    binary Large Object

    區別:
        text:只能存儲字符數據.
        BLOB:可以存儲字符和多媒體信息(圖片 聲音 圖像)

//——————————————————————————————————————
三。日期和時間類型
date 只記錄日期 2015-01-14
time 只記錄時間 11:36:25
year 只記錄年 2015
datatime 又記錄日期 又記錄 時間 2015-01-14 11:36:25
**timestamp 同上 2015-01-14 11:36:25

問題: datatime 和 timestamp 區別?
    這兩種類型記錄的數據是一模一樣.
    區別在於插入的時候,如果插入datatime類型時,沒有 傳值,那麼該類型默認值就是null;
                       如果插入timestamp類型時,沒有 傳值,那麼該類型默認值就是當前時間;

//——————————————————

//————————————————————————–;—————————————-
與創建表相關的語句(DDL) (記住,能夠手寫)
CREATE TABLE table_name
(
field1 datatype 約束/主鍵約束 auto_increment,
field2 datatype 約束,
field3 datatype 約束
)[character set 字符集 collate 校對規則]

1.創建表
    create table t_user(
        id int,
        name varchar(20),
        sal double(4,3),
        birthday datetime,
        hiredate timestamp
    );

    varchar最好指定長度
    整型一般不指定.

2.查看當前庫中有哪些表
        show tables;

3.查看錶的結構
        desc 表名;     description
        desc t_user;
4.刪除表
        drop table 表名;
        drop table t_user;
5.添加一列
        alter table 表名 add 列名 類型;
        alter table t_user add photo blob;
6.修改列的類型

        alter table 表名 modify 列名 類型;

        alter table t_user modify photo varchar(20);

7.修改列的名稱

        alter table 表名 change  舊列名  新列名 數據類型;

        將 photo這一列 改名爲 image
        alter table t_user change photo image varchar(20);

    8.刪除某列

        alter table 表名 drop 列名;

        alter table t_user drop image;

    9.修改表的名稱

        rename table 舊錶名 to 新名;

        rename table t_user to user;

    10(用的極少)修改表的字符集. (如果創建表時不指定,默認使用數據庫的字符集)

        alter table 表名 character set 字符集 collate 校對集;

        alter table t_user character set utf8 collate utf8_bin;

//————————————————————————————————-
//————————————————————————-
列的約束 (掌握)
保證數據的完整性的.

1.非空約束(not null)  指定非空約束的列, 在插入記錄時 必須包含值.
2.唯一約束(unique)  該列的內容在表中. 值是唯一的.
3.主鍵約束(primary key)  當想要把某一列的值,作爲該列的唯一標示符時,可以指定主鍵約束(包含 非空約束和唯一約束). 一個表中只能指定一個主鍵約束列.
                主鍵約束 , 可以理解爲 非空+唯一. 
            注意: 並且一張表中只能有一個主鍵約束.

約束體現數據庫的完整性.

例如:創建帶有約束的表

    create table t_user2(
        id int primary key auto_increament,                 -- 員工編號
        name varchar(10) not null,      -- 員工姓名
        loginname varchar(10) not null unique,  -- 登陸名稱
        password varchar(20) not null,  -- 密碼
        age int(3) not null,                -- 年齡
        birthday datetime not null,     -- 生日
        hiredate timestamp not null     -- 入職日期
    );

//—————————————————————————————————————————-
主鍵自動增長 (掌握)

注意:
    1.前提某個表的主鍵是數字. 我們可以將該主鍵設置爲自增. 
    2.使用主鍵自增可能會造成主鍵的斷層。
    3.mysql,sqlserver,sqllite這三個數據庫具有該功能.
    4.主鍵自增只能給主鍵約束的列加。
自增就是 每次插入記錄時不需要指定值. 該字段自己維護自己的值.

維護方式就是每次加1;

語法:

create table t_user(
            id  int primary key auto_increment,
            password varchar(30) not null,
            age     int not null,
            birthday datetime not null,
            hiredate timestamp not null,
            number int unique
        );

//——————————–創建修改表練習—————————————————

CREATE TABLE employee (
   id INT(10),
   NAME VARCHAR(10),
   gender VARCHAR(10),
   birthday DATETIME,
   entry_date TIMESTAMP,
   job VARCHAR(5),
   salary DOUBLE(5,3),
   RESUME TEXT
);


1在上面員工
表的基礎上增加一個image列。

    alter table employee add image varchar(20);

2修改job列,使其長度爲60。
    alter table employee modify job varchar(60);


3刪除gender列。
    alter table employee drop gender;


4表名改爲user。
    rename table employee to user;


5修改表的字符集爲utf8
6列名name修改爲username
    alter table employee change name username varchar(20);



//--------------

——————–對錶中數據的增刪改(DML)——————————————————————-

create table t_user(
        id int primary key auto_increment,
        name varchar(20) not null,
        email varchar(20) unique
    )
//-

爲表添加記錄 (必須掌握)

insert into 表名[(列名1,列名2...)] values (值1,值2...);
1.插入一條數據

    1>指定要插入那些列
        insert into  t_user(name,email) values('tom','[email protected]');

        ****注意: 數據類型爲字符串類型的.需要使用單引號包裹.
    2>不指定插入哪些列, 需要指定每一列的值
        insert into  t_user values(null,'jerry','[email protected]');

        insert into  t_user(name,email) values('湯姆','[email protected]');
========

==================================================================================================

SHOW VARIABLES LIKE '%character%';    ==> 查看字符編碼配置
| character_set_client     | gbk   客戶端的編碼 ***
           |
| character_set_results    | gbk    結果集的編碼 ***
           |
| character_set_connection | utf8   客戶端連接的編碼
           |
| character_set_database   | utf8   數據庫默認使用的編碼
           |
| character_set_filesystem | BINARY  文件系統存放時使用的編碼
           |
| character_set_server     | utf8    服務器編碼 安裝時指定的
           |
| character_set_system     | utf8    內部系統編碼

結論: 如果

使用cmd 命令控制檯操作 數據庫,
注意character_set_client 和 character_set_results 需要設置成GBK, 因爲我們的命令控制航使用gbk碼錶顯示中文.
使用如下命令設置:
方式:
set character_set_client=gbk
set character_set_results=gbk
注意:
每次重新連接數據庫都要重新設置.
如果使用的cmd窗口操作數據庫. 就修改如下的碼錶爲gbk(cmd窗口使用的是gbk碼錶).
這種做法影響的範圍只在你當前鏈接中.
//————————————————————————————
修改一條記錄 (必須掌握)

update 表名 set 列名1 = 值 , 列名2 = 值 ....[where 條件1,條件2...]

/—————————————–

create table t_user(
        id int primary key auto_increment,
        name varchar(20) not null,
        email varchar(20) unique
    )
//-

1.修改表中id爲3 的記錄, 將name修改爲rose;

update t_user set name='rose' where id=3;
update t_user set name='rose';

//—————————————————————————————————
CREATE TABLE employee (
id INT,
NAME VARCHAR(20),
gender VARCHAR(20),
birthday DATE,
entry_date DATE,
job VARCHAR(30),
salary DOUBLE,
RESUME LONGTEXT
);

INS INTO employee VALUES(1,'zs','male','1980-12-12','2000-12-12','coder',4000,NULL);
INSERT INTO employee VALUES(2,'ls','male','1983-10-01','2010-12-12','master',7000,NULL);
INSERT INTO employee VALUES(3,'ww','female','1985-03-08','2008-08-08','teacher',2000,NULL);
INSERT INTO employee VALUES(4,'wu','male','1986-05-13','2012-12-22','hr',3000,NULL);    

– 要求
– 將所有員工薪水修改爲5000元。

– 將姓名爲’zs’的員工薪水修改爲3000元。

– 將姓名爲’ls’的員工薪水修改爲4000元,job改爲ccc。

– 將wu的薪水在原有基礎上增加1000元。

//————刪除表記錄相關————————————————————————————————————-
刪除記錄語句 (必須掌握)

DELETE FROM 表名 [WHERE 條件];

1. 刪除表中名稱爲’rose’的記錄。

    DELETE FROM employee WHERE NAME='rose';


2. 刪除表中所有記錄。

    DELETE FROM employee ;

3.使用truncate刪除表中記錄。

    TRUNCATE TABLE employee;

DELETE 刪除 和 TRUNCATE刪除(瞭解) 兩者有什麼區別?
首先,這兩種都是刪除表中的記錄.

    不同的是:
        1. delete 是逐行標記刪除. TRUNCATE 是將整張表包括表結構都移除,然後將表重新創建.
        2. delete DML語句。 TRUNCATE DDL語句。
        3。delete 刪除的記錄可以被恢復,TRUNCATE 不能回覆。
        4. delete 不釋放空間,TRUNCATE 釋放空間.
        5.  TRUNCATE  會提交事務. (還沒學)

//————————-以上就是 增加 修改 刪除 表記錄 相關語句 ,(DML)———————————————————–

//———————————————————————————————————————————-
DQL語句(DML) 查詢語句. (必須掌握)

語法:
SELECT selection_list /要查詢的列名稱/
FROM table_list /要查詢的表名稱/
WHERE condition /行條件/
GROUP BY grouping_columns /對結果分組/
HAVING condition /分組後的行條件/
ORDER BY sorting_columns /對結果排序/
LIMIT offset_start, row_count /結果限定/
//—————————————————————————————

    sid CHAR(6),     -- 學生編號
    sname       VARCHAR(50), -- 學生姓名
    age     INT,    -- 年齡
    gender  VARCHAR(50) -- 性別
);
INSERT INTO stu VALUES('S_1001', 'liuYi', 35, 'male');
INSERT INTO stu VALUES('S_1002', 'chenEr', 15, 'female');
INSERT INTO stu VALUES('S_1003', 'zhangSan', 95, 'male');
INSERT INTO stu VALUES('S_1004', 'liSi', 65, 'female');
INSERT INTO stu VALUES('S_1005', 'wangWu', 55, 'male');
INSERT INTO stu VALUES('S_1006', 'zhaoLiu', 75, 'female');
INSERT INTO stu VALUES('S_1007', 'sunQi', 25, 'male');
INSERT INTO stu VALUES('S_1008', 'zhouBa', 45, 'female');
INSERT INTO stu VALUES('S_1009', 'wuJiu', 85, 'male');
INSERT INTO stu VALUES('S_1010', 'zhengShi', 5, 'female');
INSERT INTO stu VALUES('S_1011', 'xxx', NULL, NULL);
//-------

CREATE TABLE emp(   -- 員工表
    empno       INT,    -- 員工編號
    ename       VARCHAR(50), -- 員工姓名
    job     VARCHAR(50),    -- 工作
    mgr     INT,            -- 員工上司的編號
    hiredate    DATE,       -- 入職日期
    sal     DECIMAL(7,2),   -- 工資
    comm        DECIMAL(7,2), -- 獎金
    deptno      INT     -- 部門編號
);
INSERT INTO emp VALUES(7369,'SMITH','CLERK',7902,'1980-12-17',800,NULL,20);
INSERT INTO emp VALUES(7499,'ALLEN','SALESMAN',7698,'1981-02-20',1600,300,30);
INSERT INTO emp VALUES(7521,'WARD','SALESMAN',7698,'1981-02-22',1250,500,30);
INSERT INTO emp VALUES(7566,'JONES','MANAGER',7839,'1981-04-02',2975,NULL,20);
INSERT INTO emp VALUES(7654,'MARTIN','SALESMAN',7698,'1981-09-28',1250,1400,30);
INSERT INTO emp VALUES(7698,'BLAKE','MANAGER',7839,'1981-05-01',2850,NULL,30);
INSERT INTO emp VALUES(7782,'CLARK','MANAGER',7839,'1981-06-09',2450,NULL,10);
INSERT INTO emp VALUES(7788,'SCOTT','ANALYST',7566,'1987-04-19',3000,NULL,20);
INSERT INTO emp VALUES(7839,'KING','PRESIDENT',NULL,'1981-11-17',5000,NULL,10);
INSERT INTO emp VALUES(7844,'TURNER','SALESMAN',7698,'1981-09-08',1500,0,30);
INSERT INTO emp VALUES(7876,'ADAMS','CLERK',7788,'1987-05-23',1100,NULL,20);
INSERT INTO emp VALUES(7900,'JAMES','CLERK',7698,'1981-12-03',950,NULL,30);
INSERT INTO emp VALUES(7902,'FORD','ANALYST',7566,'1981-12-03',3000,NULL,20);
INSERT INTO emp VALUES(7934,'MILLER','CLERK',7782,'1982-01-23',1300,NULL,10);

1.1 查詢所有行所有

    select * from stu;
*號 是通配符.通配所有列. 上面語句與下面是一模一樣的
    select  sid,sname,age,gender from stu;
誰的效率更高? 
    下面的效率更高. *需要運算.

1.2 查詢所有行指定列
select sname from stu;

2.1 條件查詢介紹
條件查詢就是在查詢時給出WHERE子句,在WHERE子句中可以使用如下運算符及關鍵字:
? =、!=、<>、<、<=、>、>=;
? BETWEEN…AND;
? IN(SET)/NOT IN(SET)
? IS NULL/IS NOT NULL
//—條件連接符
? AND; &&
? OR; ||
? NOT; !
2.2 查詢性別爲女,並且年齡小於50的記錄

select * from stu where gender='female'  and age<50;

2.3 查詢學號爲S_1001,或者姓名爲liSi的記錄

select * from stu where sid='S_1001' or sname='liSi';

數據庫中,sql語句不區分大小寫 ,但是 數據區分大小寫.

2.4 查詢學號爲S_1001,S_1002,S_1003的記錄

select * from stu where sid='S_1001' or  sid='S_1002' or  sid='S_1003';

select * from stu where sid in('S_1001','S_1002','S_1003');

2.5 查詢學號不是S_1001,S_1002,S_1003的記錄

select * from stu where not (sid='S_1001' or  sid='S_1002' or  sid='S_1003');

select * from stu where sid not in('S_1001','S_1002','S_1003');

2.6 查詢年齡爲null的記錄

select * from stu where age=null;

null的特性: null不等於null 所以判斷時應如下寫法:

select * from stu where age is null;

2.7 查詢年齡在20到40之間的學生記錄
select * from stu where age >= 20 and age <= 40;

select * from stu where age between 20 and 40;

2.8查詢性別非男的學生記錄

select * from stu where gender!= 'male';

select * from stu where not gender='male';

select * from stu where gender not in ('male');

2.9 查詢姓名不爲null的學生記錄

select * from stu where  sname is not null;

select * from stu where not  sname is  null;

//————————————————————————————————–
where 字段 like ‘表達式’;
% => 通配 通配任意個字符.
_ => 通配 通配單個字符.
說明: LIKE 條件後 根模糊查詢表達式, “_”==> 代表一個任意字符

3.1查詢姓名由5個字母構成的學生記錄

select * from stu where sname like '_____';

3.2查詢姓名由5個字母構成,並且第5個字母爲“i”的學生記錄

select * from stu where sname like '____i';

3.3 查詢姓名以“z”開頭的學生記錄
說明: “%”該通配符匹配任意長度的字符.

select * from stu where sname like 'z%';

3.4查詢姓名中第2個字母爲“i”的學生記錄

select * from stu where sname like '_i%';

3.5 查詢姓名中包含“a”字母的學生記錄

select * from stu where sname like '%a%';

//—————————————————————–
4.1 去除重複記錄
關鍵詞: distinct => 去除重複查詢結果記錄.
select gender from stu; ==> 出現大量重複的記錄

 select distinct gender from stu; =>去除重複的記錄

4.2查看僱員的月薪與佣金之和

    select sal*12+comm from emp; 

    null與任何數字計算結果都是null.上面的寫法是錯誤的.
    使用IFNULL(參數1,參數2) 函數解決. 判斷參數1的值是否爲null,如果爲null返回參數2的值.

    select sal*12 + IFNULL(comm,0) from emp;

    *這個函數在所有數據庫通用嗎?
        不通用.

4.3 給列名添加別名

select sal*12 + IFNULL(comm,0) as '年收入' from emp;

** select sal*12 + IFNULL(comm,0)  '年收入' from emp;

select sal*12 + IFNULL(comm,0)  年收入 from emp;

//——————————————————————————————————————————

5.1 查詢所有學生記錄,按年齡升序排序
asc: 升序
desc:降序

select * from stu order by age asc;

默認就是升序

select * from stu order by age;

5.2 查詢所有學生記錄,按年齡降序排序

select * from stu order by age desc;

5.3 查詢所有僱員,按月薪降序排序,如果月薪相同時,按編號升序排序

select * from emp order by sal desc , empno asc;

聚合函數
聚合函數是用來做縱向運算的函數:
? COUNT():統計指定列不爲NULL的記錄行數;
? MAX():計算指定列的最大值,如果指定列是字符串類型,那麼使用字符串排序運算;
? MIN():計算指定列的最小值,如果指定列是字符串類型,那麼使用字符串排序運算;
? SUM():計算指定列的數值和,如果指定列類型不是數值類型,那麼計算結果爲0;
? AVG():計算指定列的平均值,如果指定列類型不是數值類型,那麼計算結果爲0;

6.1 COUNT
當需要縱向統計時可以使用COUNT()。
? 1>查詢emp表中記錄數:

    select count(*) from emp;

2>查詢emp表中有佣金的人數:

    select count(*) from emp where comm is not null and comm >0;



3>查詢emp表中月薪大於2500的人數:

    select count(*) from emp where sal > 2500;

4>統計月薪與佣金之和大於2500元的人數:

    select count(*) from emp where sal+IFNULL(comm,0) > 2500;

5>查詢有佣金的人數並且有領導的人數:

    select count(*) from emp where comm > 0 and  mgr is not null;

6.2 SUM(計算總和)和AVG(計算平均值)
當需要縱向求和時使用sum()函數。
1>查詢所有僱員月薪和:
select sum(sal) from emp;

2>查詢所有僱員月薪和,以及所有僱員佣金和:
        select sum(sal),sum(comm) from emp;

3>查詢所有僱員月薪+佣金和:
        select sum(sal+IFNULL(comm,0)) from emp;

4>統計所有員工平均工資:

        select avg(sal) from emp;

6.3 MAX和MIN
? 查詢最高工資和最低工資:
select max(sal),min(sal) from emp;

//—————————————————————————————————————————————

分組查詢

當需要分組查詢時需要使用GROUP BY子句,例如查詢每個部門的工資和,這說明要使用部分來分組。

? 1>查詢每個部門的部門編號和每個部門的工資和:

    select deptno,sum(sal) from emp group by deptno;


2>查詢每個部門的部門編號以及每個部門的人數:

    select deptno,count(ename) from emp group by deptno;


3>查詢每個部門的部門編號以及每個部門工資大於1500的人數:

    select deptno,count(ename) from emp where sal>1500 group by deptno ;

HAVING子句
4>查詢工資總和大於9000的部門編號以及工資和:

    select deptno,sum(sal) from emp group by deptno having sum(sal)>9000;

使用having在分組之後加條件.

where和having都可以加條件?

    1.where在分組之前加條件.
    2.having在分組之後加條件.

    where的效率要遠遠高於having. 分組本身消耗資源非常大.

//———————————————–以上是查詢———————————————————————————

//———————————————-以下是分頁相關知識—————————————————————————————
LIMIT(MySQL方言) (必須掌握)
LIMIT用來限定查詢結果的起始行,以及總行數。

1>查詢5行記錄,起始行從0開始

select * from emp limit 0,5;

2> 查詢10行記錄,起始行從3開始

select * from emp limit 3,10;

3>如果一頁記錄爲5條,希望查看第3頁記錄應該怎麼查呢?
? 第一頁記錄起始行爲0,一共查詢5行;
select * from emp limit 0,5;
? 第二頁記錄起始行爲5,一共查詢5行;
select * from emp limit 5,5;
? 第三頁記錄起始行爲10,一共查詢5行;
select * from emp limit 10,5;

//—————————————————————————————————————————————-

發佈了36 篇原創文章 · 獲贊 2 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章