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


  • 基於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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM