1. 程式人生 > 程式設計 >淺談Android中介面卡的notifyDataSetChanged()為何有時不重新整理

淺談Android中介面卡的notifyDataSetChanged()為何有時不重新整理

資料庫:

    本質上就是一個檔案系統,通過標準的sql語句對資料進行增刪改查(curd)操作

資料庫型別:

    關係型資料庫:

      存放實體與實體間關係的資料庫,本質上為二維表(mysql、oracle、sql server、DB2)

    非關係型資料庫:

  存放的是物件(redis、No-sql、Hbase、MongodDB)

各大資料庫:

    sql的分類:

      DDL:資料定義語言

     操作物件:資料庫和表

     關鍵詞:create alter drop

     操作資料庫:

      建立:create database 資料庫名稱

      刪除:drop database 資料庫名稱

      常用命令:show databases;

     操作表:

      建立表:create table 表名(欄位描述,欄位描述);

        欄位描述:

          欄位名稱 欄位型別 [約束]

        例:

          create table user{

            id int primary key auto_increment

            username varchar(20)

          };

      修改表:alter table 表名 ...

        修改表名:alter table 舊錶名 rename to 新表名;

            例:alter table user1 rename to user10

        新增欄位:alter table 表名 add[column] 欄位描述;

            例:alter table user add password varchar(20)

        修改欄位名:alter table 表名 change 欄位名稱 新欄位名稱

            例:alter table user change password pwd varchar(20)

        修改欄位描述:alter table 表名 modify 欄位名稱 欄位型別 [約束]

            例:alter table user modify pwd int;

        刪除欄位:alter table 表名 drop 欄位名

            例:alter table user drop pwd;

      刪除表:drop table 表名;

      常用命令:

        切換或進入資料庫:use 資料庫名稱

        檢視當前資料庫下所有表:show tables

        檢視當前表結構:desc 表名

        檢視建表語句:show create table 表名

  DML:資料操作語言

     操作物件:記錄(行)

     關鍵詞:insert update delete

     插入:

      格式1:insert into 表名 values(欄位值1,欄位值2,...,欄位n)

      注意:預設插入全部欄位

         必須保證values後面的內容的型別和順序和表結構中一致

         若欄位型別為數字,可以省略引號

         例:insert into user values(1,'tom');

      格式2:insert into 表名(欄位名1,欄位名2)values(欄位值1,欄位值2);

      注意:插入指定欄位

         必須保證values後面的型別和順序和表名後面的欄位的型別和順序保持一致

     修改:update 表名 set 欄位名=欄位值,欄位名1=欄位值1...(where條件)

      例:update user set username='yisen' where username ='Yisen';

     刪除:delete from 表名 [where條件];

      例:delete from user where id=1;

      DQL:資料查詢語言(非官方)

        關鍵詞:select

        格式:select ... from 表名 where 條件 group by 分組欄位 having 條件 order by 排序欄位 ase|desc    

    初始化環境:
        -- 建立商品表
        create table products(
            pid int primary key auto_increment,
            pname varchar(20),
            price double,
            pnum int,
            cno int,
            pdate timestamp
        );

        insert into products values (null,'泰國大榴蓮',98,12,1,null);
        insert into products values (null,'新疆大棗',38,123,1,null);
        insert into products values (null,'新疆切糕',68,50,2,null);
        insert into products values (null,'十三香',10,200,3,null);
        insert into products values (null,'老乾媽',20,180,3,null);
        insert into products values (null,'豌豆黃',20,120,2,null);
    練習:
        簡單查詢:
        練習:
        1.查詢所有的商品
            select * from products;
        2.查詢商品名和商品價格.
            -- 檢視指定的欄位 
            -- 格式: select 欄位名1,欄位名2 from 表名
            select pname,price from products;
        3.查詢所有商品都有那些價格.
            -- 去重操作 distinct
            -- 格式: select distinct 欄位名,欄位名2 from 表名
            select price from products;
            select distinct price from products;
        4.將所有商品的價格+10元進行顯示.(別名)
            -- 可以在查詢的結果之上進行運算,不影響資料庫中的值
            -- 給列起別名 格式: 欄位名 [as] 別名
            select price+10 from products;
            select price+10 新價格 from products;
            select price+10 '新價格' from products;
            select price+10 新 價 格 from products;-- 錯誤
            select price+10 '新 價 格' from products;
            select price+10 `新 價 格` from products;


        條件查詢:
        練習:
        1.查詢商品名稱為十三香的商品所有資訊:
            select * from products where pname = '十三香';
        2.查詢商品價格>60元的所有的商品資訊:
            select * from products where price>60;
        3.查詢商品名稱中包含”新”的商品
            -- 模糊匹配 
            --    格式: 欄位名 like "匹配規則";
            --        匹配內容 %
                            "龍"    值為龍
                            "%龍"    值以"龍"結尾
                            "龍%"    值以"龍"開頭
                            "%龍%"     值包含"龍"
            --        匹配個數 "__" 佔兩個位置
            
            select * from products where pname like "%新%";
        4.查詢價格為38,68,98的商品
            select * from products where price = 38 or price = 68 or price=98;
            select * from products where price in(38,68,98);
            
            where後的條件寫法:
                * > ,<,=,>=,<=,<>,!=
                * like 使用佔位符 _ 和 %  _代表一個字元 %代表任意個字元. 
                    * select * from product where pname like '%新%';
                * in在某個範圍中獲得值.
                    * select * from product where pid in (2,5,8);
                * between 較小值 and 較大值
                    select * from products where price between 50 and 70;
    
        排序查詢:
        1.查詢所有的商品,按價格進行排序.(asc-升序,desc-降序)
            select * from products order by price desc;
        2.查詢名稱有新的商品的資訊並且按價格降序排序.
            select * from products where pname like '%新%' order by price  desc;


        聚合函式:
            對一列進行計算 返回值是一個,忽略null值
        * sum(),avg(),max(),min(),count();
        1.獲得所有商品的價格的總和:
            select sum(price) from products;
        2.獲得商品表中價格的平均數:
            select avg(price) from products;
            -- round(值,保留小數位)
            select round(avg(price),2) from products;
        3.獲得商品表中有多少條記錄:
            select count(*) from products;

        分組:使用group by
        1.根據cno欄位分組,分組後統計商品的個數.
            select cno,count(*) from products group by cno;
        2.根據cno分組,分組統計每組商品的總數量,並且總數量> 200;
            select cno,sum(pnum) from products  group by cno;
            select cno,sum(pnum) from products  group by cno having sum(pnum)>200;
            注意:
                where和having區別:
                    1.where 是對分組前的資料進行過濾 ;having 是對分組後的資料進行過濾 
                    2.where 後面不能使用聚合函式,having可以     

