• <noscript id="e0iig"><kbd id="e0iig"></kbd></noscript>
  • <td id="e0iig"></td>
  • <option id="e0iig"></option>
  • <noscript id="e0iig"><source id="e0iig"></source></noscript>
  • 01-mysql入門

    MySQL語句分類

    1.DDL  數據庫定義語言   影響數據結構的,增刪改查庫或表 
    2.DML  數據庫操作語言   操作數據,對表中數據的增刪改查
    3.DCL  數據庫控制語言     創建用戶,管理用戶權限,事務控制
    
        非標準分類:DQL 數據庫查詢語言,把對數據的增刪改查中的查單獨提出來
    

    先看幾張圖,對數據庫結構有個大概的了解
    這里寫圖片描述
    這里寫圖片描述
    這里寫圖片描述
    - 為什么要學數據庫

            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(隱退)
        提起數據庫,第一個想到的公司,一般都會是Oracle(甲骨文)。該公司成立于1977年,最初是一家專門開發
        數據庫的公司。Oracle在數據庫領域一直處于領先地位。 Oracle數據庫成為世界上使用最廣泛的關系數據系統之一。
    
    5.DB2 
        IBM 開發的,收費
    

    MySQL中的注解

    • 1.單行: –

      2.多行: /**/

    - MySQL不區分大小寫嗎?

    語句不區分大小寫,數據區分大小寫
    


    • 如何連接數據庫?

    進入dos系統,輸入mysql -u root -p 回車 提示輸入密碼,密碼輸入之后,即可建立連接(注意MySQL中的sql的結束用”;”號結束)

    數據庫定義語言(庫的操作) 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 */ |
    

    DDM總結

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

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

    1.數字型
        整型
        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。
    2.字符串類型
        注意: 字符串類型要使用單引號包裹.
        1>短字符串類型  CHAR/VARCHAR  (最大長度255字節) 
    
            問題:char和varchar有什么區別?
                    char定長字符串.varchar表示變長字符串.
                    同時指定長度為10。當存儲 abc
                    char =》  'abc       '
                    varchar => 'abc'
                    結論: 開發中varchar用的最多。 char只在表示固定長度的枚舉中使用。例如 :性別(用01,02表示)
    
        2>長字符串類型(流類型)
            TEXT/CLOB 保存文本(字符流) --> 當要保存的內容超過255字節時使用.  java中的writer 字符
            BLOB      保存字節(字節流) --> 開發中用不到                       java中的stream 字節
    
            Character Large Object 
            binary Large Object
    
            區別:
                text:只能存儲字符數據.
                BLOB:可以存儲字符和多媒體信息(圖片 聲音 圖像)
    
    3.日期和時間類型
            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 記在,能夠手寫)

        (
            field1  datatype  約束/主鍵約束 auto_increment,
            field2  datatype  約束,
            field3  datatype  約束
        )[character set 字符集 collate 校對規則]
    
    
    1.創建表
        CREATE TABLE table_name
            創建表,首先要選擇你要在哪個數據庫中創建,比如想在day15數據庫中創建一張t_user表
        在命令行中輸入 use database day15; 在輸入創建表的語句即可
    
        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_increment,                  -- 員工編號
            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,
        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
        alter table employee character set utf8 collate utf8_bin;
        alter table employee character set utf8 collate utf8_bin;
    
    6.列名name修改為username
        alter table employee change name username varchar(20);
    

    對表中數據的增刪改(DML) (重點)

    1.insert插入語句

    create table t_user(
        id int primary key auto_increment,
        name varchar(20) not null,
        email varchar(20) unique
    )
    
    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]');
    

    2.update修改語句

    練習一:
    create table t_user(
        id int primary key auto_increment,
        name varchar(20) not null,
        email varchar(20) unique
    )
    
    語法:update 表名 set 列名1 = 值 , 列名2 = 值 ....[where 條件1,條件2...]
    
    1.修改表中id為3 的記錄, 將name修改為rose;
        update t_user set name='rose' where id = 3;
    
    2.將表中的name 全部修改成rose
        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
        );
    
    >添加四條數據
    INSERT INTO employee VALUES(1,'zs','male','1980-12-12','2000-12-12','coder',4000,NULL);
    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);
    
    1.將所有員工薪水修改為5000元
        update employee set salary='5000';
    2.將姓名為’zs’的員工薪水修改為3000元
        update employee set salary='3000' where name='zs';
    3.將姓名為’ls’的員工薪水修改為4000元,job改為Android
        update employee set salary=salary+1000 where name='ls';
    

    3.delete刪除語句(重點)

    語法: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  會提交事務. 
    

    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 /*結果限定*/
    
    
    練習:
        創建學生表:
            CREATE TABLE stu ( --學生表
            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;
    

    以上就是對MySQL的基本總結,(參考黑馬老師筆記總結)

    版權聲明:本文為xinruzhishui_11原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接和本聲明。
    本文鏈接:https://blog.csdn.net/xinruzhishui_11/article/details/80622059

    智能推薦

    Vue入門01

    Hello Vue!! 每一個應用都是從創建一個實例開始的 聲明式渲染 聲明一條數據,然后利用特殊的模板語法將其渲染出來 new Vue({})—> 創建一個實例 el:""----> 聲明掛載點 {{msg}} —>模板語言 Vue遵從MVC設計模式 m:model v:view c:contoroller 例題 點擊按鈕顯示隱藏di...

    HTML中常用操作關于:頁面跳轉,空格

    1.頁面跳轉 2.空格的代替符...

    freemarker + ItextRender 根據模板生成PDF文件

    1. 制作模板 2. 獲取模板,并將所獲取的數據加載生成html文件 2. 生成PDF文件 其中由兩個地方需要注意,都是關于獲取文件路徑的問題,由于項目部署的時候是打包成jar包形式,所以在開發過程中時直接安照傳統的獲取方法沒有一點文件,但是當打包后部署,總是出錯。于是參考網上文章,先將文件讀出來到項目的臨時目錄下,然后再按正常方式加載該臨時文件; 還有一個問題至今沒有解決,就是關于生成PDF文件...

    電腦空間不夠了?教你一個小秒招快速清理 Docker 占用的磁盤空間!

    Docker 很占用空間,每當我們運行容器、拉取鏡像、部署應用、構建自己的鏡像時,我們的磁盤空間會被大量占用。 如果你也被這個問題所困擾,咱們就一起看一下 Docker 是如何使用磁盤空間的,以及如何回收。 docker 占用的空間可以通過下面的命令查看: TYPE 列出了docker 使用磁盤的 4 種類型: Images:所有鏡像占用的空間,包括拉取下來的鏡像,和本地構建的。 Con...

    requests實現全自動PPT模板

    http://www.1ppt.com/moban/ 可以免費的下載PPT模板,當然如果要人工一個個下,還是挺麻煩的,我們可以利用requests輕松下載 訪問這個主頁,我們可以看到下面的樣式 點每一個PPT模板的圖片,我們可以進入到詳細的信息頁面,翻到下面,我們可以看到對應的下載地址 點擊這個下載的按鈕,我們便可以下載對應的PPT壓縮包 那我們就開始做吧 首先,查看網頁的源代碼,我們可以看到每一...

    猜你喜歡

    Linux C系統編程-線程互斥鎖(四)

    互斥鎖 互斥鎖也是屬于線程之間處理同步互斥方式,有上鎖/解鎖兩種狀態。 互斥鎖函數接口 1)初始化互斥鎖 pthread_mutex_init() man 3 pthread_mutex_init (找不到的情況下首先 sudo apt-get install glibc-doc sudo apt-get install manpages-posix-dev) 動態初始化 int pthread_...

    統計學習方法 - 樸素貝葉斯

    引入問題:一機器在良好狀態生產合格產品幾率是 90%,在故障狀態生產合格產品幾率是 30%,機器良好的概率是 75%。若一日第一件產品是合格品,那么此日機器良好的概率是多少。 貝葉斯模型 生成模型與判別模型 判別模型,即要判斷這個東西到底是哪一類,也就是要求y,那就用給定的x去預測。 生成模型,是要生成一個模型,那就是誰根據什么生成了模型,誰就是類別y,根據的內容就是x 以上述例子,判斷一個生產出...

    styled-components —— React 中的 CSS 最佳實踐

    https://zhuanlan.zhihu.com/p/29344146 Styled-components 是目前 React 樣式方案中最受關注的一種,它既具備了 css-in-js 的模塊化與參數化優點,又完全使用CSS的書寫習慣,不會引起額外的學習成本。本文是 styled-components 作者之一 Max Stoiber 所寫,首先總結了前端組件化樣式中的最佳實踐原則,然后在此基...

    基于TCP/IP的網絡聊天室用Java來實現

    基于TCP/IP的網絡聊天室實現 開發工具:eclipse 開發環境:jdk1.8 發送端 接收端 工具類 運行截圖...

    精品国产乱码久久久久久蜜桃不卡