1. 程式人生 > >MySQL資料分析-(12)表操作補充:欄位屬性

MySQL資料分析-(12)表操作補充:欄位屬性

大家好,我是jacky朱元祿,很高興繼續跟大家學習MySQL資料分析實戰,今天我們分享的主題是表操作補充之欄位屬性,依照慣例第一部分,jacky先跟大家分享本課時的學習邏輯

(一)學習邏輯

我們說建立表之前我們先要搭建表的結構,在這之後我們才能建立表是不是!那麼大家思考下,為什麼要這樣,就是為什麼非要先搭建表結構,為什麼我們要有這個階段,我們直接建立表就是create table 加表名,其餘什麼也不加我們說行不行 ?我們可以在MySQL中試一試;

create table 表名(id);
-- 會報錯,報語法錯誤,我們給id列加上數字型別試一試
create table
表名(id int);
--顯示建立成功了,那是不是說明,表的結構裡就只有資料型別,沒有其他的的結構了,我們看下新建立的這張表的結構, desc 表名
  • 我們在表的結構裡看到,表結構裡除了我們設定的資料型別int,是不是還有其他的結構屬性,NULL和DEFAULT是不是都有相應的屬性設定,我們建立表的時候,並沒有設定它們,在表的結構中還有它們,那我們就能得出兩個結論:一方面說明表結構中還有一些屬性即使在建立表中不設定,系統會預設給你一個預設的屬性是不是,也就是說明這些屬性對於表的建立來說是必要的;還有一個結論,剛才在MySQL中的舉例,我們可以看到,建立表時其他的屬性都可以不設定,是不是資料型別不設定是不行的,所以我們說決定表結構的主要規則,也就是我們後面jacky會給大家總結的,決定表結構的主要約束是資料型別,上次課jacky已經講過了,但光有資料型別,我們說還要有一些附加約束,就是我們這次課要講的欄位屬性,也叫列屬性,也叫表屬性,我們看其他資料這幾個概念說的都是一個意思,那麼欄位屬性包括什麼呢?

  • 欄位屬性包括:

    • 無符號的設定;

    • 自動補全到零

    • 自動增量的設定;

    • 預設值的設定

    • 其他的特殊設定

好,上面就是本小節的一個學習邏輯線,下面我們開始具體學習欄位屬性都有什麼,它是幹什麼用的,怎麼用的

(二)欄位屬性

  • (1)unsigned

    • 這個屬性是無符號的意思,就是全是整數沒有負數,它的作用是如果我們存放的資料都是正整數,它可以讓空間增加一倍,咱們建立數值的時候,一般是無符號的,除非你要存負數;

    • 那這個unsigned屬性是怎麼讓空間增加一倍的?

      • 我們前面在資料型別中說過int的儲存數值的範圍是-2147483648 ~2147483647,那麼如果如果我們給int設定一個unsigned屬性,那麼int的儲存數值的範圍就是無符號的,它的範圍就變成了0 ~ 4294967295,像我們id這樣的欄位,在實際工作中是不可能插入負數的,我們就要用unsigned這個屬性來修飾,這樣會使空間增加一倍;

      • 對於這個屬性,jacky還有一點強調,就是unsigned這個屬性只能用在數值型欄位中,這個很簡單,其他的數值型別比如說字串和日期型別不分什麼無不無符號,它們不是整數;

create table user6(id int unsigned);
-- 這樣建立後,我們就不能插入負值
insert into user6(id) values(99);
select * from user6;
--如果我們插入的值是-99呢,mysql會按照我們插入的極限值顯示
--那-99的極限值就是0,我們看一下,那這樣空間就漲了一倍

這就是我們說第一個欄位屬性,無符號的設定;

  • (2)zerofill

    • 第二個屬性是自動補全,也叫零填充,SQL語句是zerofill,這個零填充也只能用在數值型欄位,零填充的前提一定是unsigned屬性,這個屬性的作用就是前導0,前導0什麼意思呢,比如說我們前面要講的int(3),我們給某列的表屬性設定為整型,後面加上括號3,我們在這列填加數字1,我們加上zerofill這個屬性的話,會自動補零為001,不足3位的用零填充;
  • (3)null

    • null表示空,非字串,這一列的值允許為null

    • not null 不可空

  • (4)default

    • 預設值,建立列時可以指定預設值,當插入資料時如果沒有主動設定,則自動新增預設值;

      • create table demo1(nid int not null defalut1,num int null)

        • defalut 1 就是預設值等於1,不輸入值的時候,預設值等於1;
  • (5)auto_increment

    • 自增的SQL語句是auto_increment,設定這個屬性的型別也只能是整數,在工作中,我們一般都給id列設定為自增,別人也沒人用,自增是什麼意思呢?顧名思義,就是資料每增加一條就會在原有的欄位值上自動加1,這是它的特性,而且它的欄位值是不允許重複的,這裡jacky強調,要設定自增屬性,必須是索引,否則就會報錯;關於索引後面jacky會詳細的講,這裡大家
      只要知道自增列是唯一列,一般都是主鍵索引就足夠了,我們在MySQL中看一下,

