成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

1.MySQL數(shù)據(jù)庫(kù) 2.SQL語(yǔ)句

dunizb / 2288人閱讀

摘要:公司的數(shù)據(jù)庫(kù)產(chǎn)品收費(fèi)的。常應(yīng)用在銀行系統(tǒng)中公司收費(fèi)的中型的數(shù)據(jù)庫(kù)。嵌入式的小型數(shù)據(jù)庫(kù),應(yīng)用在手機(jī)端。關(guān)鍵字,,等數(shù)據(jù)控制語(yǔ)言簡(jiǎn)稱(chēng),用來(lái)定義數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)權(quán)限和安全級(jí)別,及創(chuàng)建用戶(hù)。數(shù)據(jù)查詢(xún)語(yǔ)言簡(jiǎn)稱(chēng),用來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄。

01數(shù)據(jù)庫(kù)概念
* A: 什么是數(shù)據(jù)庫(kù)
        數(shù)據(jù)庫(kù)就是存儲(chǔ)數(shù)據(jù)的倉(cāng)庫(kù),其本質(zhì)是一個(gè)文件系統(tǒng),數(shù)據(jù)按照特定的格式將數(shù)據(jù)存儲(chǔ)起來(lái),用戶(hù)可以對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行增加,修改,刪除及查詢(xún)操作。
* B: 什么是數(shù)據(jù)庫(kù)管理系統(tǒng)
        數(shù)據(jù)庫(kù)管理系統(tǒng)(DataBase Management System,DBMS):指一種操作和管理數(shù)據(jù)庫(kù)的大型軟件,用于建立、使用和維護(hù)數(shù)據(jù)庫(kù),
        對(duì)數(shù)據(jù)庫(kù)進(jìn)行統(tǒng)一管理和控制,以保證數(shù)據(jù)庫(kù)的安全性和完整性。用戶(hù)通過(guò)數(shù)據(jù)庫(kù)管理系統(tǒng)訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)中表內(nèi)的數(shù)據(jù)。
02常見(jiàn)的數(shù)據(jù)庫(kù)
* A: 常見(jiàn)的數(shù)據(jù)庫(kù)
        MYSQL    :開(kāi)源免費(fèi)的數(shù)據(jù)庫(kù),小型的數(shù)據(jù)庫(kù).已經(jīng)被Oracle收購(gòu)了.MySQL6.x版本也開(kāi)始收費(fèi)。
        Oracle    :收費(fèi)的大型數(shù)據(jù)庫(kù),Oracle公司的產(chǎn)品。Oracle收購(gòu)SUN公司,收購(gòu)MYSQL。
        DB2        :IBM公司的數(shù)據(jù)庫(kù)產(chǎn)品,收費(fèi)的。常應(yīng)用在銀行系統(tǒng)中.
        SQLServer:MicroSoft 公司收費(fèi)的中型的數(shù)據(jù)庫(kù)。C#、.net等語(yǔ)言常使用。
        SyBase    :已經(jīng)淡出歷史舞臺(tái)。提供了一個(gè)非常專(zhuān)業(yè)數(shù)據(jù)建模的工具PowerDesigner。
        SQLite    : 嵌入式的小型數(shù)據(jù)庫(kù),應(yīng)用在手機(jī)端。
        Java相關(guān)的數(shù)據(jù)庫(kù):MYSQL,Oracle.
        這里使用MySQL數(shù)據(jù)庫(kù)。MySQL中可以有多個(gè)數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)是真正存儲(chǔ)數(shù)據(jù)的地方
        
        
03數(shù)據(jù)庫(kù)和管理系統(tǒng)
* A: 數(shù)據(jù)庫(kù)管理系統(tǒng)
        ----數(shù)據(jù)庫(kù)1
            ----數(shù)據(jù)表1a
            ----數(shù)據(jù)表1b
        ----數(shù)據(jù)庫(kù)2
            -----數(shù)據(jù)表2a
            -----數(shù)據(jù)表2b
04數(shù)據(jù)表和Java中類(lèi)的對(duì)應(yīng)關(guān)系
* A:數(shù)據(jù)庫(kù)中以表為組織單位存儲(chǔ)數(shù)據(jù)。
    表類(lèi)似我們的Java類(lèi),每個(gè)字段都有對(duì)應(yīng)的數(shù)據(jù)類(lèi)型。
    那么用我們熟悉的java程序來(lái)與關(guān)系型數(shù)據(jù)對(duì)比,就會(huì)發(fā)現(xiàn)以下對(duì)應(yīng)關(guān)系。
        類(lèi)----------表
        類(lèi)中屬性----------表中字段
        對(duì)象----------記錄

        
    
