Mysql (高級查詢)

@作者 Stone的博客 www.1314sl.com

    ----- 字段屬性:
    主鍵:primary key 主鍵 唯一約束;不能重復
        
        在創建表的時候,在后面加 primary key 關鍵字
        
    -- 追加主鍵
        alter table 表名 modify 字段名 primary key
        alter table 表名 add primary key(字段名);

    --更新&刪除主鍵
        
        alter table 表名 drop primary key;


    --主鍵分類
    id int primary key comment '邏輯主鍵'
    
    
------ 自動增長
    不給值或者給NULL的時候,會自動被系統+1操作
    
    --自增長通常跟主鍵搭配
    
    auto_increment
    1.任何一個字段要做自增長前提是本身是一個索引(Key 攔有值)
    2.必須是int型
    3.一張表只能有一個自增長
    
    default NUll 不給值 都會觸動自增長
    
    
----列屬性(修改自增長)
    向下修改不生效
    向上修改生效
    
    alter table 表名 auto_increment = 值;
    
    
    查看字增長變量
    show variables like 'auto_increment%';
    -- 修改自增長步長
    set auto_increment_increment=5;--一次自增5

-- 刪除自增長
    字段的一個屬性,可以通過 modify 進行修改(沒有 auto_increment)
    Alter table 表名 modify 字段 類型;
    
    alter table 表 modify id int;
    
    --查看 desc 表名
    

-- 列屬性(唯一鍵) 
    unique key  --唯一鍵 
    數據不能重復,可以有多個唯一,允許為空。
    
    本質與主鍵差不多。
    
    
-- 增加唯一鍵
    1.在創建表的時候,字段之后跟 unique / unique key;
    
    2.在所有的字段之后。unique key(字段,字段);
        not null unique key --PRI 表中又沒有主鍵
        
    3.在創建表之后增加唯一
        
        alter table 表名 add unique key (字段);
        
    

--- 刪除唯一鍵
    先刪除后新增
    
    alter table 表名 drop unique key -- 錯誤的
    
    alter table 表名 dropindex 索引名字;
    
    

--------索引

    幾乎所有的索引都是建立在字段之上
    
    根據某種算法,將已有得數據(未來可能新增的數據)
    
    
    --索引的意義
        1.提示查詢數據的效率
        2.約束數據的有效性(唯一性等)
        

        Mysql中提供了多種索引
        
        主鍵:primary key
        唯一: unique key
        全文: fulltext index
        普通: index
        
        全文索引,最大的問題是如何確定關鍵字
            英文很容易:單詞與單詞之間有空格
            中文很難:沒有空格,中文可以各種隨意組合(分詞:sphinx)
            
            
    
    
---------------- 關系
    一對一
    一對多(多對一)
    多對多
    
    sqlserver 主表 外表
    
    
    ---- 范式:減少數據冗余
    
    1NF - 6NF
    
    
------- 1NF
        第一范式:在設計表存儲數據的時候,如果表中設計的字段存儲的數據,在取出來使用之前
        還血藥額外的處理,不滿足第一范式。
        
        數據不需要再次拆封
    
    -- 2NF
        /*
        不允許出現部分依賴
        在輸出舍得的過程中,如果有復合主鍵
        且表中又字段并不是由整個主鍵來確定,
        而是依賴主鍵中的某個字段,存在字段依賴的部分問題
        稱之為:部分依賴
        */
    
    -- 3NF
    不能出現傳遞依賴
    
    --逆規范化
    磁盤利用率與效率的對抗
    就是增大空間,提高效率
    

    
    
