數據庫入門(mySQL):建立數據庫

  • 基於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
相關文章
相關標籤/搜索