05數(shù)據(jù)表和Java中類(lèi)的對(duì)應(yīng)關(guān)系用戶(hù)表舉例
* A:舉例:
賬務(wù)表
id        name        age    
1        lisi        23
2        wang        24

每一條記錄對(duì)應(yīng)一個(gè)User的對(duì)象
[user1  id = 1 name = lisi  age = 23]
[user2    id = 2 name = wang    age = 24]

06MySQL數(shù)據(jù)庫(kù)安裝
A: 安裝步驟參見(jiàn) day28_source《MySQL安裝圖解.doc》
B: 安裝后,MySQL會(huì)以windows服務(wù)的方式為我們提供數(shù)據(jù)存儲(chǔ)功能。開(kāi)啟和關(guān)閉服務(wù)的操作:右鍵點(diǎn)擊我的電腦→管理→服務(wù)→可以找到MySQL服務(wù)開(kāi)啟或停止。

07數(shù)據(jù)庫(kù)在系統(tǒng)服務(wù)
* A:開(kāi)啟服務(wù)和關(guān)閉服務(wù)
方式1: 我的電腦-----> (右鍵)管理---->服務(wù)和應(yīng)用程序---->服務(wù)----找到MySQL服務(wù)右鍵啟動(dòng)或關(guān)閉 
方式2: 進(jìn)入dos窗口 使用命令: net start mysql 開(kāi)啟MySQL服務(wù);  命令:net stop mysql 關(guān)閉MySql服務(wù)
08MySQL的登錄
* A: MySQL是一個(gè)需要賬戶(hù)名密碼登錄的數(shù)據(jù)庫(kù),登陸后使用,它提供了一個(gè)默認(rèn)的root賬號(hào),使用安裝時(shí)設(shè)置的密碼即可登錄。
    格式1:cmd>  mysql –u用戶(hù)名 –p密碼
    例如:mysql -uroot –proot
    
    格式2:cmd>  mysql --host=ip地址 --user=用戶(hù)名 --password=密碼
    例如:mysql --host=127.0.0.1  --user=root --password=root
09SQLYog軟件介紹
* A: 具體參見(jiàn) 《SQLYog配置.doc》

=======================================第二節(jié)課開(kāi)始====================================

10SQL語(yǔ)句介紹和分類(lèi)
* A:SQL介紹
    * 前面學(xué)習(xí)了接口的代碼體現(xiàn),現(xiàn)在來(lái)學(xué)習(xí)接口的思想,接下里從生活中的例子進(jìn)行說(shuō)明。
    * 舉例:我們都知道電腦上留有很多個(gè)插口,而這些插口可以插入相應(yīng)的設(shè)備,這些設(shè)備為什么能插在上面呢?
    * 主要原因是這些設(shè)備在生產(chǎn)的時(shí)候符合了這個(gè)插口的使用規(guī)則,否則將無(wú)法插入接口中,更無(wú)法使用。發(fā)現(xiàn)這個(gè)插口的出現(xiàn)讓我們使用更多的設(shè)備。

* B: SQL分類(lèi)    
    * 數(shù)據(jù)定義語(yǔ)言:簡(jiǎn)稱(chēng)DDL(Data Definition Language),用來(lái)定義數(shù)據(jù)庫(kù)對(duì)象:數(shù)據(jù)庫(kù),表,列等。關(guān)鍵字:create,alter,drop等 
    * 數(shù)據(jù)操作語(yǔ)言:簡(jiǎn)稱(chēng)DML(Data Manipulation Language),用來(lái)對(duì)數(shù)據(jù)庫(kù)中表的記錄進(jìn)行更新。關(guān)鍵字:insert,delete,update等
    * 數(shù)據(jù)控制語(yǔ)言:簡(jiǎn)稱(chēng)DCL(Data Control Language),用來(lái)定義數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)權(quán)限和安全級(jí)別,及創(chuàng)建用戶(hù)。
    * 數(shù)據(jù)查詢(xún)語(yǔ)言:簡(jiǎn)稱(chēng)DQL(Data Query Language),用來(lái)查詢(xún)數(shù)據(jù)庫(kù)中表的記錄。關(guān)鍵字:select,from,where等

* C: SQL通用語(yǔ)法
    SQL語(yǔ)句可以單行或多行書(shū)寫(xiě),以分號(hào)結(jié)尾
        可使用空格和縮進(jìn)來(lái)增強(qiáng)語(yǔ)句的可讀性
        MySQL數(shù)據(jù)庫(kù)的SQL語(yǔ)句不區(qū)分大小寫(xiě),建議使用大寫(xiě),例如:SELECT * FROM user。
        同樣可以使用/**/的方式完成注釋
    
