Mysql-1

MySQL是一個關係型數據庫管理系統,由瑞典MySQL AB 公司開發,目前屬於 Oracle 旗下公司


set names utf8   明確使用何種字符集


show databases   查看當前數據庫服務器下的數據庫信息


create database bdname charset utf8 collate utf8_general_ci   創建數據庫dbname並矯正爲utf8_general_ci

例如:create database lianxi charset utf8 collate utf8_general_ci

drop database dbname  刪除數據庫


use lianxi;  使用數據庫lianxi


show tables;  查看當前數據庫下邊的所有表

create table tablename(

    字段名稱 數據類型,

)engine=innodb default charset utf8;


例如:

 create table student(

 sno int,

 sname varchar(20) charset utf8 collate utf8_general_ci,

 chengji int,

 grade varchar(20) charset utf8 collate utf8_general_ci

)engine=innodb default charset utf8;


desc  tablename  查看錶結構

show columns from tablename;  查看錶結構

show create table  tablename  查看創建表的命令

drop table tablename  刪除表

rename table oldname to newname  將舊錶名修改爲新表名

alter table tablename add 字段名 數據類型 約束 comment '備註' first  在表的開頭添加字段sno2


alter table tablename add 字段名 數據類型 約束 comment '備註'  在表的結尾添加字段


alter table tablename add 字段名 數據類型 約束 comment '備註' after grade  在grade字段之後添加字段


alter table tablename drop 字段名


alter table tablename drop primary key   //刪除主鍵


alter table tablename add primary key(字段名)  //添加主鍵


數據類型

注:以下內容針對MySQL5.0及以上版本

MySQL的數據類型非常多,選擇正確的數據類型對於獲得高性能至關重要,本文是我結合網上看到的一些blog加上《高性能MySQL》一書上的內容整理而成的。

三大原則:

1,更小的通常更好,應該儘量使用可以正確存儲數據的最小數據類型。

2,簡單就好,簡單數據類型的操作通常需要更少的CPU週期。

3,儘量避免NULL,如果查詢中包含可爲NULL的列,對MySQL來說更難優化,因爲可爲NULL的列使得索引、索引統計和值比較都更復雜。


  • 注:以下內容針對MySQL5.0及以上版本

    MySQL的數據類型非常多,選擇正確的數據類型對於獲得高性能至關重要,本文是我結合網上看到的一些blog加上《高性能MySQL》一書上的內容整理而成的。

    三大原則:

    1,更小的通常更好,應該儘量使用可以正確存儲數據的最小數據類型。

    2,簡單就好,簡單數據類型的操作通常需要更少的CPU週期。

    3,儘量避免NULL,如果查詢中包含可爲NULL的列,對MySQL來說更難優化,因爲可爲NULL的列使得索引、索引統計和值比較都更復雜。

    1、整型

    MySQL數據類型含義(有符號)
    tinyint(m)1個字節 範圍(-128~127)
    smallint(m)2個字節 範圍(-32768~32767)
    mediumint(m)3個字節 範圍(-8388608~8388607)
    int(m)4個字節 範圍(-2147483648~2147483647)
    bigint(m)8個字節 範圍(+-9.22*10的18次方)

    取值範圍如果加了unsigned,則最大值翻倍,如tinyint unsigned的取值範圍爲(0~256)。
    int(m)裏的m是表示SELECT查詢結果集中的顯示寬度,並不影響實際的取值範圍。

    (MySQL可以爲整型類型指定寬度,例如Int(11),對絕大多數應用這是沒有意義的:它不會限制值的合法範圍,只是規定了MySQL的一些交互工具(例如MySQL命令行客戶端)用來顯示字符的個數。對於存儲和計算來說,Int(1)和Int(20)是相同的。)

    2、浮點型(float和double)

    MySQL數據類型含義
    float(m,d)單精度浮點型 8位精度(4字節) m總個數,d小數位
    double(m,d)雙精度浮點型 16位精度(8字節) m總個數,d小數位

    設一個字段定義爲float(5,3),如果插入一個數123.45678,實際數據庫裏存的是123.457,但總個數還以實際爲準,即6位。

    3、定點數

    浮點型在數據庫中存放的是近似值,而定點類型在數據庫中存放的是精確值。
    decimal(m,d) 參數m<65 是總個數,d<30且 d<m 是小數位。

    MySQL5.0和更高版本將數字打包保存到一個二進制字符串中(每4個直接存9個數字)。例如,decimal(18,9)小數點兩邊將各存儲9個數字,一共使用9個字節:小數點前的數字用4個字節,小數點後的數字用4個字節,小數點本身佔1個字節。

    浮點類型在存儲同樣範圍的值時,通常比decimal使用更少的空間。float使用4個字節存儲。double佔用8個字節。

    因爲需要額外的空間和計算開銷,所以應該儘量只在對小數進行精確計算時才使用decimal——例如存儲財務數據。但在數據量比較大的時候,可以考慮使用bigint代替decimal。

    4、字符串(char,varchar,_text)

    MySQL數據類型含義
    char(n)固定長度,最多255個字符
    varchar(n)固定長度,最多65535個字符
    tinytext可變長度,最多255個字符
    text可變長度,最多65535個字符
    mediumtext可變長度,最多2的24次方-1個字符
    longtext可變長度,最多2的32次方-1個字符

    char和varchar:
    1.char(n) 若存入字符數小於n,則以空格補於其後,查詢之時再將空格去掉。所以char類型存儲的字符串末尾不能有空格,varchar不限於此。
    2.char(n) 固定長度,char(4)不管是存入幾個字符,都將佔用4個字節,varchar是存入的實際字符數+1個字節(n< n>255),所以varchar(4),存入3個字符將佔用4個字節。
    3.char類型的字符串檢索速度要比varchar類型的快。

    varchar和text:
    1.varchar可指定n,text不能指定,內部存儲varchar是存入的實際字符數+1個字節(n< n>255),text是實際字符數+2個字節。
    2.text類型不能有默認值。
    3.varchar可直接創建索引,text創建索引要指定前多少個字符。varchar查詢速度快於text,在都創建索引的情況下,text的索引似乎不起作用。

    5.二進制數據(_Blob)

    1._BLOB和_text存儲方式不同,_TEXT以文本方式存儲,英文存儲區分大小寫,而_Blob是以二進制方式存儲,不分大小寫。
    2._BLOB存儲的數據只能整體讀出。
    3._TEXT可以指定字符集,_BLO不用指定字符集。

    6.日期時間類型 

    MySQL數據類型含義
    date日期 '2008-12-2'
    time時間 '12:25:36'
    datetime日期時間 '2008-12-2 22:06:44'
    timestamp自動存儲記錄修改時間

    若定義一個字段爲timestamp,這個字段裏的時間數據會隨其他字段修改的時候自動刷新,所以這個數據類型的字段可以存放這條記錄最後被修改的時間。

    數據類型的屬性

    MySQL關鍵字含義
    NULL數據列可包含NULL值
    NOT NULL數據列不允許包含NULL值
    DEFAULT默認值
    PRIMARY KEY主鍵
    AUTO_INCREMENT自動遞增,適用於整數類型
    UNSIGNED無符號
    CHARACTER SET name指定一個字符集
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章