我們之前在user表裡插資料的時候,是不是有3類,id、名字和密碼,咱們id是不是手輸進去的,1、2、3、4、5等等,那麼我們思考一下,我們怎麼做更合適,應該理想的狀態是,我們不要管這個id才對,我們每輸入一條資料,我們的id自增了,但是id不會自己自增的,所以我們就要在表裡加上自增的屬性

create table demo1(
    nid int not null auto_increment primary key,
    num int null)

在建立表的時候,我們的SQL語句里加上auto_increment primary key,就是表示列自增

@資料分析-jacky

@資料分析-jacky

@資料分析-jacky

表的字符集

一般來說,庫的字符集是什麼,表的字符集就是什麼,當然MySQL伺服器還有一個字符集,那麼這個邏輯就是伺服器的字符集是什麼,庫的字符集就是什麼,庫的字符集是什麼,表的字符集就跟著是什麼;

那怎麼檢視,我們當前狀態下這些字符集都是什麼呢?

\s

@資料分析-jacky

用latin1,沒有好處,只有壞處。
MySQL開發者為瑞典MySQL AB公司,所以預設編碼為latin1。
早期版本的編碼都是latin1, latin1編碼可以認為無字元格式的編碼,什麼字元都可以存,亂瑪也可以存,至於裡面是什麼內容,只能靠客戶端的程式來解釋,這樣你的程式裡就莫名奇妙的要多了一個識別和轉換編碼的步驟。程式複雜度冤枉的增加了,效能也受影響。而且,在latin1編碼中比較和排序都有問題。

為了確保資料的完整性和一致性,我們在建立表的時候,我們需要指定欄位型別之外,我們還需要為欄位指定一些屬性,而且我們需要使用一些約束條件,比如說主鍵索引,外來鍵索引,唯一索引等等,

  • 表裡面每一個的索引有兩種:

    • 主鍵索引

    • 普通索引

說明:每個表只能有一個主鍵索引,但是每一個列都可以是普通索引,主鍵索引比普通索引的速度更快,為什麼要加索引?加了索引以後,可以讓我們的檢索速度更快;所以我們在實際工作中查詢資料的時候,sql語句總會是where id等於幾,where id 大於幾,是不是,where什麼意思,where是一個條件,當id大於10的時候,為什麼這個where的條件語句總是跟著id來用呢?因為id是主鍵索引,這樣的查詢速度是最快的;

相關推薦

MySQL資料分析12操作補充屬性

大家好,我是jacky朱元祿,很高興繼續跟大家學習MySQL資料分析實戰,今天我們分享的主題是表操作補充之欄位屬性,依照慣例第一部分,jacky先跟大家分享本課時的學習邏輯 (一)學習邏輯

MySQL資料分析2資料庫的底層邏輯

(一) 資料庫存在的邏輯 1.案例開篇-大部分公司對於資料和數字的管理都是低效率的 我們要學習資料庫,就必須要搞清楚資料庫是在什麼樣的情景下發明並流行的?學習新知識就要搞清楚每個知識點的來

mysql中一張居民按年齡段查詢數據

log clas rom count 年齡段 group by 中一 span OS 知識點: 用mysql,按年齡段查詢一張居民的數據(各年齡段居民的個數) 1.如:查詢resident(居民表),按照各年齡段,統計人數 2.mysql語句如下: sele

Mysql數據庫記錄的檢索

別名 from 參數 生成 ice arc 指定字段 則表達式 基本查詢   一、基本查詢語句   二、單表查詢   1.查詢所有字段 mysql> SELECT * FROM tb_bookinfo; +----------+-----------+-------

野生前端的資料結構練習12貪心演算法

參考程式碼可見:https://github.com/dashnowords/blogs/tree/master/Structure/GreedyAlogrithm 一.貪心演算法 貪心演算法屬於比較簡單的演算法,它總是會選擇當下最優解,而不去考慮單次遞迴時是否會對未來造成影響,也就是說不考

電商大資料分析平臺nginx配置及flume讀取日誌資訊