11數(shù)據(jù)表中的數(shù)據(jù)類(lèi)型
* A:MySQL中的我們常使用的數(shù)據(jù)類(lèi)型如下     
    詳細(xì)的數(shù)據(jù)類(lèi)型如下(不建議詳細(xì)閱讀!)
    分類(lèi)    類(lèi)型名稱(chēng)     說(shuō)明 
    整數(shù)類(lèi)型    tinyInt    很小的整數(shù)
        smallint    小的整數(shù)
        mediumint    中等大小的整數(shù)
        int(integer)    普通大小的整數(shù)
    小數(shù)類(lèi)型    float    單精度浮點(diǎn)數(shù)
        double    雙精度浮點(diǎn)數(shù)
        decimal(m,d)    壓縮嚴(yán)格的定點(diǎn)數(shù)
    日期類(lèi)型    year    YYYY  1901~2155
        time    HH:MM:SS  -838:59:59~838:59:59
        date    YYYY-MM-DD 1000-01-01~9999-12-3
        datetime     YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59
        timestamp    YYYY-MM-DD HH:MM:SS  1970~01~01 00:00:01 UTC~2038-01-19 03:14:07UTC
    文本、二進(jìn)制類(lèi)型    CHAR(M)            M為0~255之間的整數(shù)
        VARCHAR(M)        M為0~65535之間的整數(shù)
        TINYBLOB    允許長(zhǎng)度0~255字節(jié)
        BLOB        允許長(zhǎng)度0~65535字節(jié)
        MEDIUMBLOB    允許長(zhǎng)度0~167772150字節(jié)
        LONGBLOB    允許長(zhǎng)度0~4294967295字節(jié)
        TINYTEXT    允許長(zhǎng)度0~255字節(jié)
        TEXT        允許長(zhǎng)度0~65535字節(jié)
        MEDIUMTEXT    允許長(zhǎng)度0~167772150字節(jié)
        LONGTEXT    允許長(zhǎng)度0~4294967295字節(jié)
        VARBINARY(M)允許長(zhǎng)度0~M個(gè)字節(jié)的變長(zhǎng)字節(jié)字符串
        BINARY(M)    允許長(zhǎng)度0~M個(gè)字節(jié)的定長(zhǎng)字節(jié)字符串
12創(chuàng)建數(shù)據(jù)庫(kù)操作
* A: 創(chuàng)建數(shù)據(jù)庫(kù)
    格式:
        * create database 數(shù)據(jù)庫(kù)名;
        * create database 數(shù)據(jù)庫(kù)名 character set 字符集;
    例如:
    #創(chuàng)建數(shù)據(jù)庫(kù) 數(shù)據(jù)庫(kù)中數(shù)據(jù)的編碼采用的是安裝數(shù)據(jù)庫(kù)時(shí)指定的默認(rèn)編碼 utf8
    CREATE DATABASE day21_1; 
    #創(chuàng)建數(shù)據(jù)庫(kù) 并指定數(shù)據(jù)庫(kù)中數(shù)據(jù)的編碼
    CREATE DATABASE day21_2 CHARACTER SET utf8;
    
* B: 查看數(shù)據(jù)庫(kù)
    查看數(shù)據(jù)庫(kù)MySQL服務(wù)器中的所有的數(shù)據(jù)庫(kù):
    show databases;
    查看某個(gè)數(shù)據(jù)庫(kù)的定義的信息:
    show create database 數(shù)據(jù)庫(kù)名;
    例如:
    show create database day21_1;

* C: 刪除數(shù)據(jù)庫(kù)
    drop database 數(shù)據(jù)庫(kù)名稱(chēng);
    例如:
    drop database day21_2;
    
* D: 其他的數(shù)據(jù)庫(kù)操作命令
    切換數(shù)據(jù)庫(kù):
    use 數(shù)據(jù)庫(kù)名;
    例如:
    use day21_1;
    
* E: 查看正在使用的數(shù)據(jù)庫(kù):
    select database();
13創(chuàng)建數(shù)據(jù)表格式
* A:格式:
    create table 表名(
       字段名 類(lèi)型(長(zhǎng)度) 約束,
       字段名 類(lèi)型(長(zhǎng)度) 約束
    );
    例如:
    ###創(chuàng)建分類(lèi)表
    CREATE TABLE sort (
      sid INT, #分類(lèi)ID 
      sname VARCHAR(100) #分類(lèi)名稱(chēng)
    );

         
