シリアル・create db/user・一覧等 | 淡々たんのメモ

シリアル・create db/user・一覧等

順序値の生成

以下で $DB は Perl の DBD::xxx での操作です.

DB key note
mysql キーワード AUTO_INCREMENT
準備 CREATE TABLE user_info ( userid INT NOT NULL PRIMARY KEY AUTO_INCREMENT, ... )
生成 レコードを直接追加. AUTO_INCREMENT カラムを指定しないもしくはnullを 挿入すると自動的に連番が設定される.
値の取得 SELECT last_insert_id(); $DB->{last_insertid}
備考 -
Oracle キーワード SEQUENCE
準備 CREATE SEQUENCE user_info_userid_seq;
生成 SELECT user_info_userid_seq.nextval FROM dual;
値の取得 SELECT user_info_userid_seq.currval FROM dual;
備考 先に nextval のみ行って, 取得した値を INSERT するか, nextval を INSERT して必要であれば currval を取り出すかで使う.
PostgreSQL キーワード SEQUENCE, (SERIAL型)
準備 CREATE SEQUENCE user_info_userid_seq;
生成 SELECT nextval('user_info_userid_seq');
値の取得 SELECT currval('user_info_userid_seq');
備考 使い方はOracleと同じ.
SQLite2 キーワード INTEGER NOT NULL PRIMARY KEY
準備 CREATE TABLE user_info ( userid INTEGER NOT NULL PRIMARY KEY ...
生成 INSERT INTO userid VALUES (null)
値の取得 SELECT last_insert_rowid(); $DB->func('last_insert_rowid')
備考 基本的にmysqlと同様. 但し INT ではだめ. INTEGER のみ.

準備(DB作成~ユーザ作成)

DB key note
mysql キーワード CREATE DATABASE,GRANT
DB作成 CREATE DATABASE mydata
権限付与 GRANT ALL ON mydata.* TO user@localhost IDENTIFIED BY 'pass';
備考 CREATE USER はない. いきなり GRANT だけでOK.
Oracle キーワード CREATE USER
ユーザ作成 CREATE USER xxx IDENTIFIED BY yyy;
権限付与 GRANT CONNECT,RESOURCE,CREATE SESSION TO xxx;
備考 パスワード部分にクオートいらない.
PostgreSQL キーワード createuser(1), createdb(1)
DB作成 $ createdb mydata
作成 $ createuser xxx;
備考 -
SQLite2 キーワード sqlite
作成 $ sqlite filename.sqlitedb でプロンプト出して DDL 実行すればファイルも作成される.

その他

目的 DB note
スキーマ(名前空間)変更 mysql use mydata
Oracle ALTER SESSION SET CURRENT_SCHEMA = mydata
ツール(CUI) mysql mysql
Oracle sqlplus
PostgreSQL psql
SQLite2 sqlite
InterBase isql
名前空間一覧 mysql show databases
Oracle ?
PostgreSQL $ psql -l; psql> \l
SQLite2 .databases
テーブル一覧 mysql show tables
Oracle SELECT TNAME FROM TAB; SELECT TABLE_NAME FROM USER_TABLES;
PostgreSQL \dt
SQLite2 .tables
ユーザ一覧 Oracle SELECT USERNAME FROM ALL_USERS