int型別修飾符
unsigned 無符號整數,修飾符: 規定字段只能儲存正的資料。它可以增大這個欄位的正數支援的範圍。
zerofill 修飾符: 規定0(不是空格 ) 填補輸出的值。 使用這個值可以防止 mysql儲存負值。
注意:int(m) 在 integer 資料型別中,m 表示最大顯示寬度。
在 int(m) 中,m 的值跟 int(m) 所佔多少儲存空間並無任何關係。 int(3)、int(4)、int(8) 在磁碟上都是占用 4 btyes 的儲存空間。其實,除了顯示給使用者的方式有點不同外,int(m) 跟 int 資料型別是相同的。
如int的值為10
int(10)顯示結果為0000000010
int(3)顯示結果為010
浮點型資料型別
float數值型別用於表示單精度浮點數值,而double數值型別用於表示雙精度浮點數值,float和double都是浮點型,而decimal是定點型;
mysql浮點型和定點型可以用型別名稱後加(m,d)來表示,m表示該值的總共長度,d表示小數點後面的長度,m和d又稱為精度和標度,如float(7,4)表示總長度是7位,小數點後面的長度是4,可顯示為999.9999,mysql儲存值時進行四捨五入,如果插入999.00009,則結果為999.0001。
float:單精度浮點型,佔位元組數為4,用32位二進位制描述,有符號是7個有效位,無符號是8個有效位
double:雙精度浮點型,佔位元組數為8,用64位二進位制描述,有符號是15個有效位,無符號是16個有效位
decimal:數字型,用128位二進位制描述,不存在精度損失,常用於銀行帳目計算。(28個有效位)
解釋:單精度和雙精度
精度是指計算機表達小數近似值的一種方式,單精度32位二進位制,4個位元組;雙精度64位二進位制,8個位元組。
float數值型別
例如:float(3,1) :表示此欄位有效位數為3位,小數點後面1位數字。
小數點後超過1位,mysql自動給四捨五入。
發現整數+小數一共只能有3位,整數2位,小數1位,小數點後超過1位自動四捨五入。
儲存精確的小數: double和decimal數值型別
decimal、double要比float儲存小數更精確。
單精度型別float和雙精度型別double在計算機中儲存的時候,由於計算機只能儲存二進位制,所以浮點型資料在儲存的時候,必須轉化成二進位制。我們知道對於float型別的資料,只分配了32位的儲存空間,對於double型別值分配了64位,但是並不是所有的小數都能轉成32位或者64位的二進位制形式,如果超過了,就會出現截斷,這就是誤差的**。
針對float情況,至少我們可以得出結論:
如果乙個float型資料轉成二進位制後的第32位之後都是0,那麼資料是準的
如果乙個float型資料轉成二進位制後的第32位之後不全為0,則資料就會存在誤差
字串型別
char 和 varchar
char
char :後面括號中必須有數值,來確認字串的範圍。 大小範圍 :0-255.
char(10) ; 指定了乙個長度為10的字元值。
舊版本小於長度,空格自動補齊,大於長度 ,自動截短。
新版本超過長度自動報錯。
binary 修飾符: 區分字元大小寫
varchar : 字串可變長
在 mysql5.0以上的版本中,varchar資料型別的長度支援到了65535,也就是說可以存放65532個位元組的資料,起始位和結束位占去了3個位元組。
char和varchar區別
char(m)定義的列的長度為固定的,m取值可以為0~255之間,當儲存char值時,在它們的右邊填充空格以達到指定的長度。當檢索到char值時,尾部的空格被刪除掉。
varchar(m)定義的列的長度為可變長字串,m取值可以為0~65535之間。
varchar值儲存時只儲存需要的字元數,另加乙個位元組來記錄長度(如果列宣告的長度超過255,則使用兩個位元組)。varchar值儲存時不進行填充。
varchar儲存變長資料,但儲存效率沒有char高。如果乙個字段可能的值是不固定長度的,我們只知道它不可能超過10個字元,把它定義為 varchar(10)是最合算的。
從空間上考慮,用varchar合適;從效率上考慮,用char合適。
字串使用總結
1、varchar型字段比char型字段占用更少的記憶體和硬碟空間。當你的資料庫很大時,這種記憶體和磁碟空間的節省會變得非常重要.
2、雖然varchar使用起來較為靈活,但是從整個系統的效能角度來說,char資料型別的處理速度更快,有時甚至可以超出varchar處理速度的50%。
所以在設計資料庫時應當綜合考慮各方面的因素,以求達到最佳的平衡。
日期和時間型別
date 日期
time時間
year
year : 00-69自動轉為: 2000-2069 , 70-99自動轉為1970-1999
datatime 或 timestamp
datetime型別能儲存的最大範圍的值為2023年到2023年,精度為秒,它把日期和時間封裝到格式為yyyy-mm-dd hh:mm:ss的整數中,與時區無關,使用8個位元組的儲存空間。
timestamp型別儲存了從2023年1月1日(格林尼治時間)以來的秒數,它和linux的時間戳相同,只是用了4個位元組的儲存空間,因此它的範圍比datetime的範圍小了很多,只能表示從2023年到2023年,我們可以使用它提高空間利用率。
復合型別
它們欄位的值,必須從預先定義好的字串集合中選取。
enum(列舉):只能取乙個,用於互斥。男人,女人。
set : 能取多個。
列舉set
注意:set 型別: 最大包含64類項。在set中,相同的元素不能同時存在。
msyql語句高階
mysql基礎命令語句
修改資料表
新增字段:
alter table 表名 add 欄位名 列型別 [not null|null][primary key][unique][auto_increment][default value]
alter table 表名 add 字段定義 after ar_id;
解釋:not null | null:非空約束(not null)可以通過 create table 或 alter table 語句實現。在表中某個列的定義後加上關鍵字 not null 作為限定詞,來約束該列的取值不能為空。對於使用了非空約束的字段,如果使用者在新增資料時沒有指定值,資料庫系統就會報錯。null表示該列可以為空,使用者在插入資料時如果沒有指定值,該列用null填充。
default預設值:mysql預設值約束用來指定某列的預設值。如果某列設定了default預設值約束,使用者在插入資料時如果沒有指定值,則用預設值填充。
unique:唯一性約束,如果某列設定了unique唯一性約束,則該列的值是不能重複的。
auto_increment:設定數值型的列自動增長。auto_increment是資料列的一種屬性,只適用於整數型別資料列。所謂自動增長字段,是指它們的值是系統指定,不需要插入。值從1開始,每增加一條記錄,這個值就加1。
primary key:主鍵(primary key)」的完整稱呼是「主鍵約束」。mysql 主鍵約束是乙個列或者列的組合,其值能唯一地標識表中的每一行。通過它可以強制表的實體完整性(即表中沒有重複的行)。
主鍵應該遵守下面的規則:
1.每個表只能定義乙個主鍵。
2.主鍵值必須唯一標識表中的每一行,且不能為 null,即表中不可能存在兩行資料有相同的主鍵值。這是唯一性原則。
刪除字段:
alter table 表名 drop 欄位名
修改字段:
alter table 表名 modify 欄位名 欄位新型別
完整修改字段:
alter table 表名 change 舊欄位名稱 新字段定義
修改表名稱
alter table 表名 rename 新名字
刪除表drop table [if (not) exists] 表名;
表中行的操作
insert
insert [into] 資料表名稱 [(字段列表)] values|value (表示式|null|default,…),(表示式|null|default,…)
insert [into] 資料表名稱 set 欄位名稱=值,…
insert與insert…set的區別是後者可以帶有子查詢。
update – 單錶
update 表名 set 欄位名稱=值,… [where 條件]
如果省略where條件將更新全部記錄。
刪除記錄 – 單錶
delete from 資料表名稱 [where 條件]
如果省略where條件,將刪除全部記錄
常用select命令
使用select命令檢視mysql資料庫系統資訊:
– 列印當前的日期和時間
select now();
– 列印當前的日期
select curdate();
– 列印當前的時間
select curtime();
– 列印當前資料庫
select database();
– 列印mysql版本
select version();
– 列印當前使用者
select user();
標籤:語句,int,float,二進位制,mysql,型別,長度,select
mysql語句高階 Mysql高階SQL語句
show columns from table name from database name 或show columns from database name.table name 或show fields 解釋 顯示表中列名稱 和 desc table name 命令的效果是一樣的 檢視連線數,...
mysql執行語句 mysql執行sql語句過程
流程概述 mysql得到sql語句後,大概流程如下 1.sql的解析器 負責解析和 sql 2.預處理器 對解析後的sql樹進行驗證 3.查詢優化器 得到乙個執行計畫 4.查詢執行引擎 得到資料結果集 5.將資料放回給呼叫端。流程圖如下所示 分發器及快取階段 首先,如果系統的快取功能開啟著的話,sq...
mysql基本語句例子 mysql常用的語句示例
登陸資料庫 mysql hlocalhost uroot p123456 u後面是使用者名稱 p後面是賬號密碼 h後面是host 檢視資料庫列表 show databases 建立資料庫 create database test 刪除資料庫 drop database test 使用資料庫 use ...