14約束
* A: 約束的作用:
    create table 表名(
           列名 類(lèi)型(長(zhǎng)度) 約束,
           列名 類(lèi)型(長(zhǎng)度) 約束
        );
        限制每一列能寫(xiě)什么數(shù)據(jù),不能寫(xiě)什么數(shù)據(jù)。
    
* B: 哪些約束:
        主鍵約束
        非空約束
        唯一約束
        外鍵約束
    
15SQL代碼的保存
* A: 當(dāng)sql語(yǔ)句執(zhí)行了,就已經(jīng)對(duì)數(shù)據(jù)庫(kù)進(jìn)行操作了,一般不用保存操作
    在SQLyog 中Ctrl + S 保存的是寫(xiě)sql語(yǔ)句。
16創(chuàng)建用戶(hù)表
* A: 創(chuàng)建用戶(hù)表:
    需求:創(chuàng)建用戶(hù)表,用戶(hù)編號(hào),姓名,用戶(hù)的地址
    
    * B: SQL語(yǔ)句
    CREAT TABLE users (
        uid INT,
        uname VARCHAR(20),
        uaddress VARCHAR(200)
    );

17主鍵約束
* A: 主鍵是用于標(biāo)識(shí)當(dāng)前記錄的字段。它的特點(diǎn)是非空,唯一。
    在開(kāi)發(fā)中一般情況下主鍵是不具備任何含義,只是用于標(biāo)識(shí)當(dāng)前記錄。
* B: 格式:
    1.在創(chuàng)建表時(shí)創(chuàng)建主鍵,在字段后面加上  primary key.
    create table tablename(    
    id int primary key,
    .......
    )
    
    2. 在創(chuàng)建表時(shí)創(chuàng)建主鍵,在表創(chuàng)建的最后來(lái)指定主鍵    
    create table tablename(                        
    id int,
    .......,
    primary key(id)
    )
    
    3.刪除主鍵:alter table 表名 drop primary key;
    alter table sort drop primary key;
    
    4.主鍵自動(dòng)增長(zhǎng):一般主鍵是自增長(zhǎng)的字段,不需要指定。
    實(shí)現(xiàn)添加自增長(zhǎng)語(yǔ)句,主鍵字段后加auto_increment(只適用MySQL)
18常見(jiàn)表的操作
* A: 查看數(shù)據(jù)庫(kù)中的所有表:
    格式:show tables;
    ?    查看表結(jié)構(gòu):
    格式:desc 表名;
    例如:desc sort;

* B: 格式:drop table 表名;
    例如:drop table sort;
19修改表結(jié)構(gòu)
 * A: 修改表添加列
    alter table 表名 add 列名 類(lèi)型(長(zhǎng)度) 約束;    
    例如:
    #1,為分類(lèi)表添加一個(gè)新的字段為 分類(lèi)描述 varchar(20)
    ALTER TABLE sort ADD sdesc VARCHAR(20);

* B: 修改表修改列的類(lèi)型長(zhǎng)度及約束
    alter table 表名 modify 列名 類(lèi)型(長(zhǎng)度) 約束; 
    例如:
    #2, 為分類(lèi)表的分類(lèi)名稱(chēng)字段進(jìn)行修改,類(lèi)型varchar(50) 添加約束 not null
    ALTER TABLE sort MODIFY sname VARCHAR(50) NOT NULL;

* C: 修改表修改列名
    alter table 表名 change 舊列名 新列名 類(lèi)型(長(zhǎng)度) 約束; 
    例如:
    #3, 為分類(lèi)表的分類(lèi)名稱(chēng)字段進(jìn)行更換 更換為 snamesname varchar(30)
    ALTER TABLE sort CHANGE sname snamename VARCHAR(30);

* D: 修改表刪除列
    alter table 表名 drop 列名;    
    例如:
    #4, 刪除分類(lèi)表中snamename這列
    ALTER TABLE sort DROP snamename;

* E: 修改表名
    rename table 表名 to 新表名; 
    例如:
    #5, 為分類(lèi)表sort 改名成 category
    RENAME TABLE sort TO category;

* F: 修改表的字符集
    salter table 表名 character set 字符集;
    例如:
    #6, 為分類(lèi)表 category 的編碼表進(jìn)行修改,修改成 gbk
    ALTER TABLE category CHARACTER SET gbk;

=============================第三節(jié)課開(kāi)始====================================

20數(shù)據(jù)表添加數(shù)據(jù)_1
 * A: 語(yǔ)法:
    insert into 表 (列名1,列名2,列名3..) values  (值1,值2,值3..); -- 向表中插入某些列

 * 舉例:
    INSERT INTO product (id,pname,price) VALUES (1,"筆記本",5555.99);
    INSERT INTO product (id,pname,price) VALUES (2,"智能手機(jī)",9999);
 * 注意:
    列表,表名問(wèn)題
    對(duì)應(yīng)問(wèn)題,個(gè)數(shù),數(shù)據(jù)類(lèi)型
