MySql概念(二)

来源:http://www.cnblogs.com/MouseCat/archive/2017/09/12/7512040.html
-Advertisement-
Play Games

一、Sql規範? sql是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。 在使用它時,只需要發出“做什麼”的命令,“怎麼做”是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基 ...


一、Sql規範?

  sql是Structured Query Language(結構化查詢語言)的縮寫。SQL是專為資料庫而建立的操作命令集,是一種功能齊全的資料庫語言。

  在使用它時,只需要發出“做什麼”的命令,“怎麼做”是不用使用者考慮的。SQL功能強大、簡單易學、使用方便,已經成為了資料庫操作的基礎,並且現在幾乎所有的資料庫均支持sql。

  <1> 在資料庫系統中,SQL語句不區分大小寫(建議用大寫) 。但字元串常量區分大小寫。建議命令大寫,表名庫名小寫;

  <2> SQL語句可單行或多行書寫,以“;”結尾。關鍵詞不能跨多行或簡寫。

<3> 用空格和縮進來提高語句的可讀性。子句通常位於獨立行,便於編輯,提高可讀性。

1 2 SELECT FROM tb_table             WHERE NAME="YUAN";

<4> 註釋:單行註釋:--

               多行註釋:/*......*/

<5>sql語句可以折行操作

 二、Sql數據類型:

  1、數值類型:

 

   2、無符號類型?

  

=========有符號和無符號tinyint==========
#tinyint預設為有符號
MariaDB [db1]> create table t1(x tinyint); #預設為有符號,即數字前有正負號
MariaDB [db1]> desc t1;
MariaDB [db1]> insert into t1 values
    -> (-129),
    -> (-128),
    -> (127),
    -> (128);
MariaDB [db1]> select * from t1;
+------+
| x    |
+------+
| -128 | #-129存成了-128
| -128 | #有符號,最小值為-128
|  127 | #有符號,最大值127
|  127 | #128存成了127
+------+



#設置無符號tinyint
MariaDB [db1]> create table t2(x tinyint unsigned);
MariaDB [db1]> insert into t2 values
    -> (-1),
    -> (0),
    -> (255),
    -> (256);
MariaDB [db1]> select * from t2;
+------+
| x    |
+------+
|    0 | -1存成了0
|    0 | #無符號,最小值為0
|  255 | #無符號,最大值為255
|  255 | #256存成了255
+------+

  三、顯示長度和存儲位元組?

mysql> create table test(id int);
Query OK, 0 rows affected (0.01 sec)

mysql> desc test;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | int(11) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
row in set (0.00 sec)

  

  四、decimal類型? 

float:浮點型,含位元組數為4,32bit,        數值範圍為-3.4E38~3.4E38(7個有效位)

double:雙精度實型,含位元組數為8,64bit     數值範圍-1.7E308~1.7E308(15個有效位)

decimal:數字型,128                    數值範圍 ±1.0 × E28 to ±7.9 × E28(28個有效位)
decimal的精度比double大,所能儲存的最大數卻比double要小 。decimal是存在精度損失的,只不過較小而已!

  decimal的精度比double大,所能儲存的最大數卻比double要小 。decimal是存在精度損失的,只不過較小而已!

 

   五、BIT

    BIT(M)可以用來存放多位二進位數,M範圍從1~64,如果不寫預設為1位。
      註意:對於位欄位需要使用函數讀取
        bin()顯示為二進位
        hex()顯示為十六進位

 

mysql> create table t(id bit);
Query OK, 0 rows affected (0.03 sec)

mysql> desc t;
+-------+--------+------+-----+---------+-------+
| Field | Type   | Null | Key | Default | Extra |
+-------+--------+------+-----+---------+-------+
| id    | bit(1) | YES  |     | NULL    |       |
+-------+--------+------+-----+---------+-------+
row in set (0.00 sec)

mysql> insert t values (1);
Query OK, 1 row affected (0.00 sec)

mysql> select * from t;
+------+
| id   |
+------+
|      |
+------+
row in set (0.00 sec)

