bestlong 怕失憶筆記

當健忘由隨機逐漸趨向常態時,作筆記是非常必要的

Entries for the ‘Database’ Category

SQL Fiddle 一個線上學習與測試多種資料庫 SQL 語法的網站

SQL Fiddle

http://www.sqlfiddle.com/

想要學習、練習 SQL 語法不需要自己面對建立執行環境的地獄,到 SQL Fiddle 網站馬上到天堂。

提供網頁操作介面

SQL Fiddle-1-home

目前有支援下列資料庫:

  • MySQL 5.5.30, 5.6.6 m9, 5.1.61
  • Oracle 11g R2
  • PostgreSQL 9.1.9, 9.2.4, 8.4.17, 8.3.20
  • SQLite (WebSQL)
  • SQLite (SQL.js)
  • MS SQL Server 2012, 2008

SQL Fiddle-2-database-list

使用超簡單,畫面分為三大區:
1.左邊用來建立資料表結構與新增資料,也就是 DDL 部分,
2.右邊用來執行 SQL 語法,也就是 DML 部分
3.下方就是顯示執行結果與執行計畫

若是想要快速體驗,可以直接點選功能表的 View Sample Fiddle 馬上載入系統內準備的 SQL 來享用,很貼心喔。

SQL Fiddle-3-sample

Leave a Comment

在 MySQL 運用 Subquery 來 insert 資料

子查詢好像算是從 MySQL 5.x 版之後才開始有限度的支援,不過因為語法與主流不同所以還是要看官方文件來搞清楚。

因為幫人修改 ECShop 後台功能,要利用剛新增資料的自動編號欄位(action_id)所產生的值來作為之後進行新增資料的關聯欄位(parent_id)的值。

用程式處理當然相信大家都沒有問題的,但是可不可以用 MySQL 的子查詢功能來處理呢?

很簡單,具體的 SQL 語法如下:

1
2
3
4
5
6
7
INSERT INTO <code>ecs_admin_action</code>(parent_id,action_code)VALUES('0', 'currency');

INSERT INTO <code>ecs_admin_action</code>(parent_id,action_code)
SELECT action_id, 'currency_action1' FROM ecs_admin_action WHERE action_code = 'currency';

INSERT INTO <code>ecs_admin_action</code>(parent_id,action_code)
SELECT action_id, 'currency_action2' FROM ecs_admin_action WHERE action_code = 'currency';

詳細說明可參考 MySQL 官方文件

Leave a Comment

MySQL 效能調教工具

MySQL Performance Tuning Primer Script

This script takes information from “SHOW STATUS LIKE…” and “SHOW VARIABLES LIKE…”
to produce sane recomendations for tuning server variables.
It is compatable with all versions of MySQL 3.23 and higher (including 5.1).

Currently it handles recomendations for the following:

  • Slow Query Log
  • Max Connections
  • Worker Threads
  • Key Buffer
  • Query Cache
  • Sort Buffer
  • Joins
  • Temp Tables
  • Table (Open & Definition) Cache
  • Table Locking
  • Table Scans (read_buffer)
  • Innodb Status

網址 http://www.day32.com/MySQL/
下載 http://www.day32.com/MySQL/tuning-primer.sh

這是一個用 Linux shell script 寫出來的調教分析工具,在命令列環境中下載後的使用方法:

1
2
# chmod +x tuning-primer.sh
# ./tuning-primer.sh

經過一段時間的分析就會得到各項資訊與建議,特別是紅色的部分就是需要調整的參數。

Leave a Comment

忘記 PostgreSQL 的管理者密碼該如何重新設定?

若是因為太久沒有使用而忘記 PostgreSQL 資料庫的管理者 postgres 帳號的密碼, 可以用下列的過程來重新設定:

修改用戶端認證設定檔 pg_hba.conf 將原來的 local 設定給註解掉, 例如:

#local all all XXXX

增加一行設定

local all all trust

存檔後重新啟動 postgresql 服務後就可以在主機上免密碼登入

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@bestlong ~]# psql -U postgres template1
Welcome to psql 8.3.7, the PostgreSQL interactive terminal.

Type:  \copyright for distribution terms
       \h for help with SQL commands
       \? for help with psql commands
       \g or terminate with semicolon to execute query
       \q to quit

template1=# alter user postgres password 'YourNewPassword';
ALTER ROLE
template1=# \q
[root@bestlong ~]#

將密碼重設之後再還原 pg_hba.conf 的設定與重新啟動 postgresql 服務, 以回復到原來的安全性

Leave a Comment

如何得知 MySQL 資料庫的 Character Set and Collation ?

每個 MySQL 資料庫都各自有一個預設編碼 (database character set) 與一個預設定序 (database collation) 的設定值.
可以在建立資料庫時決定, 也可以透過 ALTER 來改變. 若是不確定設定值時可以透過下列方式取得:

下列指令可以查詢目前連線使用的資料庫設定值:

1
2
mysql> SHOW VARIABLES LIKE "character_set_database";
mysql> SHOW VARIABLES LIKE "collation_database";

若是有權限存取資料庫可以執行下列指令:

1
mysql> SHOW CREATE DATABASE DATABASE_NAME;

Leave a Comment

  • 工商服務

    廣告讀取中...
  • 近期迴響

  • 標籤

  • 彙整