數據庫篇之可視化工具+數據基礎理論

//工具部分

mysql-sqlyog

>創建存儲過程時需要注意

1 無參數

[DELIMITER //]在這句之後寫語句,另外需要在 end之後加上 [//]

2 in/out/inout

在[DELIMITER //]之間寫語句,另外需要在 end之後加上 [//]

2.1

模式寫在參數前

eg: in XX XXType ,out YY YYType

>一次執行多個sql語句

查詢之間使用“;”分隔

使用場景:

1

寫查詢

編寫複雜查詢時,可以通過該方法可以看到全部字段,進而可以選取顯示字段

2

查數據

將複雜查詢拆開,進而可以看到各個字段數據的來源

>格式化查詢

格式化查詢:

快捷鍵:f12

>刷新

1

數據庫全部刷新:

右鍵->刷新數據庫對象

單個庫刷新:

選擇要刷新的庫,f5

2

通過alter命令對錶進行修改後,操作成功之後,先刷新庫,然後右鍵->打開表,即可看到新增的字段

>導出

1

導出sql文件

選擇導出類型

 

設置相關選項進行數據導出

2同步數據

2.1

2.2

2.2 主頁面找圖標

2.3

3

導出多張表

 

找到要導出表的數據庫,右鍵->備份/導出-->備份數據庫,轉儲到sql

備註:可以通過點擊“1”來獲取更多的表信息

 

選擇導出的sql

選擇導出的數據庫

選擇導出的路經

選擇導出的表

點擊導出。

datagrip

日期:2019-6-10

>>datagrip查看連接配置:

如圖所示:圖中標紅部分

>>datagrip連接到庫之後,顯示的schema

1>如下圖:則沒有顯示任何schema

2>顯示的schema

2.1>頁面調出

參考:datagrip查看連接配置

2.2>修改方式

說明:

在2中,勾選需要顯示的schema。

在依次點擊3,4即可。

>>datagrip連接數據庫是提示:

Connection to localhost failed. [08001] Could not create connection to database server. Attempted reconnect 3 times. Giving up

解決方式:

1>在

最後添加 serverTimezone=UTC

好處:該操作屬於模板操作,以後的每次新增數據源都會添加上

2>

在url最後添加: serverTimezone=UTC

日期:2019-06-17

>>datagrip下載的jar的位置

C:\Users\(自己電腦的用戶名)\.DataGrip2019.1\config\jdbc-drivers

>>2019-06-18

datagrip修改表:找到具體的庫,找到具體的表,右鍵選擇:modify table 

datagrip修改列:選擇到要修改的表,找到要修改的列,右鍵選擇:modify column

>>日期:2019-06-19

現象:當切換schema之後,無內容顯示

解決方案:需要選擇schema並進行刷新,

附圖:刷新按鈕

>>datagrip通過表來篩選數據

1>雙擊打開對應的表

2>在查找處數據,輸入條件:

3>輸入:篩選條件與篩選值

示例:

id='idValue'

4>回車鍵執行

日期:2019-6-5

可視化工具sqldeveloper ,不顯示左邊已經連接的窗口

解決:

日期:2019-07-05

連接mysql數據庫只導出表結構操作

選擇要導出的表,右鍵選擇操作項-附圖:

說明:path to mysqldump ,該項的值指向:mysqldump.exe的具體路徑

當進行值導入表結構時,需要加上-d(後面需要空格),形如:

-d ssm --result-file=""

日期:2019-08-19

在連接oracle數據庫情況下,設置事務自動提交

調整datagrip調整背景顏色

navicat for mysql

2020-3-26

//查看錶備註

(1)選擇查看的表右鍵選擇[對象信息]

選項ddl會有表的詳細信息

 

//理論部分

//mysql數據庫

# 0:區分大小寫,1:不區分大小寫
lower_case_table_names = 1

>mysql與oracle的區別

1
mysql/oracle 的區別
1.1 項目中遇到學習的
使用:
mysql 中小型項目
oracle 大型項目
主鍵自增 
MySql auto increment
Oracle中沒有自動增長,主鍵一般使用序列
字段
mysql  varchar/data,time/limit
oracle varchar2/data/rounum
提交方式
oracle默認不自動提交,需要用戶手動提交。
mysql默認是自動提交。
1.2 自學,瞭解到的
併發性
mysql以表級鎖爲主,對資源鎖定的粒度很大
oracle使用行級鎖,對資源鎖定的粒度要小很多
一致性
oracle支持serializable的隔離級別
mysql沒有類似oracle的構造多版本數據塊的機制,只支持read commited的隔離級別
邏輯備份
oracle邏輯備份時不鎖定數據,且備份的數據是一致的。
mysql邏輯備份時要鎖定數據,才能保證備份的數據是一致的,影響業務正常的dml使用。

>like的使用

sql語句like查詢,當條件值爲多個時,中間使用:“||”分隔

>>Mysql數據庫安裝包方式安裝:(版本8)
1>下載並解壓並準備初始化文件
初始化配置文件:

a:新建 ini文件
b:命名 my.ini
c:基本配置

[

[mysqld]
# 設置3306端口
port=3306
# 設置mysql的安裝目錄
basedir=
# 設置mysql數據庫的數據的存放目錄
datadir=
# 允許最大連接數
max_connections=200
# 允許連接失敗的次數。這是爲了防止有人從該主機試圖攻擊數據庫系統
max_connect_errors=10
# 服務端使用的字符集默認爲UTF8
character-set-server=utf8
# 創建新表時將使用的默認存儲引擎
default-storage-engine=INNODB
# 默認使用“mysql_native_password”插件認證
default_authentication_plugin=mysql_native_password
[mysql]
# 設置mysql客戶端默認字符集
default-character-set=utf8
[client]
# 設置mysql客戶端連接服務端時默認使用的端口
port=3306
default-character-set=utf8

]
2>在MySQL安裝目錄的 bin 目錄下操作
2.1>初始化數據庫
mysqld --initialize --console
執行完成後,會打印 root 用戶的初始默認密碼
a:如果沒有記住,刪除data文件夾,重新執行
2.2>安裝服務
mysqld --install
3>啓動數據庫
net start mysql
4>修改用戶密碼:
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '新密碼';

>Mysql數據庫安裝包方式安裝:(版本8之前)

1安裝包下載

2安裝包解壓

3修改.int文件

3.1 點擊解壓好的文件可以看到.int文件:

修改int文件名稱:.ini文件的名字修改爲:my.int

3.2新增如下內容:

#安裝目錄 
 basedir =
# 數據庫存放目錄
 datadir =
#端口
 port = 3306

說明:

1

在datadir的路徑最後面添加\\data

data文件夾必須是新建的,必須爲空

Basedir/datadir 路徑指向mysql安裝包的解壓路徑

拓展:

除這些之外,還可以添加存儲引擎/字符集等

4配置環境變量。

5以管理員身份進入mysql路徑下的bin文件夾

6安裝

方式一:執行如下命令

1

mysqld --initialize-insecure --user=mysql

2

mysqld --install mysql --defaults-file=[指 .int 文件路徑]

注意點:

1

my.ini文件的編碼必須是英文編碼(如windows中的ANSI),不能是UTF-8或GBK等。

2

該路徑需要寫在: "" 雙引號中

示例:

"d:\\mysql\\mysql-5.7.17-winx64\\my.int"

上述兩個命令執行結束:提示:Service successfully installed,表示操作成功。

方式二:執行如下命令

mysqld install

該命令執行結束:提示:Service successfully installed.表示操作成功

7測試安裝結果

方式一:

繼續在窗口執行命令:net start mysql

該命令執行結束,提示:

MySQL 服務正在啓動 .
MySQL 服務已經啓動成功。

表示:操作成功

方式二:

通過win+r輸入 services.msc 命令,進入服務,找到mysql啓動即可

>臨時表

使用關鍵字 :TEMPORARY
類別:
1
內部臨時表[/ 輕量級/性能優化]
分類
1.1
    heapi  內存
1.2
    ondisk 磁盤
2
外部臨時表 [關鍵的時候需要使用:TEMPORARY  ;歸屬:當前用戶 ; 銷燬:回話結束,表自動關閉]

日期:2018-4-24

concat
1、功能:將多個字符串連接成一個字符串。

2、語法:concat(str1, str2,...)

返回結果爲連接參數產生的字符串,如果有任何一個參數爲null,則返回值爲null

 

>添加列

mysql數據庫中,表添加一列

ALTER TABLE talbe_name

ADD COLUMN column_name column_type  NULL COMMENT 'column_comment' AFTER `table_old_column`,

說明: 

table_name 要新增的表名稱

column_name 新增列名稱

column_type 新增列類型

column_comment 新增列描述

table_old_column:表中原始列/[建議:新增列位於原始表中最後一列之後]

2

表,修改一個列[demo說明:修改表中一個字段的comment]

ALTER TABLE  table_name

MODIFY COLUMN   update_column_name  VARCHAR(64) NULL COMMENT 'update_comment' AFTER `table_old_column` ;

說明:

table_name: 表名稱

update_column_name :要修改的列名稱

VARCHAR(64) 爲原始字段的原始類型,如果需要,則可以修改爲自身需要的字段類型

update_commenet: 新修改的comment

>mysql存儲引擎:

MyISAM存儲引擎:不支持事務、也不支持外鍵,優勢是訪問速度快
該存儲引擎提供了具有提交、回滾和崩潰恢復能力的事務安全
Memory存儲引擎使用存在於內存中的內容來創建表
Merge存儲引擎是一組MyISAM表的組合

>mysql主從複製:

MySQL Replication:

Replication可以實現將數據從一臺數據庫服務器(master)複製到一或多臺數據庫服務器(slave)

默認情況下屬於異步複製,無需維持長連接 通過配置,可以複製所有的庫或者幾個庫,甚至庫中的一些表 是MySQL內建的,本身自帶的

Replication的原理 :

簡單的說就是master將數據庫的改變寫入二進制日誌,slave同步這些二進制日誌,並根據這些二進制日誌進行數據操作

日期:2018-11-19

1>mysql索引

索引我們分爲四類來講 單列索引(普通索引,唯一索引,主鍵索引)、組合索引、全文索引、空間索引

日期:2019-3-19

1>mysql-sql-優化

explain-查看sql執行計劃;type=range
sql中in不應該包含過多的值
select指定具體字段
當需要一條數據的時候,可以使用limit 1
如果排序字段沒有用到索引就儘量少排序
儘量少用or
union all 替換 union
不適用 order by rand()
分頁;分段
在where子句中避免對字段進行null值判斷
不建議%前綴模糊查詢
避免在where子句中進行字段表達式操作

日期:2019-06-20
>mysql數據庫實例刪除
sc delete mysql

//oracle

>開窗函數

分析函數是Oracle專門用於解決複雜報表統計需求的功能強大的函數,它可以在數據中進行分組然後計算基於組的某種統計值,並且每一組的每一行都可以返回一個統計值

分析函數帶有一個開窗函數over(),包含三個分析子句:分組(partition by), 排序(order by), 窗口(rows) ,他們的使用形式如下:over(partition by xxx order by yyy rows between zzz)

日期:2019-4-23

>>數據類型及其大小
char|n=1 to 2000字節 ;                       
NVARCHAR2|varchar2(n) n=1 to 4000字節
DATE|一般佔用7個字節的存儲空間
TIMESTAMP|7字節或12字節的定寬日期/時間數據類型

日期:2019-6-6

序列

創建語法:

create SEQUENCE SEQUENCE_name

屬性:

increment by n 步長

start with n 起始

no|maxvalue/no|minvalue 是否有最大/小值

no|cycle 是否循環

no|cache 是否緩存

僞列

nextval : 返回下一個可用的序列值

currval :獲取序列當前的值

日期:2019-08-06

業務場景:數據存在做修改;數據不存在做新增

知識點:MERGE INTO

語句格式與說明:


 MERGE INTO tableName
  USING ( select column_1, column_2 from tableName) T2
  ON ( tableName.column_1=T2.column_1 and tableName.column_2 = t2.column_2 )
  WHEN MATCHED THEN
         後面跟update語句,注意點:update 語句不需要on條件中的列,不需要跟表名
         [
         update set
         tableName.column_x=value,
         tableName.column_Y=value,
         tableName.column_Z=value,
         ]
      
  WHEN NOT MATCHED THEN
      後面跟insert語句,注意點:insert 語句不需要添加表名

 

與mybatis結合使用時,需要使用update標籤

日期:2019-08-27


現象: 查詢中使用了distinct關鍵字,且sql中同時使用了order by 

運行結果:ORA-01791: 不是 SELECTed 表達式

解決方案:將出現在order by 中的查詢字段,一一在sql語句中體現出現

//db2

日期:2019-06-21

db2指定schema

在配置文件,數據庫連接配置,url屬性最後加入下面的內容:

:currentSchema=Schema_name;

說明:前面的冒號是必需的;後面的分號是必須的

日期:2019-07-08

場景:連接db2數據庫之後,schema分配的不一定是需要使用的
每次進行sql編寫時需要:schema_name.table_name
解決方式
1>db2獲取當前的schema
  values current schema;
2>修改schema
  set current  schema ='schema_name'

日期:2019-07-21

 查看數據庫版本

select * from product_component_version;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章