日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

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

 行者花雕 2022-04-20

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

 

it-information technology的簡(jiǎn)稱(chēng),中文是信息機(jī)技術(shù),信息其實(shí)就是數(shù)據(jù)。

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

1)表達(dá)

2)存取

3)計(jì)算

4)安全

當(dāng)然還是其它方面!

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

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

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

2)并發(fā)

3)性能

4) 編程

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

6)備份/恢復(fù)

7)高可靠

8)兼容

等等,每一個(gè)都是可以深入研究的!

 

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

 

對(duì)于大部分的程序員來(lái)說(shuō),必須和數(shù)據(jù)庫(kù)做交互,無(wú)論是后端還是前端

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

1)安裝

2)備份恢復(fù)

3)編程(sql)

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

 

一、安裝

程序員的最基本要求,不會(huì)裝那么就沒(méi)有什么可說(shuō)!具體略,要強(qiáng)調(diào)的是,應(yīng)該要回安裝各個(gè)操作系統(tǒng),此外會(huì)安裝集群版本!

安裝的基本步驟:

1.確認(rèn)功能范圍

2.確認(rèn)是免費(fèi)還是付費(fèi)

3.下載安裝包

4.安裝

5配置

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

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

二、備份恢復(fù)

      冷備份可不要求,專(zhuān)業(yè)不備份也不要求,但至少要求會(huì)邏輯備份和恢復(fù)!

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

三、編程

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

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

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

3.sql語(yǔ)言

4.sql-iso標(biāo)準(zhǔn)和不同廠家的實(shí)現(xiàn)

 

1,2,3是必須掌握的,缺少一個(gè),都難于編寫(xiě)合格的sql語(yǔ)句!

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

 

本文就Mysql8.x和oracle 12c的進(jìn)行舉例!

 

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

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

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

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

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

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

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

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

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

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

 

 

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

數(shù)據(jù)怎么存,是相當(dāng)復(fù)雜的事情,因?yàn)檫@影響了許多方面:

1.性能

2.安全和備份

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

例如:oracle12c

 

 

 

mysql-innodb

 

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

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

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

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

 

看看mysql和oracle的create table語(yǔ)句,就可以i體會(huì)到存儲(chǔ)是重要的,需要學(xué)習(xí)的內(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

把這個(gè)命令貼一些出來(lái),估計(jì)看了頭皮一緊:

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)

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

3.3 sql語(yǔ)句

   標(biāo)準(zhǔn)sql語(yǔ)句,尤其是ddl,dml語(yǔ)句談不上復(fù)雜,準(zhǔn)確說(shuō),應(yīng)該是相對(duì)很簡(jiǎn)單的。

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

  

總結(jié)

   要寫(xiě)好sql語(yǔ)句,需要長(zhǎng)時(shí)間訓(xùn)練,從數(shù)據(jù)庫(kù)基礎(chǔ)開(kāi)始,到熟練寫(xiě)出每個(gè)sql語(yǔ)句!

   學(xué)習(xí)之后,寫(xiě)不出每個(gè)sql語(yǔ)句,屬于資質(zhì)問(wèn)題;寫(xiě)不出好的sql語(yǔ)句,可能是學(xué)習(xí)不夠,也可能是資質(zhì)問(wèn)題!

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多