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
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...