-------------數據高級操作---------------------    
    
    數據操作:增刪改查
    
    新增:
    insert into 表名【字段名】 values (值列表);
    
    在數據插入的時候,假設主鍵對應的值已經存在,插入一定會失敗!
    
    -- 主鍵沖突
        更新操作
        insert into 表名【字段名】values(值列表) on dupllcate key update 字段=值;
        
      替換
        replace into 表名【字段名】values(值列表;
    
    
    
-------蠕蟲復制
        
        復制創建表(表結構)
        
        create table 新表名 like 舊表名; 
        
        蠕蟲復制:先查出數據,然后將查出的數據新增一遍
        
        insert into 表名【字段列表】 select 字段列表 * from 數據表名(舊表)
        
        -- 蠕蟲復制 成倍增長
        insert into 自己 select * from 自己;
        
        
        意義:
            1.從已有表拷貝數據到新表中
            2.可以迅速的讓表中的數據膨脹到一定的數量級。測試表的壓力已經效率
        
---- 高級 更新數據

        基本語法
        update 表名 set 字段=值 |where 條件|
        
        高級更新
        update 表名 set 字段 =值 |where 條件| limit 更新數量|
        
            -- 把表中的 a 變成 c
            update 表 set 字段='c' where 字段='a' limit 3;
            
            !!!GBK 不區分大小寫。
    
---- 高級 刪除數據 可以 通過 limit 來限制數量

    delete from 表名【where 條件】【limit 數量】;
     
    刪除數據以后,自增長
    
    思路:數據的刪除是不會該表表結構,只能刪除表后重建。
    
    TRUNCATE 表名  -刪除后,重置自增長
    
    
------- 高級 數據查詢(select 選項)

    基本語法:
    select 字段列表 * from 表名 where 條件|
    
    完整語法:
    select 字段列表 * from 數據源 where 條件 group by 
    having  order  by limit;
    
        All:默認的,保留所有的結果
        Distinct : 去重,將重復的去掉
    
    
    -- 字段別名
        
        字段名 [as] 別名;
        
        不寫 as 也行
        
    --- 數據源
    /*  從一張表中取出一條記錄,去另外一張表中匹配所有的記錄
        而且保留  記錄數和字段數
        這種結果為:笛卡爾積(交叉連接)
        沒什么用,盡量不用

    */  
    
    子查詢:
    
    select * from (select * from 表名);
    
    
    
    
-- 高級 where 子句

        where 子句的目標用來判斷數據,篩選數據
        
        where 返回結果 0 或者 1   0 帶表false 1帶表true ;
        
    
    運算符:
            >   大于
            <   小于
            >=  大于等于
            <=  小于等于
            !=  <>  不等于
            =   等于
            模糊查詢里用到的:
            like
            between  and
            in / not in
            
    邏輯運算符:
            &&(and)  并
            ||(or)  或者
            !(not)  非
    
    rand 取得一個0和1之間的隨機數
    floor 向下取整!
    1.
        select * from 表 where id=1 || id=3 || id=5;
                        ||
                        ||
        select * from 表 where id in(1,3,5);
        
    2.
        select * from 表 where height>=170 and heihgt<=180;
                        ||
                        ||
        select * from 表 where height between 170 and 180;               
    

--------------- Group by  分組----------------
    聚合函數:
    COUNT() :統計分組后的記錄數,每一組有多少條記錄
    Max()   :統計每組中最大的值
    Min()   :統計最小值
    AVG()   :統計平均值
    SUM()   : 統計和
    
    
select  聚合函數,字段名 from 表名 group by 字段名

多字段排序:
    --order by  放在語句最后
select * from 表名 border by 字段名(desc/asc),

    group_concat(字段)
    
    回溯統計:with rollup
    
    
--  Having 子句
    
    Having 字句 進行條件判斷
     
    having 能做 where 能做的幾乎所有事情 但是where卻不能
    
    select 字段名 from 表名 group by 字段  having 條件
    
--- order by    
    
    select * from 表名 order by 字段 desc/asc;
    
    
--  limit 子句
    limit 有兩種使用方式。
        只用來限制長度
    
    
    ------
    length:每頁顯示的數量
    Offset:offset-(頁碼-1)*每頁顯示數量


@作者 Stone的博客 www.1314sl.com

oneNate筆記
oneNate筆記

@作者 Stone的博客 www.1314sl.com

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,362評論 6 544
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,577評論 3 429
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,486評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,852評論 1 317
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,600評論 6 412
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,944評論 1 328
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,944評論 3 447
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 43,108評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,652評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,385評論 3 358
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,616評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,111評論 5 364
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,798評論 3 350
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,205評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,537評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,334評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,570評論 2 379

推薦閱讀更多精彩內容

  • 前言 我們使用SQL查詢不能只使用很簡單、最基礎的SELECT語句查詢。如果想從多個表查詢比較復雜的信息,就會使用...
    暖熊熊閱讀 629評論 0 0
  • 我們使用SQL查詢不能只使用很簡單、最基礎的SELECT語句查詢。如果想從多個表查詢比較復雜的信息,就會使用高級查...
    PythonMaO閱讀 2,380評論 0 10
  • 望里風高起陣云,登樓一為散幽襟。 背天鷗去渾渾舊,接地春來浩浩新。 歌哭千家聽曠野,飛潛無數動天心。 奔來萬事交生...
    李野航閱讀 246評論 0 1
  • 不要拿他人的錯誤來懲罰自己!不值得!也沒必要!
    葉子隨筆閱讀 205評論 0 0
  • 秋風又起 曉月殘輝 驀回首 已成空 心悲涼 愁斷腸 半絲秋意 一世情長 沉默 寂然 簫涼 悲楚 凄凄慘慘戚戚
    再回首已成空閱讀 251評論 0 0