乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      談?wù)剶?shù)據(jù)庫sql編寫

       行者花雕 2022-04-20

      本文主要給初學者關(guān)于關(guān)系數(shù)庫的一個浮光掠影式的介紹,如果想深入理解,必須對于下文提到的每個內(nèi)容單獨深入學習!

       

      it-information technology的簡稱,中文是信息機技術(shù),信息其實就是數(shù)據(jù)。

      要處理數(shù)據(jù),則至少涉及到幾個方面:

      1)表達

      2)存取

      3)計算

      4)安全

      當然還是其它方面!

      其中第二點就是數(shù)據(jù)庫的核心任務(wù)。

      一個工業(yè)級的產(chǎn)品遠遠不是這個,還有:

      1)網(wǎng)絡(luò)

      2)并發(fā)

      3)性能

      4) 編程

      5)安全(包括數(shù)據(jù)加密+和存取權(quán)限等)

      6)備份/恢復

      7)高可靠

      8)兼容

      等等,每一個都是可以深入研究的!

       

      隨著數(shù)據(jù)庫的發(fā)展,數(shù)據(jù)庫越來越自治(優(yōu)化、高可靠等等),對于普通的dba而言,比以前輕松了不少。

       

      對于大部分的程序員來說,必須和數(shù)據(jù)庫做交互,無論是后端還是前端

      本文闡述的是傳統(tǒng)關(guān)系數(shù)據(jù)庫,重點闡述幾點:

      1)安裝

      2)備份恢復

      3)編程(sql)

      這些都是非?;A(chǔ)的,屬于程序員必須掌握的基本技能!

       

      一、安裝

      程序員的最基本要求,不會裝那么就沒有什么可說!具體略,要強調(diào)的是,應該要回安裝各個操作系統(tǒng),此外會安裝集群版本!

      安裝的基本步驟:

      1.確認功能范圍

      2.確認是免費還是付費

      3.下載安裝包

      4.安裝

      5配置

      6.創(chuàng)建有關(guān)管理員賬號

      7.配置網(wǎng)絡(luò)和安全

      二、備份恢復

            冷備份可不要求,專業(yè)不備份也不要求,但至少要求會邏輯備份和恢復!

            oracle,要懂得expdp/impdp,mysql要懂得mysqldump,sqlserver要懂得bcp等。

      三、編程

      要熟悉sql語句,則必須了解幾個基本的內(nèi)容:

      1.關(guān)系數(shù)據(jù)庫概念

      2.數(shù)據(jù)存儲原理,不同rdbms的存儲方式不一樣,所以學新的一種,就必須了解特定一種的存儲方式

      3.sql語言

      4.sql-iso標準和不同廠家的實現(xiàn)

       

      1,2,3是必須掌握的,缺少一個,都難于編寫合格的sql語句!

      此外,許多概念也需要掌握:范式、索引、分區(qū)、視圖、元數(shù)據(jù)、鎖、緩存、基本的算法(FIFO,LRU等等)、分布式數(shù)據(jù)庫等等。

       

      本文就Mysql8.x和oracle 12c的進行舉例!

       

      3.1 關(guān)系數(shù)據(jù)庫概念

      重點是“關(guān)系”,或者可以理解為表格,可以有多個列和行。

      不同于kv模式數(shù)據(jù)庫,也不同于基于hdfs的大數(shù)據(jù),更不同于現(xiàn)在所謂的區(qū)塊鏈數(shù)據(jù)庫!

      關(guān)系數(shù)據(jù)庫關(guān)鍵要滿足acid:

      a:原子性,事務(wù)要么完成,要么不完成

      c:一致性,關(guān)聯(lián)數(shù)據(jù)應該符合商業(yè)邏輯,事務(wù)前后必須保持數(shù)據(jù)的完整性。理解上可以參考能量守恒定律,個人財務(wù)收支!

      i:隔離性,一個事務(wù)不影響另外一個事務(wù),可以簡單理解事務(wù)互不影響

      d:持久性,就是數(shù)據(jù)據(jù)要落地,并存儲在特定介質(zhì)上,不能總是帶電狀態(tài)下才有!

      ad容易理解,但ic不那么容易,需要閱讀較多文檔才能深刻體會!

      注意:關(guān)系數(shù)據(jù)庫都遵循acid,但不同產(chǎn)品的實現(xiàn)方式可以不一,表現(xiàn)上也有差異!

       

       

      3.2數(shù)據(jù)存儲

      數(shù)據(jù)怎么存,是相當復雜的事情,因為這影響了許多方面:

      1.性能

      2.安全和備份

      3.數(shù)據(jù)表現(xiàn)

      例如:oracle12c

       

       

       

      mysql-innodb

       

      其實存儲和性能的關(guān)系,可以聯(lián)想圖書館找書,城市規(guī)劃等場景,這就是我們常說的“大道相通",或者是理論來自于實踐!

      書本怎么放才能更快找到,更節(jié)省空間,更加安全等等?

      城市交通應該怎么規(guī)劃,才能達到最大的容量,同時又能夠有益于大部分人?

      數(shù)據(jù)庫物理和邏輯存儲的設(shè)計對于提高系統(tǒng)性能是相當之關(guān)鍵,是相對比較復雜的。

       

      看看mysql和oracle的create table語句,就可以i體會到存儲是重要的,需要學習的內(nèi)容是很多的。

      oracle:https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/CREATE-TABLE.html#GUID-F9CE0CC3-13AE-4744-A43C-EAC7A71AAAB6

      mysql: https://dev./doc/refman/8.0/en/create-table.html

      把這個命令貼一些出來,估計看了頭皮一緊:

      mysql:

      CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
          (create_definition,...)
          [table_options]
          [partition_options]
      
      CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
          [(create_definition,...)]
          [table_options]
          [partition_options]
          [IGNORE | REPLACE]
          [AS] query_expression
      
      CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
          { LIKE old_tbl_name | (LIKE old_tbl_name) }
      
      create_definition:
          col_name column_definition
        | {INDEX|KEY} [index_name] [index_type] (key_part,...)
            [index_option] ...
        | {FULLTEXT|SPATIAL} [INDEX|KEY] [index_name] (key_part,...)
            [index_option] ...
        | [CONSTRAINT [symbol]] PRIMARY KEY
            [index_type] (key_part,...)
            [index_option] ...
        | [CONSTRAINT [symbol]] UNIQUE [INDEX|KEY]
            [index_name] [index_type] (key_part,...)
            [index_option] ...
        | [CONSTRAINT [symbol]] FOREIGN KEY
            [index_name] (col_name,...)
            reference_definition
        | check_constraint_definition
      
      column_definition:
          data_type [NOT NULL | NULL] [DEFAULT {literal | (expr)} ]
            [AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY]
            [COMMENT 'string']
            [COLLATE collation_name]
            [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
            [STORAGE {DISK|MEMORY}]
            [reference_definition]
            [check_constraint_definition]
        | data_type
            [COLLATE collation_name]
            [GENERATED ALWAYS] AS (expr)
            [VIRTUAL | STORED] [NOT NULL | NULL]
            [UNIQUE [KEY]] [[PRIMARY] KEY]
            [COMMENT 'string']
            [reference_definition]
            [check_constraint_definition]
      
      data_type:
          (see Chapter 11, Data Types)
      
      key_part: {col_name [(length)] | (expr)} [ASC | DESC]
      
      index_type:
          USING {BTREE | HASH}
      
      index_option:
          KEY_BLOCK_SIZE [=] value
        | index_type
        | WITH PARSER parser_name
        | COMMENT 'string'
        | {VISIBLE | INVISIBLE}
      
      check_constraint_definition:
          [CONSTRAINT [symbol]] CHECK (expr) [[NOT] ENFORCED]
      
      reference_definition:
          REFERENCES tbl_name (key_part,...)
            [MATCH FULL | MATCH PARTIAL | MATCH SIMPLE]
            [ON DELETE reference_option]
            [ON UPDATE reference_option]
      
      reference_option:
          RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT
      
      table_options:
          table_option [[,] table_option] ...
      
      table_option:
          AUTO_INCREMENT [=] value
        | AVG_ROW_LENGTH [=] value
        | [DEFAULT] CHARACTER SET [=] charset_name
        | CHECKSUM [=] {0 | 1}
        | [DEFAULT] COLLATE [=] collation_name
        | COMMENT [=] 'string'
        | COMPRESSION [=] {'ZLIB'|'LZ4'|'NONE'}
        | CONNECTION [=] 'connect_string'
        | {DATA|INDEX} DIRECTORY [=] 'absolute path to directory'
        | DELAY_KEY_WRITE [=] {0 | 1}
        | ENCRYPTION [=] {'Y' | 'N'}
        | ENGINE [=] engine_name
        | INSERT_METHOD [=] { NO | FIRST | LAST }
        | KEY_BLOCK_SIZE [=] value
        | MAX_ROWS [=] value
        | MIN_ROWS [=] value
        | PACK_KEYS [=] {0 | 1 | DEFAULT}
        | PASSWORD [=] 'string'
        | ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT}
        | STATS_AUTO_RECALC [=] {DEFAULT|0|1}
        | STATS_PERSISTENT [=] {DEFAULT|0|1}
        | STATS_SAMPLE_PAGES [=] value
        | TABLESPACE tablespace_name [STORAGE {DISK|MEMORY}]
        | UNION [=] (tbl_name[,tbl_name]...)
      
      partition_options:
          PARTITION BY
              { [LINEAR] HASH(expr)
              | [LINEAR] KEY [ALGORITHM={1|2}] (column_list)
              | RANGE{(expr) | COLUMNS(column_list)}
              | LIST{(expr) | COLUMNS(column_list)} }
          [PARTITIONS num]
          [SUBPARTITION BY
              { [LINEAR] HASH(expr)
              | [LINEAR] KEY [ALGORITHM={1|2}] (column_list) }
            [SUBPARTITIONS num]
          ]
          [(partition_definition [, partition_definition] ...)]
      
      partition_definition:
          PARTITION partition_name
              [VALUES
                  {LESS THAN {(expr | value_list) | MAXVALUE}
                  |
                  IN (value_list)}]
              [[STORAGE] ENGINE [=] engine_name]
              [COMMENT [=] 'string' ]
              [DATA DIRECTORY [=] 'data_dir']
              [INDEX DIRECTORY [=] 'index_dir']
              [MAX_ROWS [=] max_number_of_rows]
              [MIN_ROWS [=] min_number_of_rows]
              [TABLESPACE [=] tablespace_name]
              [(subpartition_definition [, subpartition_definition] ...)]
      
      subpartition_definition:
          SUBPARTITION logical_name
              [[STORAGE] ENGINE [=] engine_name]
              [COMMENT [=] 'string' ]
              [DATA DIRECTORY [=] 'data_dir']
              [INDEX DIRECTORY [=] 'index_dir']
              [MAX_ROWS [=] max_number_of_rows]
              [MIN_ROWS [=] min_number_of_rows]
              [TABLESPACE [=] tablespace_name]
      
      query_expression:
          SELECT ...   (Some valid select or union statement)

        順便說下:如果英文不過關(guān),那么學好計算機還是有一定難度的!畢竟許多資料是英文的!

      3.3 sql語句

         標準sql語句,尤其是ddl,dml語句談不上復雜,準確說,應該是相對很簡單的。

         如果有什么稍微難一些的就是 集合運算,譬如 inner join ,left join,full join,但也很容易理解!

        

      總結(jié)

         要寫好sql語句,需要長時間訓練,從數(shù)據(jù)庫基礎(chǔ)開始,到熟練寫出每個sql語句!

         學習之后,寫不出每個sql語句,屬于資質(zhì)問題;寫不出好的sql語句,可能是學習不夠,也可能是資質(zhì)問題!

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

       

        本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多