mysql> select bin(id) from t;
+---------+
| bin(id) |
+---------+
| 1       |
+---------+
row in set (0.00 sec)

  

mysql> alter table t modify id bit(5);
Query OK, 1 row affected (0.02 sec)
Records: 1  Duplicates: 0  Warnings: 0

mysql> insert into t values(8);
Query OK, 1 row affected (0.00 sec)

mysql> select bin(id),hex(id) from t;
+---------+---------+
| bin(id) | hex(id) |
+---------+---------+
| 1       | 1       |
| 1000    | 8       |
+---------+---------+
rows in set (0.00 sec)

  

 六、字元串類型?

  存儲字元串:

  CHAR系列 :CHAR VARCHAR
  TEXT系列 : TINYTEXT TEXT MEDIUMTEXT LONGTEXT

  存儲二進位數據:

  BINARY系列: BINARY VARBINARY
  BLOB 系列 :  TINYBLOB BLOB MEDIUMBLOB LONGBLOB 

 

/*
  char (m)
   
      CHAR列的長度固定為創建表時聲明的長度: 0 ~ 255。其中m代表字元串的長度。
      PS: 即使數據小於m長度,也會占用m長度
  varchar(m)
      VARCHAR列中的值為可變長字元串,長度: 0 ~ 65535。其中m代表該數據類型所允許保存的字元串
      的最大長度,只要長度小於該最大值的字元串都可以被保存在該數據類型中。

      註:雖然varchar使用起來較為靈活,但是從整個系統的性能角度來說,char數據類型的處理速度
      更快,有時甚至可以超出varchar處理速度的50%。因此,用戶在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡

  text
      text數據類型用於保存變長的大字元串,可以組多到65535 (2**16 − 1)個字元。

  mediumtext
      A TEXT column with a maximum length of 16,777,215 (2**24 − 1) characters.

  longtext
      A TEXT column with a maximum length of 4,294,967,295 or 4GB (2**32 − 1) 
      characters.

*/

  

在查詢的時候,CHAR列刪除了尾部的空格,而VARCHAR則保留這些空格。
mysql> create table t1(x char(5),y varchar(5));
mysql> insert into t1 values('你瞅啥  ','瞅你妹                 ');
mysql> select x,length(x),y,length(y) from t1;
+--------+-----------+----------+-----------+
| x      | length(x) | y        | length(y) |
+--------+-----------+----------+-----------+
| 你瞅啥 |         9 | 瞅你妹   |        11 |
+--------+-----------+----------+-----------+

  

 七、日期類型

  表示時間值的日期和時間類型為DATETIME、DATE、TIMESTAMP、TIME和YEAR。

  每個時間類型有一個有效值範圍和一個"零"值,當指定不合法的MySQL不能表示的值時使用"零"值。

  (1)、year

    

============year===================

create table t_year(born_year year);
insert into  t_year values (1901),
                           (2155);

select * from t_year;
+-----------+
| born_year |
+-----------+
|      1901 |
|      2155 |
+-----------+
rows in set (0.00 sec)

  (2)、date time datetime

 mysql> select now();
+---------------------+
| now()                                |
+---------------------+
| 2017-08-01 19:38:54          |
+---------------------+
1 row in set (0.00 sec)

   (3)、timestamp

   

/*  
    在實際應用的很多場景中,MySQL的這兩種日期類型都能夠滿足我們的需要,存儲精度都為秒,
    但在某些情況下,會展現出他們各自的優劣。下麵就來總結一下兩種日期類型的區別。

1.DATETIME的日期範圍是1001——9999年,TIMESTAMP的時間範圍是1970——2038年。

2.DATETIME存儲時間與時區無關,TIMESTAMP存儲時間與時區有關,顯示的值也依賴於時區。
  在mysql伺服器,操作系統以及客戶端連接都有時區的設置。

3.DATETIME使用8位元組的存儲空間,TIMESTAMP的存儲空間為4位元組。因此,TIMESTAMP比DATETIME的
  空間利用率更高。

4.DATETIME的預設值為null;TIMESTAMP的欄位預設不為空(not null),預設值為當前時間
 (CURRENT_TIMESTAMP),如果不做特殊處理,並且update語句中沒有指定該列的更新值,則默
  認更新為當前時間。
  
  */