21數(shù)據(jù)表添加數(shù)據(jù)_2
 * A: 添加數(shù)據(jù)格式,不考慮主鍵
    insert into 表名 (列名) values (值)
 * 舉例:
    INSERT INTO product (pname,price) VALUE("洗衣機(jī)",800);
    
    
 * B: 添加數(shù)據(jù)格式,所有值全給出
    格式
    insert into 表名 values (值1,值2,值3..); --向表中插入所有列
    INSERT INOT product VALUES (4,"微波爐",300.25)
 * C: 添加數(shù)據(jù)格式,批量寫(xiě)入
    格式:
    insert into 表名 (列名1,列名2,列名3) values (值1,值2,值3),(值1,值2,值3)
 舉例:
    INSERT INTO product (pname,price) VALUES
    ("智能機(jī)器人",25999.22),
    ("彩色電視",1250.36),
    ("沙發(fā)",58899.02)
    
22更新數(shù)據(jù)
* A: 用來(lái)修改指定條件的數(shù)據(jù),將滿(mǎn)足條件的記錄指定列修改為指定值
    語(yǔ)法:
    update 表名 set 字段名=值,字段名=值;
    update 表名 set 字段名=值,字段名=值 where 條件;
* B: 注意:
        列名的類(lèi)型與修改的值要一致.
        修改值得時(shí)候不能超過(guò)最大長(zhǎng)度.
        值如果是字符串或者日期需要加’’.

* C: 例如:
    #1,將指定的sname字段中的值 修改成 日用品
    UPDATE sort SET sname="日用品";
    #2, 將sid為s002的記錄中的sname改成 日用品
    UPDATE sort SET sname="日用品" WHERE sid="s002";
    UPDATE sort SET sname="日用品" WHERE sid="s003";
23刪除數(shù)據(jù)
?* A: 語(yǔ)法:
    delete from 表名 [where 條件];
    或者
    truncate table 表名;

 * B: 面試題:
    刪除表中所有記錄使用delete from 表名; 還是用truncate table 表名;
    刪除方式:delete 一條一條刪除,不清空auto_increment記錄數(shù)。
    truncate 直接將表刪除,重新建表,auto_increment將置為零,從新開(kāi)始。

 * C: 例如:
    DELETE FROM sort WHERE sname="日用品";
    #表數(shù)據(jù)清空
    DELETE FROM sort;
24命令行亂碼問(wèn)題
A: 問(wèn)題
    我們?cè)赿os命令行操作中文時(shí),會(huì)報(bào)錯(cuò)
    insert into user(username,password) values(‘張三’,’123’);        
    ERROR 1366 (HY000): Incorrect string value: "xD5xC5xC8xFD" for column "username" at row 1
B: 原因:因?yàn)閙ysql的客戶(hù)端編碼的問(wèn)題我們的是utf8,而系統(tǒng)的cmd窗口編碼是gbk
    解決方案(臨時(shí)解決方案):修改mysql客戶(hù)端編碼。
    show variables like "character%"; 查看所有mysql的編碼
    client connetion result 和客戶(hù)端相關(guān)
    database server system 和服務(wù)器端相關(guān) 
    將客戶(hù)端編碼修改為gbk.
    set character_set_results=gbk; / set names gbk;
    以上操作,只針對(duì)當(dāng)前窗口有效果,如果關(guān)閉了服務(wù)器便失效。如果想要永久修改,通過(guò)以下方式:
    在mysql安裝目錄下有my.ini文件
    default-character-set=gbk 客戶(hù)端編碼設(shè)置                        
    character-set-server=utf8 服務(wù)器端編碼設(shè)置
    注意:修改完成配置文件,重啟服務(wù)
25數(shù)據(jù)表和測(cè)試數(shù)據(jù)準(zhǔn)備
* A: 查詢(xún)語(yǔ)句,在開(kāi)發(fā)中使用的次數(shù)最多,此處使用“zhangwu” 賬務(wù)表。
    創(chuàng)建賬務(wù)表:
    CREATE TABLE zhangwu (
      id INT PRIMARY KEY AUTO_INCREMENT, -- 賬務(wù)ID
      name VARCHAR(200), -- 賬務(wù)名稱(chēng)
      money DOUBLE, -- 金額
    );
