共通
Oracle Database 21 Express Edition
- コマンドラインクライアントによるデフォルトインスタンスへのログインは
sqlplus system/(インストーラーで設定したパスワード)@xe
- インスタンスの起動・停止はスタートメニューの Oracle Instance Manager より(OS Boot の際、自動的に起動される)
- SQL*Plus の中で、テーブルの仕様を確認するコマンドは
desc テーブル名
、テーブル一覧を保有する簡単なテーブル(もしかしたらビューかも)としてTAB
がある- 列の詳細はテーブル
all_tab_columns
で確認できる
- 列の詳細はテーブル
- Go言語のドライバーとして、今回は https://github.com/sijms/go-ora を使用
- 接続文字列の仕様は
oracle://ユーザ名:パスワード@ホスト名:1521/xe
- 接続文字列の仕様は
- 位置指定のプレースホルダーは
:1
,:2
,… - 日時型は二種類
- DATE - 日付+時刻
- TIMESTAMP - 日付+時刻+1秒未満の時刻
DatabaseTypeName() | ScanType().String() |
---|---|
NCHAR | string |
NUMBER | float64 |
PostgreSQL
scoop install postgresql
だけでインストールできた。さすが OSS- コマンドラインクライアントによるデフォルトインスタンスへのログインは
psql "host=127.0.0.1 port=5432 user=postgres dbname=postgres sslmode=disable"
- インスタンスの起動・停止は
pg_ctl start
/pg_ctl stop
(OSブートで勝手に立ち上がらなかった。よし) - PostgreSQL ではトランザクション内でエラーが一度でも起きると、以後、ロールバックを行うまで、ずっとエラーになる1
- psql の中で、テーブルの仕様を確認するコマンドは
\d テーブル名
、テーブル一覧は\d
で確認できる- 詳細を確認は pg_attribute(テーブルの列情報)、pg_class(テーブルの名前などの情報)、pg_type(データの型情報)などのテーブルを参照する。
- Go言語のドライバーとして、今回は https://github.com/lib/pq を使用
- 接続文字列の仕様は(例)
host=127.0.0.1 port=5432 user=postgres dbname=postgres sslmode=disable
- 接続文字列の仕様は(例)
- 位置指定のプレースホルダ―は
$1
,$2
… - 日時型は3種類2
- timestamp - 日付時刻
- date - 日付のみ時刻なし
- time - 時刻のみ日付なし
DatabaseTypeName() | ScanType().String() |
---|---|
NAME | interface{} |
INT2 | int16 |
INT4 | int32 |
BOOL | bool |
_TEXT | interface{} |
VARCHAR | string |
NUMERIC | interface {} |
DATE,TIME,TIMESTAMP | time.Time |
Microsoft SQL Server
- コマンドラインクライアントによるデフォルトインスタンスへのログインは
sqlcmd -S (自分のPC名) -E
(-S は接続先サーバー、-E は Windows認証を使うことを表す) - インスタンスの起動・停止はスタートメニューの SqlServer Configuration Manager より
- sqlcmd の中で、テーブル一覧を見るコマンドは不明
- sys.objects(テーブルやビューなど)、sys.columns(列情報)、sys.types (型情報)などのテーブルを参照する。
- Go言語のドライバーとして、今回は https://github.com/microsoft/go-mssqldb を使用
- PostgreSQL のようにエラーがあると、トランザクションが壊れるということはなかった。
- 位置指定のプレースホルダ―は
@p1
,@p2
, ... - 日時型は無駄に多い: time, date, smalldatetime, datetime, datetime2, datetimeoffset
- 日時の変換関数も独特(書式の指定が整数の定数とは)
- CAST および CONVERT (Transact-SQL) - SQL Server | Microsoft Learn
- 本来二行であらわすべきものを一行につめこんでいるので、表が読みづらい
DatabaseTypeName() | ScanType().String() |
---|---|
NVARCHAR | string |
INT | int64 |
DATETIME | time.Time |
BIT | bool |
CHAR | string |
DECIMAL | []uint8 |
VARCHAR | string |
MySQL
scoop install mysql
だけでインストール可能- コマンドライン栗案とは
mysql
- データベースへの接続は
mysql
→use データベース名
- データベースは
create database データベース名
だけで作れる
- データベースへの接続は
- インスタンスの起動は
mysqld --standalone
。停止は Ctrl-C で、いいのかな - Go言語のドライバーとして https://github.com/go-sql-driver/mysql を使用
- テーブル一覧は
information_schema.tables
、カラム一覧はinformation_schema.columns
で - 接続文字列は
username:password@protocol(address)/dbname?param=value
だが、デフォルトならroot:@/dbname
でいける(dbname
はmysql
→show databases
で確認できる) - 日時型は、
DATE
: 日付のみ,DATETIME
: 日付+時刻,TIMESTAMP
: エポック秒,TIME
: 時刻,YEAR2
: 2桁年(なぜ),YEAR4
: 4桁年(なぜ)。時刻はマイクロ秒単位 - 日時変換関数は独特
STR_TO_DATE('日時文字列','フォーマット文字列')
- フォーマット文字列はC言語風:
%Y/%m/%d
%Y
: 4桁西暦,%m
: 2桁月,%d
: 2桁日,%H
: 00時〜23時,%i
: 分,%s
: 秒%c
: 0埋めなし月,%e
: 0埋めなし日,%k
: 0埋めなし0時〜23時,
- SQL│文字列を日付型に変換するTo_Date・Convert | アナリティクス沖縄│DataAnalytics
- MySQL :: MySQL 8.0 Reference Manual :: 14.7 Date and Time Functions
DatabaseTypeName() | ScanType().String() |
---|---|
DECIMAL | sql.RawBytes |
VARCHAR | sql.RawBytes |