datetime與timestamp

  八、枚舉類型與集合類型

欄位的值只能在給定範圍中選擇,如單選框,多選框
enum 單選	只能在給定的範圍內選一個值,如性別 sex 男male/女female
set 多選 在給定的範圍內可以選擇一個或一個以上的值(愛好1,愛好2,愛好3...)

解析:

  

/*
枚舉類型(enum)
An ENUM column can have a maximum of 65,535 distinct elements. 
(The practical limit is less than 3000.)
示例:
    CREATE TABLE shirts (
        name VARCHAR(40),
        size ENUM('x-small', 'small', 'medium', 'large', 'x-large')
    );
    INSERT INTO shirts (name, size) VALUES ('dress shirt','large'), 
                                            ('t-shirt','medium'),
                                            ('polo shirt','small');

集合類型(set)
A SET column can have a maximum of 64 distinct members.
示例:
    CREATE TABLE myset (col SET('a', 'b', 'c', 'd'));
    INSERT INTO myset (col) VALUES  ('a,d'),
                                    ('d,a'), 
                                    ('a,d,a'), 
                                    ('a,d,d'),
                                    ('d,a,d');
                                    
                                    
*/

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 那麼 Appium 到底是怎麼工作的呢? Appium 官方教程好難啊, 我自己總結了一份超簡單 Appium 教程。 ...
  • TTS語音合成方案分為離線合成方案和線上合成方案,離線合成方案省去網路請求,合成速度更快,節省網路流量,但是合成音的聽起來比較機械,語速和停頓的處理較差一些。如果對合成音的效果要求不是特別高,可以考慮採用iOS自帶的AVSpeechSynthesis框架,免去語音庫的合入,減少安裝包大小。 ...
  • 1、查找表中多餘的重覆記錄,重覆記錄是根據單個欄位(peopleId)來判斷 select * from peoplewhere peopleId in (select peopleId from people group by peopleId having count (peopleId) > ...
  • 本文首先介紹mysql的安裝和基本使用、進階操作、講解mysql的導入導出和自動備份,然後介紹安全模式修改密碼和mysql的全文本搜索功能,最後記錄了個人使用mysql中遇到的問題集。 開始安裝: 簡單使用 建庫 建表 增 刪 改 查 顯示所有的view 進一步操作 創建用戶: 重命名: 刪除用戶: ...
  • 資料庫狀態 (database states) 查詢資料庫的當前狀態 : 1、查詢所有資料庫的狀態 ,通過sys.databases目錄視圖的state_desc列 2、查詢指定資料庫的狀態,通過DATABASEPROPERTYEX函數的Status屬性 狀態: ONLINE:可以對資料庫進行訪問。 ...
  • Transact-SQL 語法規則 Transact-SQL 引用中的語法關係圖使用下列規則。 大寫 : Transact-SQL 關鍵字。 斜體 : Transact-SQL 語法中用戶提供的參數。 | : 分隔括弧或大括弧內的語法項目。只能選擇一個項目。 [ ] : 可選語法項目。不必鍵入方括弧 ...
  • 這兩天周末,各種事情都來,一個玩得很好的學長回來了。然後我的一個室友過生請吃飯,我們都是自主燒烤,所以周末就顯得有點忙。最重要的是,我感冒發燒了,吃啥都沒胃口。 複習的有點怠慢。 先複習一下代碼,看看憑記憶記住的 事務(transaction)的概念是對資料庫執行的一個操作單位。事務4大屬性:1 原 ...
  • --通過代碼方式刪除數據select *from Employee --第一種刪除方式,數據沒了,表還在,id接著刪除前的id繼續加1delete from Employee where EmpId =1 --第二種刪除方式,表沒了,數據也沒了,什麼也沒了drop table Employee -- ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...