久久精品精选,精品九九视频,www久久只有这里有精品,亚洲熟女乱色综合一区
    分享

    SQL基礎入門:第3課:創建表及常見的數據類型

     L羅樂 2019-02-06

    本節要點

    再次從EXCEL表格說起
    創建表
    常見的數據類型

    再次從EXCEL表格說起

    因為創建表相關的知識點還是比較多的,所以關于創建表,我打算分兩節課來講。本節課主要講解創建表的基本語法以及表中字段的常見數據類型。

    在講解創建表的語法之前,我們先再次從上節課的EXCEL表格說起。不知大家還記不記得上節課講到的深圳市第一中學的EXCEL,里面有三個SHEET頁,分別是學校、老師、學生。

    在EXCEL文件與數據庫的對比中,EXCEL就相當于一個數據庫,而一個SHEET頁,就相當于一個數據庫表,SHEET頁里的表頭就對應于數據庫表的列。

    在上節課中,我們使用MySQL-Front客戶端工具創建了一個mysqlstudy的數據庫,并且在數據庫里創建了一張老師表(teacher)。這是創建數據庫和表的一種方式。

    還有另外一種方式來創建表,就是我們本節課要講解的SQL語句。

    創建表

    使用SQL語句創建表,需要使用數據庫的關鍵字CREATE TABLE。關鍵字也叫保留字,是不能隨意使用的,不能作為對象名,比如不能作為表名、字段名等。

    創建一個SHEET頁時,我們需要指定SHEET頁的名稱、SHEET頁里表格的表頭,以及每一列需要存儲的數字格式。

    創建一張表也是類似的,我們需要指定表名、字段名、字段的數據類型。比如下面這個語句創建了一張老師表(表名為teacher),它包含三個字段,分別是teacher_id、teacher_name、gender,字段類型分別為varchar(20)、varchar(50)、varchar(10)。

    1. CREATE TABLE teacher

    2. (

    3. teacher_id VARCHAR(20),

    4. teacher_name VARCHAR(50),

    5. gender VARCHAR(10)

    6. );

    這里面有一些需要注意的地方,大家一定要記住。

    表名和字段名不能使用中文(標點符號也不能使用中文的);(一般為字母開頭,字母、數字、下劃線組成的字符串)
    CREATE TABLE關鍵字后跟上表名,字段名在括號中列出且以逗號分隔;
    語句最后以分號結尾;
    不區分大小寫,但最好關鍵字都大寫;按一定的規則縮進;
    每個字段都需要設置數據類型;

    對于第1條,常見的表名命名方式有:t_teacher、T_Teacher、tech。千萬不要使用一些稀奇古怪的字符作為表名。

    上面有講到,每個字段都需要設置數據類型。那什么是數據類型呢?他有什么作用呢?

    常見的數據類型

    數據類型,其實就是數據在數據庫里保存的格式,它決定了對應的字段可以存儲什么格式的數據,以及如何存儲這些數據。

    常見的數據類型有以下幾類:

    字符串類
    數值類
    日期和時間類
    二進制類

    字符串類

    字符串類,是最常見的數據類型。基本可以說所有我們看到的符號,都是字符串。所以,如果說沒有特殊要求,所有字段都設置為字符串,也是沒問題的。

    舉一些例子,比如常見的學生的姓名、身份證、家庭地址、電話號碼,使用的電腦型號,以及購買的書名等。這些都是字符串。

    而字符串,一般來說,又分為兩種。一種是定長字符串,另一種是不定長字符串。

    定長字符串:長度固定的字符串類型,其長度是在創建表時指定的。定義時使用關鍵字CHAR。

    比如郵政編碼‘510623’,是6位的字符。如果向一個6位的定長字符串類型的字段,只插入2位字符,則數據庫默認會在2個字符末尾補4個空格,以補足6位。

    不定長字符串:長度不固定的字符串類型,創建表時指定一個最大長度,或不指定長度。定義時使用關鍵字VARCHAR。

    比如姓名,有2位、3位、4位甚至更長的。比如:‘馮鞏’、‘周杰倫’、‘倉央嘉措’、‘庫爾班-熱合曼’。

    關于定長字符串和不定長字符串的區別,看下下面兩張圖,可能會更直觀一些。

      

    定長字符串就像左邊的膠全板一樣,每一張的大小尺寸都一樣(不一樣的話,會使用木屑等補足),搬運起來也比較方便。而不定長字符串,就像右邊的樹桿原木,長度粗細比較隨意,堆疊在一起來,就會產生很多縫隙,也不太好搬運。

    所以,定長字符串具有處理性能高、產生較少的磁盤存儲碎片的優點,但占用的存儲可能會多些。而不定長字符串,占用的存儲較少,但處理性能低,會產生較多的存儲碎片。

    在創建表時,具體使用哪種類型,還要看具體場景而定。不過隨著數據庫發展,存儲碎片的產生,對數據庫的性能影響也越來越小,所以使用VARCHAR也影響不大。

    數值類

    數值類數據類型也是一種非常常見的數據類型。在生活中也非常常見,基本可以說,所有能夠度量的數值,都可以使用數值類數據類型來儲存。比如說,像年齡、身高、厚度、速度、利率、人數等,都可以理解為數值。

    而數值數據類型又分為兩種。

    整數數值:不帶小數點的數值。比如說,中國有4個直轄市;2016年深圳市常住人口有11988400人;或者說某人今年的年齡是80歲等待。常見的保存整數數值的字段類型有SMALLINT、INT、BIGINT、DECIMAL(m)。

    小數數值:帶小數點的數值。比如說,珠穆朗瑪峰的高度為8844.43米;銀行一年期定期存款利率為2.75%等。常見的保存小數數值的字段類型有FLOAT、DOUBLE、DECIMAL(m,d)。

    日期和時間類

    第三種是日期和時間類型,比如學校要開學了,規定的報名日期9月1日;我們國家的國慶節10月1日;公司的下班時間17點30分;沿著操場跑一圈,使用秒表記錄的時間4分13秒;爬山時,從開始上山到最后下山中間經過的時間間隔5小時25分鐘等,

    而日期和時間類的數據類型,分為三種。

    日期類型:只包含年、月、日的日期;比如,某人的出生日期為1990年1月3日;定義時使用關鍵字DATE。

    時間類型:包含時、分、秒、毫秒的時間。比如,上班時間為08:30:00。定義時使用關鍵字TIME。

    日期 時間類型:包含年、月、日、時、分、秒、毫秒的時間戳類型。比如,某人從銀行ATM機上取出1000元現金的時間是2017年9月2日12時35分11秒734毫秒。定義時使用關鍵字DATETIME、TIMESTAMP。

    二進制數據類型

    最后簡單說一下二進制數據類型。二進制我們都知道,是0和1組成的一串數字。像我們常見的圖片、視頻、音頻、文檔等,底層都是使用二進制保存的。所以打開這類文件時,才需要圖片瀏覽軟件、播放器、OFFICE軟件等。

    有時候,我們也想把這類數據存入數據庫,這時就需要使用到二進制數據類型。在MySQL數據庫,一般使用BLOB和TEXT類型來定義二進制數據類型的字段。

    但因為數據庫處理這類數據效率并不高,而且數據量一大,會極大的影響數據庫的處理效率,所以一般都不建議在數據庫中使用這類數據類型。

    設置字段默認值

    上面我們講了,在創建一張表時,需要為表中的字段定義數據類型。這樣在向表中插入數據時,就需要插入與對應位置字段的字段類型一致的數據,否則是會報錯的。

    但當我們插入數據的時候,并不想或并不需要對某個字段賦值時,如果字段有設置默認值,則會以默認值來填充該字段的值而不會導致錯誤;比如,在網上下訂單時,對于下訂單的日期字段,可以使用數據庫的系統變量“當前日期”來默認賦值,這樣就不需要在向訂單表插入訂單數據時,單獨再對下訂單的日期字段進行賦值。

    另外,在向表中插入數據的時候,如果某個字段并沒有指定賦值為多少,而此時該字段也沒有賦默認值,那么就會向該字段插入NULL值。而NULL值的使用效率并不高,并且使用起來也比較麻煩。

    所以,為避免字段的值被插入NULL值,一般在表創建時,都會為字段指定默認值。

    為字段指定默認值時,使用關鍵字DEFAULT。如下所示:

    1. CREATE TABLE teacher

    2. (

    3. teacher_id VARCHAR(20) DEFAULT '',

    4. teacher_name VARCHAR(50) DEFAULT '',

    5. gender VARCHAR(10) DEFAULT ''

    6. );

    設置默認值時,有以下幾點需要注意:

    表中所有的字段都可以設置默認值;
    默認值的數據類型必須與字段保持一致;(不一致時,數據庫雖然有時也會默認做隱式類型轉換,但并不推薦這樣做。一方面是這樣做并不規范,另一方面是這樣做可能會導致未知的錯誤)
    除主鍵字段外,建議其他所有字段都設置默認值;

    那一般根據什么來決定字段應該賦什么默認值呢?

    對于字符型字段來說,一般賦值為空字符串(也就是’’),或者具有某種業務含義的值。比如,對于性別字段,有三個取值,F-女,M-男,N-未知,當向這個性別字段插入數據時,可能并不知道性別是男還是女,那這時,就可以定義默認值為N-未知,代表我們并不知道這條數據記錄的值到底是多少。

    對于數值型字段來說,一般賦值為0,或者具有某種業務含義的值,或者該字段所表示的業務含義的最大值或極大值。

    對于日期和時間型呢,常見的賦值有系統當前日期CURRENT_DATE、系統當前時間CURRENT_TIME、系統當前時間戳CURRENT_TIMESTAMP及NOW()等。

    總的來說,我們都可以根據字段的業務含義來為字段賦默認值。

    下面是創建老師表、班級表、學生表的示例語句:

    1. CREATE TABLE teacher

    2. (

    3. teacher_id varchar(50) not null,

    4. teacher_name varchar(100) not null default '' ,

    5. gender varchar(10) not null default 'F',

    6. );

    7. CREATE TABLE class

    8. (

    9. class_id varchar(50) not null,

    10. class_name varchar(100) not null default ''

    11. );

    12. CREATE TABLE student

    13. (

    14. student_id varchar(50) not null,

    15. student_name varchar(100) not null default '',

    16. gender varchar(10) not null default '',

    17. age integer not null default 0 ,

    18. class_id varchar(50) not null default ''

    19. );

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

      0條評論

      發表

      請遵守用戶 評論公約

      類似文章 更多

      主站蜘蛛池模板: 成人欧美一区二区三区在线观看| 久久天天躁夜夜躁狠狠| 日日橹狠狠爱欧美视频| 日韩夜夜高潮夜夜爽无码| 亚洲色大成网站WWW久久| 成 人 色 网 站免费观看| 亚洲av无码乱码在线观看野外 | 日夜啪啪一区二区三区| 另类国产精品一区二区| 亚洲日韩精品无码av海量| 色偷偷人人澡久久超碰97| 国产丰满美女A级毛片| 久久精品免视看国产成人| 一区二区三区无码免费看| 国产午精品午夜福利757视频播放| 野花社区视频在线观看 | 亚洲AV无码成H人动漫无遮挡| 日本亲近相奷中文字幕| 久9视频这里只有精品试看| 亚洲avav天堂av在线网爱情| 在线A毛片免费视频观看| 亚洲AV中文无码字幕色最新 | 亚洲高清揄拍自拍| 国产成人精彩在线视频| 亚洲精品国自产拍在线观看| 军人妓女院BD高清片| 亚洲人妻精品中文字幕| 中文字幕在线观看| 黑人巨大AV在线播放无码 | 成A人片亚洲日本久久| 国色天香成人一区二区| 99riav国产精品视频| 少妇人妻在线视频| 国产亚洲精品VA片在线播放| 亚洲国产精品综合久久20| 国产综合久久亚洲综合| 波多野结系列18部无码观看AV| 亚洲av无码之国产精品网址蜜芽| 少妇人妻偷人精品视蜜桃| 精品视频在线观看免费观看| 国产中文字幕精品在线|