1. 程式人生 > 其它 >操作資料庫 -- mysql 02

操作資料庫 -- mysql 02

操作資料庫

操作資料庫>操作資料庫中的表>操作資料庫中表的資料

mysql關鍵字不區分大小寫

操作資料庫

1,建立資料庫

create database [if not exists] westos

2,刪除資料庫

drop database [if exists] westos

3,使用資料庫

--如果你的表名或者欄位名是一個特殊字元,就需要帶··
use school

4,檢視資料庫

show databases   --檢視所有的資料庫

學習思路:

  • 對照sqlyog視覺化歷史記錄檢視
  • 固定的語法或者關鍵字必須要強行記住

資料庫的列型別

數值

  • tinyint 十分小的資料 1個位元組
  • smallint 較小的資料 2個位元組
  • int 標準的資料 4個位元組
  • bigint 較大的資料 8個位元組
  • float 浮點數 4個位元組
  • double 浮點數 8個位元組 (精度問題!)
  • decimal 字串形式的浮點數 金融計算的時候 一般是使用decimal

字串

  • char 字串固定大小的 0~255
  • varchar 可變字串 0-65535 常用的 String
  • tinytext 微型文字 2^8 - 1
  • text 文字串 2^16 - 1 儲存大文字

時間日期

java.util.Date

  • date YYYY-MM-DD,日期格式
  • time HH: mm: ss 時間格式
  • datetime YYYY-MM-DD time HH: mm: ss 最常用的時間格式
  • timestamp 時間戳,1970.1.1到現在的毫秒數!
  • year 年份

null

  • 沒有值,未知
  • 注意,不要使用NULL進行運算,結果為NULL

資料庫的欄位屬性(重點)

Unsigned:

  • 無符號的整數
  • 聲明瞭該列不能宣告為負數

zerofill:

  • 0填充
  • 不足的位數,使用0來填充, int( 3), 5 --- 005

自增:

  • 通常理解為自增,自動在上一條記錄的基礎上+1(預設)
  • 通常用來設計唯一的主鍵~ index,必須是整數型別
  • 可以自定義設計主鍵自增的起始值和步長

非空 NULL not null

  • 假設設定為 not null, 如果不給它賦值,就會 報錯
  • NULL 如果不填預設值,預設就是null

預設:

  • 設定預設的值!
  • sex,預設值為男,如果不指定該列的值,則會有預設的值

擴充套件:

/* 每一個表,都必須存在以下五個欄位!未來做專案用的,表示一個記錄存在的意義!

id  主鍵
·version·    樂觀鎖
is_delete    偽刪除
gmt_create   建立時間
gmt_upodate  修改時間
*/

建立資料庫表(重點)


-- --目標:建立一個school資料庫                                                 
-- --建立學生表(列,欄位)    使用sql建立                                           
-- --學號int  登入密碼varchar(20) 姓名,性別varchar(2),出生日期(datatime),家庭住址,email 
                                                                      
-- 注意點,使用英文(),表的名稱 和 欄位 儘量使用  ``括起來                                   
-- AUTO_INCREMENT  自增                                                 
-- 字串使用,單引號括起來                                                      
-- 所有語句加,最後一個不用加                                                      
-- primary key 主鍵,一般一個表只有一個                                          
CREATE TABLE IF NOT EXISTS`student`(                                  
`id` INT(4)  NOT NULL  AUTO_INCREMENT COMMENT'學號',                    
`name`  VARCHAR(30) NOT NULL  DEFAULT'匿名' COMMENT'姓名',               
`powdata` VARCHAR(20) NOT NULL DEFAULT'123456'COMMENT'密碼',            
`sex` VARCHAR(10) NOT NULL DEFAULT'男'COMMENT'性別',                     
`birthday` DATETIME DEFAULT NULL COMMENT'出生日期',                       
`address` VARCHAR(100) DEFAULT NULL COMMENT'家庭住址',                    
`email` VARCHAR(50) DEFAULT NULL COMMENT'郵箱地址',                       
PRIMARY KEY(`id`)                                                     
                                                                      
)ENGINE = INNODB  DEFAULT CHARSET=utf8                                

格式

create table [if not exists] `表名`(                                    
                                                                      
`欄位名` 列型別 [屬性] [索引] [註釋],                                             
......                                                                
`欄位名` 列型別 [屬性] [索引] [註釋]                                              
)[表型別][字符集設定][註釋]                                                     

常用命令

SHOW CREATE DATABASE school   -- 檢視建立資料庫的語句                           
SHOW CREATE TABLE student     -- 檢視資料表的定義語句                           
DESC student   -- 顯示錶的結構                                              

資料表的型別

-- 關於資料庫引擎                                                            
/*                                                                    
INNODB 預設使用~                                                          
MYISAM 早些年使用的                                                         
*/                                                                    
MYISAM INNODB
事物支援 不支援 支援
資料行鎖定 不支援 支援
外來鍵約束 不支援 支援
全文索引 支援 不支援
表空間大小 較小 較大,約為2倍

常規使用操作:

  • MYISAM 節約空間,速度較快
  • INNODB 安全性高,事務的處理,多表多使用者操作

在物理空間存在的位置

所有的資料庫檔案都存在data目錄下,本質還是檔案的儲存!

MySQL引擎在物理檔案上的區別

  • INNODB在資料庫表中只有一個*.frm檔案,以及上級目錄下的ibdata1檔案
  • MYISAM對應檔案
  • *.frm 表結構的定義檔案
  • *.MYD 資料檔案(data)
  • *.MIY 索引檔案(index)

設定資料庫表的字符集編碼

charset=utf8                                                          

不設定的話,會是mysql預設的字符集編碼~(不支援中文)

在my.ini中配置預設的編碼

character-set-server=utf8                                             
                                                                                                                                        |                                                                       ### 修改刪除表                                                             

修改

-- 修改表名 ALTER TABLE 舊錶名 RENAME AS 新表名                                
ALTER TABLE teacher RENAME AS teacher1                                
-- 增加表的欄位 ALTER TABLE 表名 ADD 欄位名 欄位型別()                              
ALTER TABLE teacher1 ADD age INT(11)                                  
-- 修改表的欄位  (重新命名,修改約束)                                               
-- 修改約束  ALTER TABLE 表名 MODIFY 欄位名 欄位屬性()                             
ALTER TABLE teacher1 MODIFY age VARCHAR(11)                           
-- 重新命名  ALTER TABLE 表名 CHANGE 舊的欄位名 新欄位名                              
ALTER TABLE teacher1 CHANGE age age1 INT(1)                           
                                                                      
-- 刪除表的欄位  ALTER TABLE 表名 DROP 欄位名                                    
ALTER TABLE teacher1 DROP age1                                        

刪除

DROP TABLE IF EXISTS `data`                                          

所有的建立和刪除操作儘量加上判斷,以免報錯

注意點:

  • ``欄位名,使用這個包裹
  • 註釋 -- /**/
  • sql關鍵字大小寫不敏感,建議寫小寫
  • 所有符號全部用英文