* B: 插入表記錄:
    INSERT  INTO zhangwu(id,name,money) VALUES (1,"吃飯支出",247);
    INSERT  INTO zhangwu(id,name,money) VALUES (2,"工資收入",12345);
    INSERT  INTO zhangwu(id,name,money) VALUES (3,"服裝支出",1000);
    INSERT  INTO zhangwu(id,name,money) VALUES (4,"吃飯支出",325);
    INSERT  INTO zhangwu(id,name,money) VALUES (5,"股票收入",8000);
    INSERT  INTO zhangwu(id,name,money) VALUES (6,"打麻將支出",8000);
    INSERT  INTO zhangwu(id,name,money) VALUES (7,null,5000);
26數(shù)據(jù)的基本查詢(xún)
    * A: 查詢(xún)指定字段信息
        select 字段1,字段2,...from 表名;
        例如:
        select id,name from zhangwu;

    * B: 查詢(xún)表中所有字段
        select * from 表名; 
        例如:
        select * from zhangwu; 
        注意:使用"*"在練習(xí)、學(xué)習(xí)過(guò)程中可以使用,在實(shí)際開(kāi)發(fā)中,不推薦使用。原因,要查詢(xún)的字段信息不明確,若字段數(shù)量很多,會(huì)導(dǎo)致查詢(xún)速度很慢。

    * C: distinct用于去除重復(fù)記錄
        select distinct 字段 from 表名;            
        例如:
        select distinct money from zhangwu;

    * D: 別名查詢(xún),使用的as關(guān)鍵字,as可以省略的.
        別名可以給表中的字段,表設(shè)置別名。 當(dāng)查詢(xún)語(yǔ)句復(fù)雜時(shí),使用別名可以極大的簡(jiǎn)便操作。
        表別名格式: 
        select * from 表名 as 別名;
        或
        select * from 表名 別名;
        列別名格式:
        select 字段名 as 別名 from 表名;
        或
        select 字段名 別名 from 表名;
        例如
        表別名:
            select * from zhangwu as zw;
        列別名:
            select money as m from zhangwu;
            或
            select money m from zhangwu;

        我們?cè)趕ql語(yǔ)句的操作中,可以直接對(duì)列進(jìn)行運(yùn)算。
        例如:將所有賬務(wù)的金額+10000元進(jìn)行顯示.
        select pname,price+10000 from product;

==============================第四節(jié)課開(kāi)始====================================

27數(shù)據(jù)的條件查詢(xún)_1
 * A:條件查詢(xún)
        where語(yǔ)句表?xiàng)l件過(guò)濾。滿(mǎn)足條件操作,不滿(mǎn)足不操作,多用于數(shù)據(jù)的查詢(xún)與修改。
    
 * B : 格式 :
        select 字段  from 表名  where 條件;    
 
 * C: while條件的種類(lèi)如下:
    比較運(yùn)算符    
        >  <  <=   >=   =  <>    ---------- 大于、小于、大于(小于)等于、不等于
        BETWEEN  ...AND...      -----------    顯示在某一區(qū)間的值(含頭含尾)
        IN(set)                 -----------顯示在in列表中的值,例:in(100,200)
        LIKE 通配符                   -----------模糊查詢(xún),Like語(yǔ)句中有兩個(gè)通配符:
                                            % 用來(lái)匹配多個(gè)字符;例first_name like ‘a(chǎn)%’;
                                            _ 用來(lái)匹配一個(gè)字符。例first_name like ‘a(chǎn)_’;
        IS NULL     判斷是否為空
                                ------------is null; 判斷為空
                                            is not null; 判斷不為空
 * D 邏輯運(yùn)算符    
        and                        ------------ 多個(gè)條件同時(shí)成立
        or                        ------------ 多個(gè)條件任一成立
        not                        ------------ 不成立,例:where not(salary>100);

 * E: 例如:
    查詢(xún)所有吃飯支出記錄
    SELECT * FROM zhangwu WHERE name = "吃飯支出";

    查詢(xún)出金額大于1000的信息
    SELECT * FROM zhangwu WHERE money >1000;

    查詢(xún)出金額在2000-5000之間的賬務(wù)信息
    SELECT * FROM zhangwu WHERE money >=2000 AND money <=5000;
    或
    SELECT * FROM zhangwu WHERE money BETWEEN 2000 AND 5000;

    查詢(xún)出金額是1000或5000或3500的商品信息
    SELECT * FROM zhangwu WHERE money =1000 OR money =5000 OR money =3500;
    或
    SELECT * FROM zhangwu WHERE money IN(1000,5000,3500);
