- 基於JetBrains DataGrip建立數據庫、SQL語句建立數據庫
- MySQL數據庫存儲引擎和數據類型
- 建立數據庫表及基本操做
- 導出數據庫、刪除數據庫、導入數據庫
1、基於JetBrains DataGrip建立數據庫、SQL語句建立數據庫
1.1 首先肯定mySql服務處於開啓狀態(win10):右擊「個人電腦」-「屬性」-「系統和安全」-「管理工具」-「服務」;
若是沒有顯式正在運行:雙擊-"啓動類型:手動"-「服務狀態:啓動」-「肯定」。(IOS系統每次開機都是關閉狀態的,具體操做百度的到)html
1.2 啓動JetBrains DataGrip-database-New(+▼)-Data Source-MySQL:
1.3 必要的輸入:Name-Host-Port-User-Password-URL(通常填入host和port會自動添加),而後測試鏈接經過後-Apply-ok.
測試經過:
建立成功後是這樣的:這一步還只是鏈接到MySQL服務器。
MySQL服務器內會有一些系統數據庫,這裏只有information_schema可見,能夠經過「show database」命令查看全部數據庫,通常還會有performance_schema、mysql數據庫,新版本中還會有sakila、sys、world服務系統數據庫。
開啓DataGrip源代碼編輯器:?? (source editor:快捷鍵Ctrl+b),編輯命令查看數據庫:node
#查看全部數據庫 show databases;
執行SQL源代碼:?(Execute:快捷鍵Ctrl+Enter):mysql
經過show databases命令能夠查看到全部服務器系統,這些數據庫是用來管理服務的:sql
information_schema:用於存儲系統中的一些數據庫對象信息,如用戶信息、列信息、權限信息、字符集信息和分區信息等。數據庫
performance_schema:主要存儲數據庫服務器性能參數。安全
mysql:主要存儲系統的用戶權限信息。服務器
sakila:樣例數據庫,能夠經過下載官方提供的數據庫樣例學習分析mySQL數據的使用,瞭解更多細節能夠參考這篇博客:Mysql 的示例數據庫 Sakila 介紹。官方地址:https://dev.mysql.com/doc/sakila/en/。編輯器
sys:這個數據庫的數據都是來源performance_schema庫,爲了簡化performance_schema,讓DBA更快的瞭解DB的運行狀況。瞭解詳細能夠參考這篇博客:MYSQL的SYS數據庫。分佈式
world:這是一個世界地區信息數據庫,其中包含了三個表:國家(country)、城市( city)、國家語言(countrylanguage),官方文檔:Setting Up the world Database,能夠在控制檯查詢國家的基本信息:工具
有些老版本的mySQL數據庫會有一個test數據庫,這是一個測試數據庫,有了sakila和world替代test在新版本中也就沒有這個數據庫了。
注意:若是是使用免安裝包安裝的mysql數據庫只有四個系統數據庫:information_schema、mysql、performance_schema、sys。其實也就是缺乏兩個測試數據庫。
1.4 建立數據庫(school)
create database school;
建立數據庫名命名規則:
- 不能重名。
- 由字母、數字、下劃線、@、#、$、符號組成,字母可使用大小寫。
- 首字符不能是數字、$符號。
- 標識符不容許是MySQL的保留字。
- 不容許空格和特殊字符。
- 長度小於128位。
使用DataGrip示圖工具建立數據庫:
2、MySQL數據庫存儲引擎和數據類型
MySQL數據庫軟件提供了存儲引擎的概念,因爲存儲引擎是以插件的形式沒MySQL數據庫軟件引入,因此能夠根據實際應用、實際領域來選擇相應的存儲引擎。雖然經過存儲引擎決定數據庫對象表的類型,可是若是像建立表,還須要瞭解數據類型,由於其決定了表中能夠存儲數據的類型。
2.1 MySQL軟件支持的存儲引擎
//查看當前MySQL數據庫管理系統支持的存儲引擎 show engines
MySQL5.7.28支持的存儲引擎:
#字段:解釋:
# --Engine:存儲引擎名稱 # --Support:MySQL支持的存儲引擎(yes支持-no不支持-default默認支持) # --Comment:存儲引擎的評論 # --Transactions:引擎是否支持事物 # --XA:引擎支持的分佈式是否符合XA規範 # --Savepoints:引擎是否支持事物處理中的保存點
配置默認存儲引擎:還記得在my.ini配置文件中的default-storage-engine配置項嗎?
//經過my.ini配置默認存儲引擎 default-storage-engine=INNODB
2.2 MySQL軟件默認支持的數據類型
整數類型:
//類型 字節 最小值(有/無符號) 最大值(有/無符號)
int/integer 4 -21474483648/0 2147483647/4294967295
smallint 2 -32768/0 32767/65535
tinyint 1 -128/0 127/255
mediumint 3 -8388608/0 8388607/1677215
bigint 8 -9223372036854775807/0 9223372036854775807/1844674407370955161
浮點數類型:
//類型 字節 最小值 最大值 float 4 ±1.75494351E-38 ±3.402823466E+38
double 8 -2.2250738585072014E-308 -1.7976931348623157E+30
定點數類型:
//類型 字節 最小值 最大值 dec(m,d)/decimal(m,d) M+2 與double相同 與double相同
位類型:
//類型 字節 最小值 最大值 bit 1~8 bit(1) bit(64)
日期和時間類型:
//類型 字節 最小值 最大值 date 4 1000-01-01 9999-12-31
datetime 8 1000-01-01 00:00:00 9999-12-31 23:59:59
timestamp 4 19700101080001 2038年某個時刻
time 3 -835:59:59 838:59:59
year 1 1901 2155
字符串類型:
//類型 字節 描述 char(m) m m爲0~255之間的整數
varchar(m) m m爲0~65535之間的整
text系列字符串類型:
//類型 字節 描述 tinytext 0~255 值的長度爲+2個字節
text 0~65535 值的長度爲+2個字節
mediumtext 0~167772150 值的長度爲+3個字節
longtext 0~4294967295 值的長度爲+4個字節
binary系列字符串類型:
//類型 字節 描述 binary(m) m 容許長度爲0~m
varbinary(m) m 容許長度爲0~m
blob系列字符串類型:
//類型 字節 描述 tinyblob 0~255 blob 0~216 mediumblob 0~224 longblob 0~232
咱們能夠經過help指令來查看數據類的幫助信息,其中會包含該數據類型的描述,而且會打印出官方詳細幫助文檔的鏈接:
3、建立數據庫表及基本操做
3.1 經過DataGrip圖形化界面建立數據庫表
而後進入表的具體建立操做:
建立完成之後能夠經過show指令來查看建立表的完整SQL語句:
show create table users;
好比,測試時我給users表總共添加了id、name、age、phone、password五個字段,下面時查詢的完整建立語句:
CREATE TABLE `users` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT 'users id', `name` varchar(32) NOT NULL COMMENT 'user name', `age` int(3) NOT NULL COMMENT 'user age', `phone` char(11) NOT NULL COMMENT 'user phone', `password` char(32) NOT NULL COMMENT 'user password', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
還能夠經過describe來查看錶的結構,能夠經過這個操做查看到每一個字段的信息(describe能夠簡介desc):
describe users;
這些信息就是剛剛建立表時添加的每一個字段的內容:
3.2 經過SQL語句建立表
#建立數據表最基本的語法 create table table_name( 字段名 數據類型, 字段名 數據類型 )
可是你會發現前面經過DataGrip圖形化界面建立的users表,查詢出來的建立語句每一個字段後面還有不少內容,其中主要的就包括約束和一個字段描述。而後整個建立語句最後面也還有一些內容,這部份內容是用來描述表的,好比存儲引擎、表的字符集等。
//完整性約束關鍵字 含義 not null 約束字段的值不能爲空 default 設置字段的默認值 unique key(UK) 約束字段的惟一值 primary key(PK) 約束字段爲主鍵,能夠做爲該表記錄的惟一標識 auto_increment 約束字段的值爲自動增長 foreign key(FK) 約束字段爲表的外鍵
字段約束的示例:
//非空 create table table_name( 字段名 數據類型 not null, ... ) //設置字段默認值 create table table_name( 字段名 數據類型 default, ... ) //設置惟一約束 create table table_name( 字段名 數據類型 unique L, ... ) //設置主鍵約束 create table table_name( 字段名 數據類型 primary key, ... ) //設置字段值自動增長 create table table_name( 字段名 數據類型 auto_increment, ... ) //設置外鍵約束--屬性名1表示子表的字段,也就是當前表的字段--屬性名2是父表的字段 create table table_name( constraint 外鍵約束名 foreign key (屬性名1) references 表名 (屬性名2) )
表的相關描述配置:
CREATE TABLE `users` ( ... ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
engine=innoDB用來設置表的存儲引擎,通常經常使用的的存儲引擎有兩個:myisam、innoDB。myisam適用於讀較多的場景,由於myisam是表級鎖。innoDB適用於讀寫都較多的場景,由於innoDB是行級鎖。
default用來設置默認配置,charset=utf8mb4表示默認字符集爲utf8mb4。
例如經過SQL語句實現一個商品購物車表:
1 create table shopping_cart( 2 `id` int(11) not null auto_increment comment 'shopping_cart id',#訂單id:非空 自增 3 `commodity_id` int(11) not null ,#商品編號 4 `count` int(11) not null default 1,#訂購數量 5 `add_time` datetime not null,#添加到購物車的時間 6 `settle_time` datetime,#結算的時間 7 `money` float not null default 0,#訂單金額 8 `address_id` int(2) default 0,#訂單收貨地址編號 9 PRIMARY KEY (`id`), #設置主鍵 10 constraint fk_shoppingCart_address foreign key (address_id) 11 references address(id),#設置訂單的收穫地址信息外鍵 12 constraint fk_shoppingCart_commodity foreign key (commodity_id) 13 references commodity(id)#設置訂單對應的商品信息外鍵 14 )ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
須要注意的是,帶有外鍵的表在執行添加表格的SQL以前,必須將父表都先添加好才能添加帶有外鍵的數據表。
3.3經過SQL語句添加字段、刪除字段、修改字段、修改表名
添加字段:
1 //在表的最後一個位置增長字段 2 alter table table_name add 字段名 字段類型 ...約束; 3 //在表的第一個位置增長字段 4 alter table table_name add 字段名 字段類型 ...約束 flrst; 5 //在表的指定位置增長字段(經過after關鍵字指定在某個字段後面添加) 6 alter table table_name add 字段名 字段類型 ...約束 after 字段名; 7 8 //示例:在表commodity的最後一個位置添加字段type,類型爲int(11),非空約束 9 alter table commodity add type int(11) not null;
刪除字段:
alter table table_name drop 屬性名;
修改字段:
//修改字段的數據類型 alter table table_name modify 字段名 數據類型 //修改字段的名字 alter table table_name change 舊字段名 新字段名 舊數據類型 //修改字段的名字和屬性(屬性以數據類型爲例) alter table table_name change 舊字段名 新字段名 新數據類型
修改字段的順序:
//好比將字段1調整到字段名2後面 alter table table_name modify 字段名1 數據類型 first | after 字段名2
修改表名:
//將數據表old_table_name的表名修改爲new_table_name,TO關鍵字可選 alter table old_table_name rename [TO] new_table_name
4、導出數據庫、刪除數據庫、導入數據庫
3.1 導出數據庫
經過控制檯命令導出:
//導出整個數據庫 mysqldump -u 用戶名 -p 數據庫名 > 導出的文件名 //導出一個表 mysqldump -u 用戶名 -p 數據庫名 表名> 導出的文件名 //導出數據庫結構 mysqldump -u 用戶名 -p -d --add-drop-table 數據庫名 >導出文件名
示例:
//將MySQL數據庫nodemysql1導出到桌面,導出文件名爲nodemysql1.sql ...個人桌面路徑>MySQLdump -u root -p nodemysql1 >nodemysql1.sql //將MySQL數據庫nodemysql1的users表導出到桌面,導出文件名爲nodemysql1users.sql ...個人桌面路徑>MySQLdump -u root -p nodemysql users>nodemysql1users.sql //將MySQL數據庫nodemysql1的數據庫結構導出到桌面,導出文件名爲nodemysql_d.sql ...個人桌面路徑>MySQLdump -u root -p -d --add-drop-table nodemysql1>nodemysql_d.sql
3.2 刪除數據庫
drop database database_name;
3.3 導入數據庫
//若是沒有進入到sql文件exported_file.sql目錄中須要在前面加上文件目錄 mysql -u root -p 數據庫名稱 <exported_file.sql C:\Users\...\Desktop>mysql -u root -p nodemysql1 <C:\Users\...\Desktop\nodemysql_d.sql