MySQLについてのメモ書きです。随時更新する予定です。
よく使うコマンド |
--◆テーブル一覧 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
ログインユーザーのパスワード変更
--◆rootユーザー mysqladmin -u root password New password: パスワード Confirm new password: パスワード
MySqlの起動確認 |
mysqladmin -u root -p ping
MySqlクライアント ログイン・ログアウト |
--◆ログイン -- -u ユーザ名 -- -p パスワード mysql -u root -p --ポート番号指定 mysql -u root -p -P3306 --◆ログアウト exit; quit;
MySqlバージョンの確認 |
select version();
データベース |
--◆データベースの一覧 show databases; --◆データベースの作成 create database testdb; --◆データベースの使用 use testdb;
テーブル操作 |
--◆テーブル一覧の表示 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;
レコード操作 |
--◆レコードの作成 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;
ユーザ |
--◆データベースユーザ一覧の表示 SELECT host, user FROM mysql.user; --◆データベースユーザの作成 CREATE USER test1@localhost IDENTIFIED BY 'パスワード'; --◆データベースユーザへの権限付与 GRANT ALL PRIVILEGES ON jsp10.* TO test1@localhost; --設定を反映する FLUSH PRIVILEGES;
ビュー |
--◆ビューの一覧 SELECT * FROM INFORMATION_SCHEMA.VIEWS WHERE TABLE_SCHEMA = 'データベース名' ORDER BY TABLE_NAME; --◆ビューの作成 CREATE VIEW ビュー名 AS SELECT * FROM テーブル名; --◆ビューの削除 DROP VIEW IF EXISTS ビュー名;
カラム |
--◆カラム一覧 SELECT * FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'データベース名' ORDER BY TABLE_NAME, ORDINAL_POSITION
トランザクション |
--◆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
[mysqld] innodb_lock_wait_timeout = 1
[AutoCommitの参考URL]
https://open-groove.net/mysql/autocommit/
https://atsuizo.hatenadiary.jp/entry/2016/12/05/000000
インデックス |
--◆インデックスの表示 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
関数 |
--システム日時 --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
[client] #port=3306 port=3307 [mysqld] #port=3306 port=3307
文字コード |
--◆文字コードの確認 show variables like '%char%'; --◆作成したテーブル/カラム/の文字コード確認 show create table 'テーブル名';
◆文字コードの変更
[Windows 10]
C:\ProgramData\MySQL\MySQL Server 5.7\my.ini
[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 のコネクションプール
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の管理画面から、作成したコネクションプールに対して、プロパティを設定する。
<例>
ServerName :localhost DatabaseName :MySQL user :test1 password :test1のパスワード URL :jdbc:mysql://locahost:3306/データベース名 port :3306
[補足]
GlassFish コネクションプールの削除
cd C:\Program Files\glassfish-4.1.1\glassfish\bin asadmin delete-jdbc-connection-pool --cascade true mySqlPool
(3)GlassFish JDBCリソースの作成
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リソースの削除
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 件のコメント:
コメントを投稿