資料型別:

        約束:

          作用:為了保證資料的有效性和完整性

          mysql常用的約束:主鍵約束(primary key) 唯一約束(unique) 非空約束(not null) 外來鍵約束(foreign key)

          主鍵約束:被修飾過的欄位唯一非空

            注意:一張表只能由一個主鍵,這個主鍵可以包含多個欄位

            方式1:建表的同時新增約束 格式:欄位名稱 欄位型別 primary key

            方式2:建表的同時在約束區域新增約束

              所有欄位宣告完成後就是約束區域 格式:primary key(欄位1,欄位2)

            方式3:建表後,通過修改表結構新增約束

        唯一約束:

          被修飾過的欄位唯一,對null不起作用

          方式1:建表的同時新增約束 格式: 欄位名稱 欄位型別 unique

          方式2:建表的同時在約束區域新增約束

              所有的欄位聲名完成後就是約束區域:unique(欄位1,欄位2)

          方式3:建表之後,通過修改表結構新增約束

          非空約束:

            特點:被修飾過的欄位非空

            方式:

          truncate 清空表:

            格式:

              truncate 表名;幹掉表,重新建立一張新表

            和delete from 區別

              delete屬於DML語句 truncate屬於DDL語句

              delete逐條刪除 truncate幹掉表,重新建立一張空表

          auto_increment 自增:

            要求:1.被修飾的欄位累心支援自增。一般為int

               2.被修飾的欄位必須是一個key 一般是primary key

      DCL:資料控制語言

        操作物件: 使用者 事務 許可權