mysql--平日點滴知識隨筆(待續)

eBusinessMan發表於2015-03-16

(都是平時專案過程中的零碎知識疑惑點,哈哈,現在存放在這,以後筆試複習用!加油!!)
1.      
table表中的id欄位設定為int auto_increment時:

insert into table values(null,’**’);新增的記錄的id=已有的id+1;

insert into table values(34,’**’);新增的記錄的id=34;

是故,當制定了id的具體數值時,則用那個數值,否則就原有的最大id+1

2.       alter table tb_name add column_name column_type;一次只能新增一個欄位

3.               mysql中:
    alter table 資料表名 change 原列名 新列名 新列型別;

            oracle中:
    alter table 資料表名 rename 原列名 to 新列名;

4.       外來鍵一定是主表的主關鍵字,不一定是從表的關鍵字!

5.       unsigned一般是無符號的意思,比如unsigned int就是無符號整數的意思,一般有符號數的最高位是符號位,表示資料的正負,不表示大小,而無符號數的最高位是表示資料的大小,這樣無符號數表示的資料範圍要比有符號數大一倍

  這裡的id一般表示序號,所以設定為unsigned屬性,這樣的設計更科學合理。

6.       Blob (Binary large objects)儲存二進位資料,且有分大小寫

7.       辨別ZeroFill:當宣告關鍵字ZeroFill為自動填滿0,如 000021

8.       Mysql中只有char(n)是固定長度的!

9.     9.         create table test(time datetime);
            insert into test values(1992-01-01 12:00:00);
            為什麼第二句錯誤,手動插不了值

            答案: 改為insert into test values(‘1992-01-01 12:00:00’);

10. 資料庫表設計的一個經驗:

a. 一定要有個 int 的自增主鍵。即便當前沒有自增的需求,也應當設定,以便在日後的應用場景中使用。

b. 有一個記錄插入的時間綴。

c. 有一個記錄更新的時間綴。這個欄位預設值可以設定為當前時間綴,並且在記錄更新時自動重新整理時間綴。

11.    mysql中所有的資料庫物件的名稱都是大寫的,雖然我們命名時小寫了,但是引擎會自動轉換成大寫!

12.    使用innoDB引擎建立外來鍵時,要注意除了資料型別,長度要相同外,還要求:無符號,填充零,也要一致!!

13.    注意:儲存過程相當於程式,執行到錯誤或異常之處也會停止,而且已經執行的操作的結果不會回滾!!

14.    DATETIMEDATE允許“不嚴格”的語法:任何標點符都可以用做日期部分或時間部分之間的間割符。例如,'98-12-31 11:30:45''98.12.31 11+30+45''98/12/31 11*30*45''98@12@31 11^30^45'是等價的。例如,'98-12-31''98.12.31''98/12/31''98@12@31'是等價的。但是注意:1.標點符不包括字母 2.年月日 和 時分秒的間隔符不一定要相同,但兩模組中各自內部的間隔符要求一致。

15.    對於一些沒有間隔符的數字模式,例如‘19980903122321’就是符合‘YYYYMMDDHHMMSS’模式的,mysql會自動將之識別並按照對應的欄位型別解釋成對應的形式!!

例如:1.YYYYMMDDHHMMSS-----如果欄位型別是dateTime--------à ’ YYYY-MM-DD HH:MM:SS’

      19980903122321’à ‘1998-09-03 12:23:21’

               2. YYYYMMDDHHMMSS-----如果欄位型別是date--------à’ YYYY-MM-DD’

               3. YYYYMMDD-----如果欄位型別是datetime-------à ‘YYYY-MM-DD 00:00:00 ’

由上面的例子可知,日期型別的使用真的是很靈活!!dbms真的很智慧!

16.    儘管可以使用相同的格式指定DATETIMEDATETIMESTAMP值,不同型別的值的範圍卻不同。例如,TIMESTAMP值不能早於1970或晚於2037。這說明一個日期,例如'1968-01-01',雖然對於DATETIMEDATE值是有效的,但對於TIMESTAMP值卻無效,如果分配給這樣一個物件將被轉換為0

17.    mysql中,有預設值的不允許null的欄位和自增長欄位,都可以不用在insert 語句中標明欄位,因為它們會自己解決掉!

如:表:student(id int primary key auto-increment,name varchar(2) not null default ‘luo’,class varchar(2) not null)

Insert into student(class) values(‘class2’);

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29900383/viewspace-1461593/,如需轉載,請註明出處,否則將追究法律責任。

相關文章