//工具部分
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;