28數(shù)據(jù)的條件查詢(xún)_2
 * A 模糊查詢(xún)
    查詢(xún)出賬務(wù)名稱(chēng)包含”支出”的賬務(wù)信息。
    SELECT * FROM zhangwu WHERE name LIKE "%支出%";

 * B 查詢(xún)出賬務(wù)名稱(chēng)中是五個(gè)字的賬務(wù)信息
    SELECT * FROM gjp_ledger WHERE ldesc LIKE "_____"; -- 五個(gè)下劃線(xiàn)_

* C 查詢(xún)出賬務(wù)名稱(chēng)不為null賬務(wù)信息
    SELECT * FROM zhangwu WHERE name IS NOT NULL;
    SELECT * FROM zhangwu WHERE NOT (name IS NULL);
29排序查詢(xún)
* A: 排序查詢(xún)
     使用格式
        * 通過(guò)order by語(yǔ)句,可以將查詢(xún)出的結(jié)果進(jìn)行排序。放置在select語(yǔ)句的最后。
        * SELECT * FROM 表名 ORDER BY 字段ASC;
            * ASC 升序 (默認(rèn))
            * DESC 降序
        
* B: 案例代碼
        /*
          查詢(xún),對(duì)結(jié)果集進(jìn)行排序
          升序,降序,對(duì)指定列排序
          order by 列名 [desc][asc]
          desc 降序
          asc  升序排列,可以不寫(xiě)
        */
        -- 查詢(xún)賬務(wù)表,價(jià)格進(jìn)行升序
        SELECT * FROM zhangwu ORDER BY zmoney ASC

        -- 查詢(xún)賬務(wù)表,價(jià)格進(jìn)行降序
        SELECT * FROM zhangwu ORDER BY zmoney DESC

        -- 查詢(xún)賬務(wù)表,查詢(xún)所有的支出,對(duì)金額降序排列
        -- 先過(guò)濾條件 where 查詢(xún)的結(jié)果再排序
        SELECT * FROM zhangwu WHERE zname LIKE"%支出%" ORDER BY zmoney DESC

30聚合函數(shù)
    * A: 聚合函數(shù)        
    * B: 函數(shù)介紹
        * 之前我們做的查詢(xún)都是橫向查詢(xún),它們都是根據(jù)條件一行一行的進(jìn)行判斷,而使用聚合函數(shù)查詢(xún)是縱向查詢(xún),
            它是對(duì)一列的值進(jìn)行計(jì)算,然后返回一個(gè)單一的值;另外聚合函數(shù)會(huì)忽略空值。
        * count:統(tǒng)計(jì)指定列不為NULL的記錄行數(shù);
        * sum:計(jì)算指定列的數(shù)值和,如果指定列;
        * max:計(jì)算指定列的最大值,如果指定列是字符串類(lèi)型,那么使用字符串類(lèi)型不是數(shù)值類(lèi)型,那么計(jì)算結(jié)果為0排0序運(yùn)算;
        * min:計(jì)算指定列的最小值,如果指定列是字符串類(lèi)型,那么使用字符串排序運(yùn)算;
        * avg:計(jì)算指定列的平均值,如果指定列類(lèi)型不是數(shù)值類(lèi)型,那么計(jì)算結(jié)果為0;

    * C: 案例代碼
        /*
           使用聚合函數(shù)查詢(xún)計(jì)算
        */

        -- count 求和,對(duì)表中的數(shù)據(jù)的個(gè)數(shù)求和  count(列名)
        -- 查詢(xún)統(tǒng)計(jì)賬務(wù)表中,一共有多少條數(shù)據(jù)
        SELECT COUNT(*)AS"count" FROM zhangwu

        -- sum求和,對(duì)一列中數(shù)據(jù)進(jìn)行求和計(jì)算 sum(列名)
        -- 對(duì)賬務(wù)表查詢(xún),對(duì)所有的金額求和計(jì)算
        SELECT SUM(zmoney) FROM zhangwu
        -- 求和,統(tǒng)計(jì)所有支出的總金額
        SELECT SUM(zname) FROM zhangwu WHERE zname LIKE"%收入%"

        INSERT INTO zhangwu (zname) VALUES ("彩票收入")

        -- max 函數(shù),對(duì)某列數(shù)據(jù),獲取最大值
        SELECT MAX(zmoney) FROM zhangwu

        -- avg 函數(shù),計(jì)算一個(gè)列所有數(shù)據(jù)的平均數(shù)
        SELECT AVG(zmoney)FROM zhangwu

                        
