Sql 語句

數據庫概述:

數據庫(DataBase,DB):指長期保存在計算機的存儲設備上,按照一定規則組織起來,可以被各種用戶或應用共享的數據集合。(文件系統)

數據庫管理系統(DataBase Management System,DBMS):指一種操作和管理數據庫的大型軟件,用于建立、使用和維護數據庫,對數據庫進行統一管理和控制,以保證數據庫的安全性和完整性。用戶通過數據庫管理系統訪問數據庫中的數據。

數據庫軟件應該為數據庫管理系統,數據庫是通過數據庫管理系統創建和操作的。

數據庫:存儲、維護和管理數據的集合。

MySql和SQLite區別

SQLite是單機數據庫。功能簡約,小型化,追求最大磁盤效率
MySql是完善的服務器數據庫。功能全面,綜合化,追求最大并發效率
MySql、Sybase、Oracle等這些都是試用于服務器數據量大功能多需要安裝,例如網站訪問量比較大的。而SQLite是一款小型數據庫,簡單移植性好無需安裝只需要幾個文件。一般手機,終端等用的比較多~

如一句話,如果只是單機上用的,數據量不是很大,程序上對數據的處理也不太復雜的話,就用SQLite比較合適,它輕量級,單文件,可加密,方便小型程序的使用,其他情況建議使用MySql

使用MySql
  • 登錄Mysql:
    mysql -u 用戶名 -p 回車 , 在提示輸入密碼時再輸入密碼

  • 卸載
    1.停止mysql服務 net stop mysql 啟動mysql服務 net start mysql
    2.卸載mysql
    3.找到mysql 安裝目錄下的 my.ini datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"

  • 修改密碼
    運行cmd
    安裝成功了打開cmd --> mysql -u 用戶名-p 你的密碼
    修改mysql 用戶密碼:

  • 停止mysql服務 運行輸入services.msc 停止mysql服務,或者 cmd --> net stop mysql

  • 在cmd下 輸入 mysqld --skip-grant-tables 啟動服務器 光標不動 (不要關閉該窗口)

  • 新打開cmd 輸入mysql -u 用戶名-p 不需要密碼
    use mysql;
    update user set password=password('abc') WHERE User='root';

  • 關閉兩個cmd窗口 在任務管理器結束mysqld 進程

  • 在服務管理頁面 重啟mysql 服務 ,密碼修改完成

  • 也可以使用 SQLyog操作數據庫,SQLyog 是一個易于使用的、快速而簡潔的圖形化管理MYSQL數據庫的工具,它能夠在任何地點有效地管理你的數據庫

往MySQL里導入數據的時候遇到一個報錯:Error : Incorrect string value: '\xE5\x8C\x97\xE4\xBA\xAC' for column 'Name' at row 1
原因:默認字符集問題
以下為錯誤的創建語句:

