- 基於JetBrains DataGrip創建數據庫、SQL語句創建數據庫
- MySQL數據庫存儲引擎和數據類型
- 創建數據庫表及基本操作
- 導出數據庫、刪除數據庫、導入數據庫
一、基於JetBrains DataGrip創建數據庫、SQL語句創建數據庫
1.1 首先確定mySql服務處於開啟狀態(win10):右擊“我的電腦”-“屬性”-“系統和安全”-“管理工具”-“服務”;
如果沒有顯式正在運行:雙擊-"啟動類型:手動"-“服務狀態:啟動”-“確定”。(IOS系統每次開機都是關閉狀態的,具體操作百度的到)
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),編輯命令查看數據庫:
#查看所有數據庫
show databases;
執行SQL源代碼:?(Execute:快捷鍵Ctrl+Enter):
通過show databases命令可以查看到所有服務器系統,這些數據庫是用來管理服務的:
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示圖工具創建數據庫:
二、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.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
四、導出數據庫、刪除數據庫、導入數據庫
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