31分組查詢(xún)
* A: 分組查詢(xún)
    * a: 使用格式
        * 分組查詢(xún)是指使用group by字句對(duì)查詢(xún)信息進(jìn)行分組,例如:我們要統(tǒng)計(jì)出zhanguw表中所有分類(lèi)賬務(wù)的總數(shù)量,這時(shí)就需要使用group by 來(lái)對(duì)zhangwu表中的賬務(wù)信息根據(jù)parent進(jìn)行分組操作。
        * SELECT 字段1,字段2… FROM 表名 GROUP BY 字段 HAVING 條件;
        * 分組操作中的having子語(yǔ)句,是用于在分組后對(duì)數(shù)據(jù)進(jìn)行過(guò)濾的,作用類(lèi)似于where條件。
    * b: having與where的區(qū)別
        * having是在分組后對(duì)數(shù)據(jù)進(jìn)行過(guò)濾.
        * where是在分組前對(duì)數(shù)據(jù)進(jìn)行過(guò)濾
        * having后面可以使用分組函數(shù)(統(tǒng)計(jì)函數(shù))
        * where后面不可以使用分組函數(shù)。

        
 * B: 案例代碼        
            /*
                查詢(xún)所有的數(shù)據(jù)
                吃飯支出 共計(jì)多少
                工資收入 共計(jì)多少
                服裝支出 共計(jì)多少
                股票收入 共計(jì)多少
                打麻將支出 共計(jì)多少錢(qián)
                
                分組查詢(xún):  group by 被分組的列名
                必須跟隨聚合函數(shù)
                select 查詢(xún)的時(shí)候,被分組的列,要出現(xiàn)在select 選擇列的后面
            */
              SELECT SUM(zmoney),zname FROM zhangwu GROUP BY zname
              
            -- 對(duì)zname內(nèi)容進(jìn)行分組查詢(xún)求和,但是只要支出
            SELECT SUM(zmoney)AS "getsum",zname FROM zhangwu WHERE zname LIKE"%支出%"
            GROUP BY zname
            ORDER BY getsum DESC

            -- 對(duì)zname內(nèi)容進(jìn)行分組查詢(xún)求和,但是只要支出, 顯示金額大于5000
            -- 結(jié)果集是分組查詢(xún)后,再次進(jìn)行篩選,不能使用where, 分組后再次過(guò)濾,關(guān)鍵字 having
            SELECT SUM(zmoney)AS "getsum",zname FROM zhangwu WHERE zname LIKE"%支出%"
            GROUP BY zname HAVING getsum>5000    
31總結(jié)
* 把今天的知識(shí)點(diǎn)總結(jié)一遍。

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/67183.html

相關(guān)文章

  • UCloud MySQL數(shù)據(jù)庫(kù)讀寫(xiě)分離

    摘要:讀寫(xiě)分離中間件具有獨(dú)立的。變量語(yǔ)句將被廣播考慮到節(jié)點(diǎn)間數(shù)據(jù)一致性問(wèn)題,只會(huì)分發(fā)到主節(jié)點(diǎn)。節(jié)點(diǎn)健康檢查,提升數(shù)據(jù)庫(kù)系統(tǒng)可用性。UCloud MySQL云數(shù)據(jù)庫(kù)讀寫(xiě)分離 背景 數(shù)據(jù)顯示,關(guān)系型數(shù)據(jù)庫(kù)在OLTP業(yè)務(wù)下96.87%都在等待讀I/O,而處理器計(jì)算僅僅占了5.3%,這說(shuō)明要提高數(shù)據(jù)庫(kù)的QPS性能,關(guān)鍵的一點(diǎn)是提高系統(tǒng)的IO能力。 另一個(gè)數(shù)據(jù)表明, 大多數(shù)業(yè)務(wù)對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)...

    joywek 評(píng)論0 收藏0
  • MySQL性能調(diào)優(yōu)與架構(gòu)設(shè)計(jì)(三)—— MySQL安全管理

    摘要:處在局域網(wǎng)之內(nèi)的,由于有局域網(wǎng)出入口的網(wǎng)絡(luò)設(shè)備的基本保護(hù),相對(duì)于暴露在廣域網(wǎng)中要安全不少,主要威脅對(duì)象基本控制在了可以接入局域網(wǎng)的內(nèi)部潛在威脅者,和極少數(shù)能夠突破最外圍防線(xiàn)局域網(wǎng)出入口的安全設(shè)備的入侵者。 前言 對(duì)于任何一個(gè)企業(yè)來(lái)說(shuō),其數(shù)據(jù)庫(kù)系統(tǒng)中所保存數(shù)據(jù)的安全性無(wú)疑是非常重要的,尤其是公司的有些商業(yè)數(shù)據(jù),可能數(shù)據(jù)就是公司的根本。 失去了數(shù)據(jù),可能就失去了一切 本章將針對(duì)mysql...

    Eminjannn 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<