アトム-サイト
[ アトム-サイト ] - 管理人さんのページです。
feed-icon RSS2.0   feed-icon Atom
mysql
管理人さんのブログ 2009-10-09 16:17:03

パッケージのインストール
#yum install mysql
#yum install mysql-server

MySQL起動
# /etc/init.d/mysqld start
一番最初はデータベースを初期化してくれます。

root(MySQL)のパスワード設定
# mysqladmin -u root password abcdefg

ログイン
# mysql -u root -p

MySQLのユーザをパスワード付きで作成
mysql> use mysql;
sampleデータベースに対して、sampleユーザのみALL権限を与える。
mysql> GRANT ALL ON sample.* TO sample@localhost IDENTIFIED BY "pass";
確認はSELECT。
mysql> SELECT host, user, password FROM user;
ユーザ削除はDELETE。
mysql> DELETE FROM user WHERE User='sample';
mysql> FLUSH PRIVILEGES;  <直接DBを操作する場合、これで反映させます。

各種コマンド確認
mysql> \h
例えば、システム情報(バージョン確認とか)は
mysql> \s
(# mysql -v -u root -p でもいいですが…)

パスワード変更
mysql> SET PASSWORD FOR root=PASSWORD('hogehoge');

データベース作成
mysql> CREATE DATABASE db_name;
文字コード指定(UTF-8)は↓
mysql> CREATE DATABASE db_name character set utf8;
UTF-8を指定:utf8
Shift JIS を指定:sjis
EUC JP を指定:ujis
データベース削除
mysql> DROP DATABASE db_name;
データベース一覧表示
mysql> SHOW DATABASES;
テーブル一覧表示
mysql> SHOW TABLES;
テーブル内カラム一覧表示
mysql> SHOW COLUMNS FROM table_name;

ログアウト
mysql> \q

バックアップ
# mysqldump -u root -p db_name > dump.bak
文字コードは、基本的にUTF-8として変換します。
そのままの文字コードにてバックアップしたい場合は、
# mysqldump --default-character-set=binary -u root -p db_name > dump.bak

バックアップ戻し
# mysql -u root -p db_name < dump.bak

文字コード調べ
mysql> use your_db
mysql> show variables like 'character_set%';

コメント(0)


postgres
管理人さんのブログ 2009-07-15 12:02:57

postgresユーザになる
root@ubuntu-atsu01:~# id
uid=0(root) gid=0(root) groups=0(root)
root@ubuntu-atsu01:~# su - postgres

psqlでデータベースをいじれます
postgres@ubuntu-atsu01:~$ psql -l
List of databases
Name | Owner | Encoding
------------+----------+------

DBユーザ登録
postgres@ubuntu-atsu01:~$ createuser -P test
ここでパスワード設定。
Shall the new role be a superuser? (y/n) n
Shall the new role be allowed to create databases? (y/n) y
Shall the new role be allowed to create more new roles? (y/n) y
CREATE ROLE

確認は
$ psql
# select usename from pg_user;

DBユーザ削除
postgres@ubuntu-atsu01:~$ dropuser test
DROP ROLE

DB生成
createdb -O www-data(オーナー指定) -E UTF-8 dbname

DB削除
dropdb dbname

↓こんなエラーが出てdropdb出来ない時は、
dropdb: database removal failed: ERROR: database "dbname" is being accessed by other users
データベースへの接続が残っている為。
再起動
# /etc/init.d/postgres restart
すれば、dropdb出来る様になります。

DBに入る
psql DB名

テーブル一覧表示
# select * from pg_tables;
# \d ←コレが楽

ユーザ毎のアクセス制御
/var/lib/pgsql/data/pg_hba.conf の一番下。
host all all 127.0.0.1/32 password
環境に応じて変えてやって、リスタート。
# /etc/init.d/postgresql restart
※上の行から順番に判定するので、同じ様な制御はキチンと無効化する事(コメントアウトする)。

DBのバックアップと取り込み
pg_dump dbname > backupdata
で、取り込む所に移動して
psql -d dbname < backupdata
オーナーを合わせて入れてあげる。また、テーブルのオーナーの違いでアクセスできない時はGRANTでアクセス許可してあげる。

SERIAL値と取り出し
テーブルを作ります
# CREATE TABLE test_tbl ( id SERIAL PRIMARY KEY, name text);
NOTICE: CREATE TABLE will create implicit sequence "test_tbl_id_seq" for serial column "test_tbl.id"
NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "test_tbl_pkey" for table "test_tbl"
CREATE TABLE
出来たテーブルを見る
# \d
List of relations
Schema | Name | Type | Owner
--------+--------------------------+----------+------
public | test_tbl | table | postgres
public | test_tbl_id_seq | sequence | postgres
(15 rows)
SERIAL値はINSERT等でセッションが確立された後のでないと見れない様になっている(自分がINSERTしたSERIAL値を得る事が出来る)
# SELECT CURRVAL('test_tbl_id_seq');
ERROR: currval of sequence "test_tbl_id_seq" is not yet defined in this session
実際にデータを入れてみる
# INSERT INTO test_tbl(name) VALUES('atsu');
INSERT 0 1
# INSERT INTO test_tbl(name) VALUES('hoge');
INSERT 0 1
# SELECT * FROM test_tbl;
id | name
----+--
1 | atsu
2 | hoge
(2 rows)
入れたデータのSERIAL値を得る事ができます
# SELECT CURRVAL('test_tbl_id_seq');
currval
-----
2
(1 row)
SERIAL値を自分で設定するには
# SELECT SETVAL('test_tbl_id_seq', 10);
setval
----
10
(1 row)

TIMESTAMP
小数点の付かないタイムスタンプ
CREATE TABLE test_tbl (
 ……
 ……
 write_time TIMESTAMP(0)
);

1日前表示
postgres=# select now() + INTERVAL '-1 day';
?column?
---------------------------
2008-02-20 20:14:47.475886+09
(1 row)

高速化
EXPLAINを付けてSELECTする。
-> Seq Scan on... と書かれていたら全検索。
Index Scan using... と書かれていたらインデックスが使われている。
cost=0.00..xxx.xx部分が検索時間(少ない程良い)。
インデックスを作るのは
CREATE INDEX index_name ON table_name (fieldname1, fieldname2);


コメント(0)


SQL
管理人さんのブログ 2009-01-29 09:57:19

・テーブル作成
 CREATE TABLE テーブル名 (列名 データ型 ,.......);

・テーブル削除
 DROP TABLE テーブル名;

・データの入力
 INSERT INTO テーブル名 (列名 , 列名 ,.......) VALUES(データ , データ ,.......);

・データの変更
 UPDATE テーブル名 SET 列名 = データ, 列名 = データ ,.... ;

・データの削除(テーブルは残して、中身のみ削除)
 DELETE FROM テーブル名;

・列の追加
 ALTER TABLE テーブル名 ADD 列名 データ型;

・列を削除
 ALTER TABLE テーブル名 DROP 列名;

・列の同じ要素をまとめて、数を数える
 SELECT 列名 ,COUNT(列名) FROM テーブル名 GROUP BY 列名;

コメント(0)


<< 2009年11月
2009年11月21日(土)
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

 最近の書き込み

パソコンショップ
  <2009-11-21 06:56:01>
ネットコマンド
  <2009-11-20 10:30:10>
Linuxコマンド
  <2009-11-18 11:44:56>
家のパソコン
  <2009-11-17 17:25:58>
ROUND 1 (豊橋)
  <2009-11-17 07:49:50>
nPOPs
  <2009-11-15 07:40:23>
打ちっぱなし
  <2009-11-13 15:21:35>
胃カメラ
  <2009-11-13 15:10:33>
T-01A
  <2009-11-13 10:02:41>
画面キャプチャ
  <2009-11-13 07:01:33>


 カテゴリー

おでかけ(67)
サッカー(41)
季節(32)
食べ物(30)
旅(28)
家(28)
映画(26)
地元(25)
DIY(24)
家族(21)
学校(20)
モバイル(20)
生物(20)
健康(19)
Web(17)
風景(17)
ドラマ(17)
通勤(16)
ブログ(14)
Winアプリ(14)
家電(13)
ゲーム(12)
足技(12)
ブラウザ(11)
本(11)
ゴルフ(10)
自転車(10)
Linux(10)
php(9)
javascript(9)
PCハード(9)
ネットワーク(8)
飲み物(8)
会社(8)
感銘映像(6)
税金(5)
空想(5)
VMware(4)
Ruby(4)
データベース(3)
 ・ mysql
 ・ postgres
 ・ SQL
perl(1)