CREATE TABLE `City` (
  `CityID` int(11) NOT NULL,
  `ProvinceID` int(11) DEFAULT NULL,
  `Name` varchar(50) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`CityID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

而以前都用的gbk_chinese_ci,
解決方法:把默認字符集修改過來,修改為字段的字符集為gbk即可ALTER TABLE City CONVERT TO CHARACTER SET gbk;
也可以在創建表的時候設置默認字符集:

CREATE TABLE `City ` (
  `CityID` int(11) NOT NULL,
  `ProvinceID` int(11) DEFAULT NULL,
  `Name` varchar(50) CHARACTER SET latin1 DEFAULT NULL,
  PRIMARY KEY (`CityID`)
) ENGINE=InnoDB DEFAULT CHARSET=gbk ROW_FORMAT=COMPACT

Sql語句的分類
  • DDL(Data Definition Language):數據定義語言,用來定義數據庫對象:庫、表、列等; CREATE、 ALTER、DROP
  • DML(Data Manipulation Language):數據操作語言,用來定義數據庫記錄(數據); INSERT、 UPDATE、 DELETE
  • DCL(Data Control Language):數據控制語言,用來定義訪問權限和安全級別;
  • DQL(Data Query Language):數據查詢語言,用來查詢記錄(數據):SELECT
  • 注意:sql語句以;結尾
MySql命令alter add:增加表的字段

alter add命令用來增加表的字段。

alter add命令格式:alter table 表名 add字段 類型 其他;

例如,在表MyClass中添加了一個字段passtest,類型為int(4),默認值為0:
alter table MyClass add passtest int(4) default '0';

  1. 加索引
    alter table 表名 add index 索引名 (字段名1[,字段名2 …]);

例子: alter table employee add index emp_name (name);

  1. 加主關鍵字的索引
    alter table 表名 add primary key (字段名);

例子: alter table employee add primary key(id);

  1. 加唯一限制條件的索引
    alter table 表名 add unique 索引名 (字段名);

例子: alter table employee add unique emp_name2(cardnumber);

  1. 刪除某個索引
    alter table 表名 drop index 索引名;

例子: alter table employee drop index emp_name;

  1. 增加字段
    ALTER TABLE table_name ADD field_name field_type;

  2. 修改原字段名稱及類型
    ALTER TABLE table_name CHANGE old_field_name new_field_name field_type;
    例子,原字段birthday寫錯了,修改下字段名稱:
    ALTER TABLE users CHANGE birthady birthday VARCHAR(50);

  3. 刪除字段
    ALTER TABLE table_name DROP field_name

DDL:操作數據庫、表、列等 -----------------------------------------

使用的關鍵字:CREATE、 ALTER、 DROP

-- 操作數據庫 ---------------------------------------------------------------------

-- 創建
-- 創建一個名稱為mydb2的數據庫
CREATE DATABASE IF NOT EXISTS mydb2;
-- 創建一個名稱為mydb2的數據庫,并設置其字符集為gbk
CREATE DATABASE IF NOT EXISTS mydb2 CHARACTER SET gbk;
-- 查詢
-- 查看當前數據庫服務器中所有的數據庫
SHOW DATABASES;
-- 查看前面創建的mydb2數據庫定義的信息
SHOW CREATE DATABASE mydb2;

-- 修改
-- 查看服務器中的數據庫,并把mydb2的字符集修改為utf8
ALTER DATABASE mydb2 CHARACTER SET utf8;

-- 刪除
-- 刪除前面創建的mydb2數據庫
DROP DATABASE mydb2;

-- 其他
-- 查看當前使用的數據庫
SELECT DATABASE();
-- 切換使用名稱為mydb2的數據庫
USE mydb2;

-- 操作數據表 ---------------------------------------------------------------------
-- 創建表
-- 語法:

    字段1 字段類型,
    字段2 字段類型,
    ....
);```
-- 注意:創建表之前,要切換到對應的數據中


-- 查看當前數據庫中所有的表
```SHOW TABLES;```
-- 查看某個表中所有字段的信息
```DESC 表名稱;```
-- 在表名為emp的員工表的基礎上增加一個image列(即image字段)
```ALTER TABLE emp ADD image BLOB; ```
-- 修改job列, 使其長度為60
```ALTER TABLE emp MODIFY job VARCHAR(60);```
-- 刪除image列,一次只刪一列
```ALTER TABLE emp DROP image;```
-- 修改emp表名稱為user1
```RENAME TABLE emp TO user1;```
-- 修改表的字符集gbk
```ALTER TABLE user1 CHARACTER SET utf8;```
-- 修改列名ename為username
```ALTER TABLE user1 CHANGE ename username VARCHAR(100);```

-- 刪除表
```DROP TABLE user1;```

######  DML數據操作語言,用來定義數據庫記錄 -----------------------------------------
> DML 是對表中的數據進行增、刪、改的操作
 使用的關鍵字:INSERT、UPDATE、DELETE
 注意:在MySql中,字符串類型和日期類型的數據都要使用單引號括起來,空值為NULL

-- 插入操作 INSERT: ------------------
-- 語法:``` INSERT INTO 表名(列名1,列名2 ...)VALUES(列值1,列值2...);```
-- 注意:
-- 1.列名與列值的類型、個數、順序要一一對應。
-- 2.可以把列名當做java中的形參,把列值當做實參。值不要超出列定義的長度。
-- 3.如果插入空值,請使用null
-- 4.插入的日期和字符一樣,都使用引號括起來。

-- 給emp中插入一行數據
```INSERT INTO emp(id,NAME,gender,birthday,salary,entry_date,RESUME)
VALUES(1,'zhangsan','female','1990-5-10',10000,'2015-5-5-','good girl');```
-- 批量插入
```INSERT INTO emp VALUES
(4,'zs','m','2015-09-01',10000,'2015-09-01',NULL),
(5,'li','m','2015-09-01',10000,'2015-09-01',NULL),
(6,'ww','m','2015-09-01',10000,'2015-09-01',NULL);```

-- 修改操作 UPDATE ----------
-- 語法:```UPDATE 表名 SET 列名 1=列值 2... WHERE 列名=值```
-- 將所有的員工薪水修改為5000元
```UPDATE emp SET sal=5000;```
-- 將姓名為'ALLEN'的員工修改為3000元
``` UPDATE emp SET sal=3000 WHERE username='ALLEN';```
-- 將姓名為'ALLEN'的員工薪水修改為10000, job修改為CTO
```UPDATE emp SET sal=10000,job='CTO' WHERE username='ALLEN';```
-- 將姓名為’ALLEN‘的員工咋原有薪水基礎上增加1000
```UPDATE emp SET sal=sal+1000 WHERE username='ALLEN';```

-- 刪除操作 DELETE ------------------------
-- 語法``` DELETE FROM 表名 [where 列名=值]```
-- 刪除emp表中 名稱 為 ’ALLEN‘的記錄
```DELETE FROM emp WHERE username='ALLEN';```
-- 刪除 emp 表中 所有記錄
```DELETE FROM emp;```
-- 使用truncate刪除emp表中記錄
```TRUNCATE TABLE emp;```
-- 注意:
-- 1.DELETE 刪除表中的數據,表結構還在;刪除后的數據可以找回
-- 2.TRUNCATE 刪除是把表直接DROP掉,然后再創建一個同樣的新表。刪除的數據不能找回。執行速度比DELETE快。


###### DQL(數據查詢語法)-----------------------------------------
>DQL就是數據查詢語言,數據庫執行DQL語句不會對數據進行改變,而是讓數據庫發送結果集給客戶端:

-- 語法:
-- select selection_list -- 要查詢的列名稱
-- From table_list -- 要查詢的表名稱
-- group by grounping_columns -- 對結果進行分組
-- having condition -- 分組后的行條件
-- order by sorting_columns -- 對結果進行排序
-- limit offset_satrt,row_count -- 結果限定

-- 向emp表中添加數據

INSERT INTO emp(id,NAME, gender, birthday, salary, entry_date, RESUME)
VALUES(1,'ossey','g','2011-01-09', 20000, '2012-11-10','verygood boy');

INSERT INTO emp(id, NAME, gender, birthday, salary, entry_date, RESUME)
VALUES(2,'sey','g','2010-02-08',20000,'2013-10-11','good boy');
INSERT INTO emp(id, NAME, gender, birthday, salary, entry_date, RESUME)
VALUES(3, '鄭爽','mm', '2013-01-01',3000, '2015-03-09','good girl');

INSERT INTO emp(id, NAME, gender, birthday, salary, entry_date, RESUME)
VALUES(4, '周杰倫','g','2015-02-03',3000, '2016-03-08', 'good boy');


-- 將所有員工薪水修改為5000元
```UPDATE    emp SET     salary=5000;```

-- 將姓名為‘sey’的員工薪水修改為3000
```UPDATE    emp SET    salary=30000 WHERE NAME='sey';```

-- 將姓名為‘ossey’的員工薪水修改為40000,性別修改為女
```UPDATE   emp SET salary=40000,gender='g' WHERE NAME='ossey';```

-- 將員工‘sey’的薪水在原有基礎上增加10000
```UPDATE emp SET salary=salary+10000 WHERE NAME='sey';```

-- Delete語句
-- 刪除表中名稱為'sey'的語句
```DELETE FROM emp WHERE NAME='sey';``  

-- 刪除表中所有記錄
```DELETE FROM emp;```
-- 使用truncate刪除表中記錄, 刪除過程:會將表直接drop刪除掉,再創建一個相同結構的空表
```TRUNCATE TABLE emp;```

```SELECT   * FROM emp;```

-- 查詢語句
```SELECT * FROM USER;```

-- 查詢以s開頭的姓名
```SELECT   * FROM emp WHERE NAME LIKE 's%';```

-- 查詢第二個字母以o開頭的姓名
```SELECT * FROM emp WHERE NAME LIKE '%o%';```

-- 查詢有姓名的個數
 
 
 -- 創建學生表 ------------------------------
 ```CREATE TABLE stu(
    sid CHAR(6),
    sname VARCHAR(50),
    age INT,
    gender VARCHAR(50)
 );```
 
-- 查看表
```SELECT * FROM stu;```

-- 插入數據

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 stuo VALUES('S_1004', 'LiSi', 65, 'male');
INSERT INTO stuo 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', 'xxxx', NULL, NULL);


-- 創建雇員表 emp -----------------------------------------------------------
```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      -- 部門編號
);```

-- 插看emp表
```SELECT * FROM emp;```

-- 給emp表中插入以下數據

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);

-- 創建emp的部門表 -------------
```CREATE TABLE dept(
    deptno INT,     -- 部門編號
    dname VARCHAR(14),  -- 部門名稱
    loc VARCHAR(13)     -- 部門位置
);```

-- 查看dept表
```SELECT * FROM dept;```
-- 給部門表插入以下數據

INSERT INTO dept VALUES(10, 'ACCOUNTING', 'NEW YORK');
INSERT INTO dept VALUES(20, 'RESEARCH', 'DALLAS');
INSERT INTO dept VALUES(30, 'SALES', 'CHICAGO');
INSERT INTO dept VALUES(40, 'OPERATIONS', 'BOSTON');

-- 1.基礎查詢 -------------
-- 1.1 查詢所有列
```SELECT * FROM emp;```
-- 1.2 查詢指定列,比如查詢emp表中ename和deptno字段的數據
```SELECT ename, deptno FROM emp;```

-- 2.條件查詢 -------------
-- 2.1 查詢部門為30,并且獎金少于1000的員工
```SELECT *FROM emp WHERE deptno=30 AND comm<1000;```
-- 2.2 查詢 ename為ALLEN 或者 ename為WARD的員工信息
```SELECT * FROM emp WHERE ename='ALLEN' OR ENAME='WARD';```
-- 2.3 查詢deptno部門編號為20,30,50的記錄
```SELECT * FROM emp WHERE deptno IN(20,30,50);```
-- 2.4 查詢部門編號不是20,30, 50的記錄
```SELECT * FROM emp WHERE deptno NOT IN(20, 30, 50);```
-- 2.5 查詢獎金為null的記錄
```SELECT * FROM emp WHERE comm IS NULL;```
-- 2.6 查詢獎金在1000到1500之間的記錄
-- 第一種寫法
```SELECT * FROM emp WHERE comm>=1000 AND comm<=1500;```
-- 第二種寫法
```SELECT * FROM emp WHERE comm BETWEEN 1000 AND 1500;```
-- 2.7 查詢獎金為非空的員工記錄
```SELECT * FROM emp WHERE comm IS NOT NULL;```

 -- 3 模糊查詢 -----------------------------------
 -- 當想查詢姓名中包含a字母的員工時,就需要使用到模糊查詢了,模糊查詢需要使用關鍵字 LIKE
 -- 3.1 查詢ename由5個字母構成的員工記錄 
 ```SELECT * FROM emp WHERE ename LIKE '_____'; ```-- 5條下劃線就是5個記錄 
 -- 模糊查詢必須使用LIKE關鍵字。其中'_'匹配任意一個字母,5個'_'表示5個任意字母
 
-- 3.2 查詢姓名由5個字母構成,并且第5個字母為’s‘的員工記錄
```SELECT * FROM emp WHERE ename LIKE '____s';```
-- 3.3 查詢員工姓名以'J'開頭的員工記錄
```SELECT * FROM emp WHERE ename LIKE 'J%';```
-- 其中'%'匹配0~n個任意字母
-- 3.4 查詢姓名中第二個字母為's'的員工記錄
```SELECT * FROM emp WHERE ename LIKE '%s%';```

 -- 4 字段控制查詢 -----------------------------------
 -- 4.1 去除重復記錄
 -- 去除重復記錄(兩行或兩行以上記錄的數據都相同的), 例如emp表中sal字段就存在相同的記錄。當之查詢emp表中sal字段時,那么回出現重復記錄,需要使用關鍵字DISTINCT
``` SELECT DISTINCT sal FROM emp;```
 -- 4.1 查看關于的月薪和傭金之和
 -- 因為sal(基本工資)和comm(獎金)兩列的類型都是數值類型,所以可以做加法運算。但是如果sal或comm字段中有一個字段不是數值類型,那么就會出錯;
 -- 當然如果sal或者comm中其中一個字段的值為NULL時,相加時也為NULL,所以需要在相加時做判斷:如果為NULL,就為0,否則為原始值,需要使用關鍵字IFNULL();
``` SELECT *, sal+IFNULL(comm,0) FROM emp;```
 -- 4.3 給列名添加別名
 -- 在上面查詢結果中出現列名為sal+ifnull(comm,0),這樣很不美觀,現在我們給這一列添加別名為total:
 -- 給列起別名時,是可以省略AS關鍵字的
 ```SELECT *,sal+IFNULL(comm,0) AS total FROM emp;```
 
 -- 5 排序 -----------------------------------
 -- 5.1 查詢所有員工記錄,按照部門升序排序
 ```SELECT * FROM emp ORDER BY deptno ASC;```
 -- 或者使用以下語句 省略ASC,ORDER BY 默認就是升序的
``` SELECT * FROM emp ORDER BY deptno;```
 -- 5.2 查詢所有員工記錄,按照部門降序排序
``` SELECT * FROM emp ORDER BY deptno DESC;```
 -- 5.2 查詢所有員工,按照月薪降序排序,如果月薪相同時,按照部門升序排序
``` SELECT * FROM emp ORDER BY sal DESC , deptno ASC;```
 
 -- 6 聚合函數 -----------------------------------
 -- 聚合函數是用來做縱向運算的函數:
 -- COUNT(): 統計指定列不為NULL的記錄行數;
 -- MAX(): 計算指定列的最大值,如果指定列是字符串類型,那么使用字符串排序運算;
 -- MIN(): 計算指定列的最小值,如果制定列是字符串類型,那么使用字符串排序運算;
 -- SUM(): 計算指定列的數值和,如果指定列類型不是數值類型,那么計算結果為0;
 -- AVG(): 計算指定列的平均值,如果指定列類型不是數值類型,那么計算結果為0;
 
 -- 6.1 COUNT
 -- 當需要縱向統計時使用COUNT();
 -- 查詢emp表中記錄數:
``` SELECT COUNT(*) AS 數量 FROM emp;```
 -- 查詢emp表中有傭金的人數
``` SELECT COUNT(comm) 數量 FROM emp; ```
 -- 注意:由于COUNT() 函數給出的是comm字段這一列,所以只統計commlie非NULL的行數
 -- 查詢emp表中月薪大于2500的人數
``` SELECT COUNT(*) AS 數量 FROM emp WHERE sal>2500;```
 -- 統計月薪與傭金之和大于2500的員工數量
``` SELECT COUNT(*) AS 數量 FROM emp WHERE sal+IFNULL(comm,0)>2500;```
 -- 查詢有傭金的人數,以及有領導的人數
``` SELECT COUNT(comm) AS 有傭金的人數, COUNT(mgr) AS 有領導的人數 FROM emp;```
 
 -- 6.2 SUM()和AVG()
 -- 當需要縱向求和時使用SUM()函數
 -- 查詢所有員工的月薪和
 ```SELECT SUM(sal) AS 月薪和 FROM emp;```
 -- 查詢所有員工的月薪和,以及所有員工的傭金和
``` SELECT SUM(sal) AS 月薪和, SUM(comm) AS 傭金和 FROM emp;```
 -- 統計所有員工的平均工資
``` SELECT SUM(sal), COUNT(sal) FROM emp;```
 -- 或者使用下面語句
``` SELECT AVG(sal) FROM emp;```
 
 -- 6.3 MAX()和MIN()
 -- 查詢最高工資和最低工資
``` SELECT MAX(sal), MIN(sal) FROM emp;```
 
 -- 7 分組查詢 -----------------------------------
 -- 7.1 查詢各部門員工的數量
 ```SELECT COUNT(*) FROM emp WHERE deptno IS NOT NULL GROUP BY deptno;```
 -- 此語句會將deptno進行分組,將此字段每種不同的值作為一組數據進行統計個數
 -- 查詢各部門的員工數量,并顯示部門編號
``` SELECT deptno, COUNT(*) FROM emp WHERE deptno IS NOT NULL GROUP BY deptno;```
 -- 查詢每個部門的部門編號以及部門工資大于1500的人數
``` SELECT deptno, COUNT(*) FROM emp WHERE sal>1500 GROUP BY deptno;```
 
 -- 7.2 HAVING子句
 -- 查詢工資總和大于9000的部門編號以及工資總和:
 ```SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal)>9000;```
 -- 注意:HAVING和WHERE的區別:
 -- 1.having是在分組后對數據進行過濾。
 --   where實在分組錢對數據進行過濾。
 -- 2.having后面可以使用聚合函數(統計函數)。
 --   where后面不可以使用聚合函數。
 -- where是在對分組錢記錄的條件,如果是某行記錄沒有滿足where子句的條件,那么這行記錄不會參加分組;而having是對分組后的數據的約束
 
 -- 8 LIMIT -----------------------------------
 -- LIMIT用來限定查詢結果的起始行,以及總行數
 -- 8.1 查詢5行記錄,起始行從0開始
 ```SELECT * FROM emp LIMIT 0,5;```
 -- 注意:起始行的索引是從0開始的,即為實際中第一行的數據
 -- 8.2 查詢10行記錄,起始行從3開始
``` SELECT * FROM emp LIMIT 3,10;```
 -- 8.3 分頁查詢
 -- 如果一頁記錄為10條,希望查看第3頁記錄應該怎么查呢?
 -- 1.第一頁記錄起始行為0,一共查詢10行;
 -- 2.第二頁記錄起始行為10,一共查詢10行;
 -- 3.第三頁記錄起始行為20, 一共查詢10行;
 -- 8.3 分頁查詢
 -- 查詢語句書寫順序
 -- select - from - where - group by - having - order by - limit
 -- 查詢語句執行順序
 -- from - where - group by - having - select - order by - limit
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容