一、nginx配置 在本專案中nginx的作用只是接收客戶端傳送的事件,並將相應的session寫入日誌檔案中,所以配置較為簡單,只需要配置寫入的日誌檔案和寫入的格式 1.地址配置 server { listen

R語言運用例項——關於2017年熱播劇各項資料分析統計作業

首先將拿到的excel檔案另存為csv格式,以便匯入Rstudio。 開啟Rstudio,輸入命令 table<-data.frame(read.csv(“C:\Users\asus\Desktop\soapdata.csv”)) 建立一個名為tabl

我們為什麼要學習大資料分析

在前面我們給大家說了為什麼要學習大資料分析的原因,比如大資料分析能夠增加從業人員的工資、可以獲得更多的就業機會、大資料分析滲透的領域越來越廣泛等。當然我們學習大資料分析的原因不只是這些,還有很多其他的原因。不過估計大家一時半會想不到更多的學習大資料分析的理由或原因吧?下面就由小編接著給大家講一下這個問題,

產品經理怎麼用好資料分析

在上一篇文章中我們為大家介紹了產品經理為什麼要使用資料分析來工作以及資料分析工作需要的技能,那麼大家知道不知道產品經理需要分析哪些資料呢,資料分析的工具是什麼呢,如何進行資料分析呢?下面就由小編為大家解答一下這些問題。 首先給大家說一下產品經理需要分析哪些資料?產品經理需要分析的資料有很多,就是基礎資料

Python資料分析基礎——NumPy基礎

NumPy最重要的特點就是其N維陣列物件(即ndarray),該物件是一個快速而靈活的大資料集容器。 陣列建立函式 函式 說明 array 將輸入資料(列表、元組、陣列或其他序列型別)轉換為ndarray。 asarray 將輸入轉換為ndarray ara

如何做好資料分析報告

資料分析報告在資料分析工作中是一個重要的工作環節,所以我們在做資料分析報告的時候要注意資料分析的框架構建應用,這樣方便我們能夠做出更好的資料分析報告。在前面的文章中我們給大家介紹了分析思路與框架以及分析思路與框架的作用原則,在這篇文章中我們給大家介紹幾個比較經典的資料分析架構,希望這篇文章能夠給大家帶來幫

京東金融資料分析案例

任務 5 利用 spark streaming 實時分析每個頁面點選次數和不同年齡段消費總金額 步驟:編寫 Kafka produer 程式讀取hdfs上的檔案每隔一段時間產生資料,然後使用spark streaming讀取kafka中的資料進行分析

如何做到資料分析報告

在上一篇文章中我們為大家介紹了很多的圖表展現的知識,其中我們介紹了很多的圖表,大家在進行資料分析工作的時候除了注意上面的內容還需要注意資料與結論和報告的排版,這些都是比較重要的知識。下面我們就為大家介紹一下這些知識,希望這篇文章能夠給大家帶來幫助。 首先給大家介紹一下資料與結論。這

如何做到資料分析報告

在上一篇文章中我們給大家介紹了資料分析報告的要求,現在我們在這篇文章中給大家介紹一下定量圖表的製作以及繪製方法,大家在進行資料分析工作的時候一定要注意這些細節,這樣才能夠做好資料分析報告。下面我們就來給大家解答一下這個內容。 首先我們給大家介紹一下基本的圖表,基礎圖表有柱形圖、折線

如何做到資料分析報告

我們在上一篇文章中給大家介紹了圖表的展現的知識,在資料分析中我們在做好資料展現是一個非常重要的事情,由此可以看出,資料展現的知識都是比較重要的。在這一篇文章中我們給大家介紹一下專業圖表的特點、圖表的製作原則。希望這篇文章能夠給大家帶來幫助。 我們在做資料分析的時候一定要有明確的觀點

如何做好資料分析報告

我們在上一篇文章中給大家說了很多的經典的資料分析框架。比如說5W2H分析法、PEST分析法、AIDMA營銷分析法、4P營銷分析法。有了這些方法還是需要很多的知識,比如圖表展現的知識,圖表展現的知識還是有很多的,下面就由小編為大家解答一下這個問題。 我們為什麼要做圖表展現呢?通常來說

如何做好資料分析報告

我們在前面的文章中給大家介紹了資料分析報告概況、資料分析報告的型別、資料分析報告的特點與結構。但是隻是知道這些知識是不夠的,我們在進行撰寫資料分析報告的時候還需要做好一些其他工作的。今天我們給大家詳細講解一下資料分析的分析思路和框架。下面就由小編為大家解答一下這個問題,希望能夠給大家帶

如何做好資料分析報告

大家都知道,我們分析資料的時候,還需要對資料分析做出報告的。做資料分析報告也是一個技術活,那麼大家知道不知道資料分析報告需要做什麼呢?我們在這篇文章中給大家介紹了資料分析報告的概況、資料分析報告的特點和結構、資料分析報告的分析思路與框架、資料分析報告的分析框架構建應用、資料分析報告的定

怎麼撰寫一份優秀的資料分析報告

我們在進行資料分析工作的時候還是需要做好資料分析報告的。一般來說,寫一份優秀的資料分析報告是一件重要的事情,在進行撰寫資料分析報告的時候需要注意很多的注意事項,那麼怎麼做好資料分析報告呢?下面就由小編為大家解答一下這個問題。 首先我們需要知道我們為什麼要撰寫資料分析報告呢?我們進行撰寫資料分析報告的時候

怎麼撰寫一份優秀的資料分析報告

在前面的文章中我們給大家介紹了資料分析報告中的日常資料報告的特點,分別是進度性、規範性、時效性。知道了資料分析報告的型別以後我們就開始瞭解一下資料分析報告的結構了,那麼資料分析報告的結構是什麼呢?下面就由小編為大家解答一下這個問題。 大家都知道,不管是什麼文體都是有結構的,資料分析報告有特定的結構,但是