MySQLについてのメモ書きです。随時更新する予定です。
よく使うコマンド |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | --◆テーブル一覧 SHOW TABLES; SELECT TABLE_NAME, TABLE_ROWS, TABLE_COMMENT, TABLE_TYPE FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'データベース名' AND TABLE_TYPE LIKE '%TABLE%' --◆インデックス一覧 SHOW INDEXES FROM 'テーブル名' ; SELECT TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA. STATISTICS WHERE TABLE_SCHEMA = 'データベース名' GROUP BY TABLE_NAME, INDEX_NAME ORDER BY 1; --◆DBエンジンINNODBのステータスを表示する --トランザクションのロック情報を確認する SHOW ENGINE INNODB STATUS \G |
ログインユーザーのパスワード変更
1 2 3 4 | --◆rootユーザー mysqladmin -u root password New password: パスワード Confirm new password: パスワード |
MySqlの起動確認 |
1 | mysqladmin -u root -p ping |
MySqlクライアント ログイン・ログアウト |
1 2 3 4 5 6 7 8 9 10 11 12 | --◆ログイン -- -u ユーザ名 -- -p パスワード mysql -u root -p --ポート番号指定 mysql -u root -p -P3306 --◆ログアウト exit ; quit; |
MySqlバージョンの確認 |
1 | select version(); |
データベース |
1 2 3 4 5 6 7 8 9 10 | --◆データベースの一覧 show databases; --◆データベースの作成 create database testdb; --◆データベースの使用 use testdb; |
テーブル操作 |
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 31 | --◆テーブル一覧の表示 SHOW TABLES FROM データベース名; SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_ROWS, TABLE_COMMENT FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'データベース名' AND TABLE_TYPE = 'BASE TABLE' -- BASE TABLE, VIEW --◆テーブル構造の表示 SHOW FIELDS FROM テーブル名; DESC テーブル名; DESCRIBE テーブル名; --◆テーブルの作成 --(例) CREATE TABLE members ( id INT AUTO_INCREMENT COMMENT 'ID' , name VARCHAR (30) COMMENT '名前' , depart VARCHAR (30) DEFAULT '無所属' COMMENT '所属' , age INT COMMENT '年齢' , updated DATETIME COMMENT '更新日時' , PRIMARY KEY (id) ) DEFAULT CHARSET=utf8; --◆テーブルの削除 DROP TABLE members; |
レコード操作 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | --◆レコードの作成 INSERT INTO members (id, name , depart, age, updated) VALUES ( 1, '山本 太郎' , '営業部' , 51, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 2, '山本 次郎' , '事業企画室' , 19, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 3, '山本 三郎' , '経理部' , 44, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 4, '山本 四郎' , '事業推進1部' , 36, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 5, '山本 五郎' , '事業推進2部' , 25, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 6, '山本 六郎' , '事業推進3部' , 41, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 7, '山本 七郎' , '事業推進4部' , 52, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 8, '山本 八郎' , '事業推進5部' , 59, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 9, '山本 九郎' , '品質管理部' , 35, cast ( sysdate() as datetime)); INSERT INTO members (id, name , depart, age, updated) VALUES ( 10, '山本 十郎' , '総務部' , 27, cast ( sysdate() as datetime)); --◆レコードの更新 UPDATE members SET depart = '秘書室' , updated = '2018-01-01' WHERE id = 8; --◆レコードの削除 DELETE FROM members WHERE id = 3; |
ユーザ |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | --◆データベースユーザ一覧の表示 SELECT host, user FROM mysql. user ; --◆データベースユーザの作成 CREATE USER test1@localhost IDENTIFIED BY 'パスワード' ; --◆データベースユーザへの権限付与 GRANT ALL PRIVILEGES ON jsp10.* TO test1@localhost; --設定を反映する FLUSH PRIVILEGES ; |
ビュー |
1 2 3 4 5 6 7 8 9 10 11 | --◆ビューの一覧 SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'データベース名' ORDER BY TABLE_NAME; --◆ビューの作成 CREATE VIEW ビュー名 AS SELECT * FROM テーブル名; --◆ビューの削除 DROP VIEW IF EXISTS ビュー名; |
カラム |
1 2 3 4 5 | --◆カラム一覧 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'データベース名' ORDER BY TABLE_NAME, ORDINAL_POSITION |
トランザクション |
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | --◆AutoCommitの確認 select @@ global .autocommit, @@session.autocommit; show variables like 'autocommit' ; --◆AutoCommitの設定 -- 0:無効 1:有効 SET AUTOCOMMIT=0; --◆セッションの表示 show processlist; --◆ロックタイムアウト値 show global variables like 'innodb_lock_wait_timeout' ; --◆ロックタイムアウト値の変更 SET innodb_lock_wait_timeout=1; --◆InnoDBモニターの有効化 --トランザクションのロック情報を確認するときに使用する SELECT @@ GLOBAL .INNODB_STATUS_OUTPUT, @@ GLOBAL .INNODB_STATUS_OUTPUT_LOCKS; SET GLOBAL INNODB_STATUS_OUTPUT= ON | OFF SET GLOBAL INNODB_STATUS_OUTPUT_LOCKS= ON | OFF --◆DBエンジンINNODBのステータスを表示する --トランザクションのロック情報を確認する SHOW ENGINE INNODB STATUS \G --◆トランザクション分離レベル SELECT @@ GLOBAL .TX_ISOLATION, @@SESSION.TX_ISOLATION; SHOW VARIABLES LIKE 'TX_ISOLATION' ; SET GLOBAL TRANSACTION ISOLATION LEVEL READ COMMITTED ; SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ ; SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED ; SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ ; --◆行ロック(排他ロック) SELECT * FROM TEST WHERE COL1 = 'AAA' FOR UPDATE ; --◆行ロック(共有ロック) SELECT * FROM TEST WHERE COL1 = 'AAA' LOCK IN SHARE MODE; --[補足]排他ロックと共有ロックの違い --共有ロックは、他のトランザクションから参照(SELECT)が可です。 --排他ロックは、他のトランザクションから操作(SELECT,INSERT,UPDATE,DELETE)が不可です。 --◆ロック状態確認 --Table_locks_immediate --Table_locks_waited SHOW STATUS LIKE 'Table%' ; --◆ロック件数確認 SELECT TRX_ID, TRX_STATE, TRX_MYSQL_THREAD_ID, TRX_TABLES_IN_USE, TRX_TABLES_LOCKED, TRX_ROWS_LOCKED, TRX_ROWS_MODIFIED, TRX_UNIQUE_CHECKS FROM INFORMATION_SCHEMA.INNODB_TRX; |
[Windows 10]
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
1 2 | [mysqld] innodb_lock_wait_timeout = 1 |
[AutoCommitの参考URL]
https://open-groove.net/mysql/autocommit/
https://atsuizo.hatenadiary.jp/entry/2016/12/05/000000
インデックス |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | --◆インデックスの表示 show indexes from テーブル名; SELECT TABLE_NAME, INDEX_NAME FROM INFORMATION_SCHEMA. STATISTICS WHERE TABLE_SCHEMA = 'データベース名' GROUP BY TABLE_NAME, INDEX_NAME ORDER BY 1; --◆インデックスの作成 CREATE INDEX インデックス名 ON テーブル名 (カラム名1, カラム名2, ・・・); ALTER TABLE テーブル名 ADD INDEX インデックス名(カラム1, カラム2, ・・・); --◆ユニークインデックスの作成 CREATE UNIQUE INDEX インデックス名 ON テーブル名 (カラム名1, カラム名2, ・・・); ALTER TABLE テーブル名 ADD UNIQUE インデックス名(カラム1, カラム2, ・・・); --◆インデックスの削除 ALTER TABLE テーブル名 DROP INDEX インデックス名; |
[参考]
http://phpjavascriptroom.com/?t=mysql&p=index
関数 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | --システム日時 --SYSDATE() は NOW() のシノニム SELECT NOW(), NOW()+0, SYSDATE() FROM DUAL; + ---------------------+----------------+---------------------+ | NOW() | NOW()+0 | SYSDATE() | + ---------------------+----------------+---------------------+ | 2018-09-24 22:46:51 | 20180924224651 | 2018-09-24 22:46:51 | + ---------------------+----------------+---------------------+ --システム日付 --CURRENT_DATE と CURRENT_DATE() は、curdate()のシノニム。 SELECT CURDATE(), CURDATE()+0, CURRENT_DATE , CURRENT_DATE () FROM DUAL; + ------------+-------------+--------------+----------------+ | CURDATE() | CURDATE()+0 | CURRENT_DATE | CURRENT_DATE () | + ------------+-------------+--------------+----------------+ | 2018-09-24 | 20180924 | 2018-09-24 | 2018-09-24 | + ------------+-------------+--------------+----------------+ |
設定ファイル |
[Windows 10]
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
[CentOS x.x]
ポート番号変更 |
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
1 2 3 4 5 6 7 | [client] #port=3306 port=3307 [mysqld] #port=3306 port=3307 |
文字コード |
1 2 3 4 5 | --◆文字コードの確認 show variables like '%char%' ; --◆作成したテーブル/カラム/の文字コード確認 show create table 'テーブル名' ; |
◆文字コードの変更
[Windows 10]
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
1 2 3 4 5 | [mysqld] character-set-server=utf8 [client] default-character-set=utf8 |
開発環境構築 |
・Windows 10
・GlassFish 4.1.1
・MySQL
手順
(1)JDBCライブラリの配置
(2)コネクションプールの作成
(3)JDBCリソースの作成
(4)持続性ユニットの作成(JPAを使用する場合)
(5)その他
(1)JDBCライブラリの配置
JDBCファイル:mysql-connector-java-5.1.45-bin.jar
配置先パス:C:\Users\ユーザ名\AppData\Roaming\NetBeans\8.2\config\GF_4.1.1\domain1\lib
(2)コネクションプールの作成
GlassFish のコネクションプール
1 2 | cd C:\Program Files\glassfish-4.1.1\glassfish\bin asadmin create-jdbc-connection-pool --datasourceclassname com.mysql.jdbc.jdbc2.optional.MysqlDataSource --restype javax.sql.DataSource mySqlPool |
GlassFishの管理画面から、作成したコネクションプールに対して、プロパティを設定する。
<例>
1 2 3 4 5 6 | ServerName :localhost DatabaseName :MySQL user :test1 password :test1のパスワード URL :jdbc:mysql://locahost:3306/データベース名 port :3306 |
[補足]
GlassFish コネクションプールの削除
1 2 | cd C:\Program Files\glassfish-4.1.1\glassfish\bin asadmin delete-jdbc-connection-pool --cascade true mySqlPool |
(3)GlassFish JDBCリソースの作成
1 2 3 4 5 6 | cd C:\Program Files\glassfish-4.1.1\glassfish\bin asadmin create-jdbc-resource mySqlPool Enter the value for the connectionpoolid option> jdbc /mySqlResource Enter the value for the jndi_name operand> JDBC resource jdbc /mySqlResource created successfully. Command create-jdbc-resource executed successfully. |
[補足]
GlassFish JDBCリソースの削除
1 2 3 4 5 | cd C:\Program Files\glassfish-4.1.1\glassfish\bin asadmin delete-jdbc-resource Enter the value for the jdbc_resource_name operand> jdbc /mySqlResource JDBC resource jdbc /tsukuyomiPool deleted successfully Command delete-jdbc-resource executed successfully. |
(4)持続性ユニットの作成(JPAを使用する場合)
(5)その他
◆Javaプログラムからのルックアップ先
java:comp/env/jdbc/mySqlResource
以上
0 件のコメント:
コメントを投稿