約 3,765,300 件
https://w.atwiki.jp/naobe/pages/48.html
RDBに戻る rootユーザにパスワード設定 $mysql -u root -p Enter password 最初は、rootユーザのパスワードなし。 mysql set password for root@localhost=PASSWORD('パスワード'); 次回からは、Enter password でパスワードを入力する。 ユーザ作成 http //linux.kororo.jp/cont/server/mysql_user.php 参照 GRANTの構文 GRANT 権限 ON DB名.テーブル名 TO ユーザ名 INDENTIFIED BY 'パスワード' mysql -u root -pを実行した後で GRANT ALL PRIVILEGES ON *.* TO 'USER'@'localhost' IDENTIFIED BY 'PASSWORD'; kororoユーザに全ての権限を与える GRANT ALL PRIVILEGES ON *.* TO kororo@localhost IDENTIFIED BY 'test_pass' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO kororo@"%" IDENTIFIED BY 'test_pass' WITH GRANT OPTION; データベース作成 mysql -u root -pを実行した後で CREATE DATABASE IF NOT EXISTS データベース名; データベース選択 mysql use データベース名 テーブル作成 CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] create_definition col_name column_definition | [CONSTRAINT [symbol]] PRIMARY KEY [index_type] (index_col_name,...) [index_type] 【例】 CREATE TABLE suna.a ( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, TYPE INTEGER, TERMID INTEGER, DETAILID INTEGER); データベース一覧 mysql show databases テーブル一覧 mysql show tables SQLをファイルから実行 shell mysql -u root -p [[SQL]]が書かれたファイル名 テーブル構成表示 mysql desc テーブル名 コメント --, # 文末まで /* */ 文を超えて DB作成、テーブル作成、データ投入SQL例 # DB作成 DROP DATABASE IF EXISTS SUNA; CREATE DATABASE SUNA CHARACTER SET utf8; # TB作成 DROP TABLE IF EXISTS SUNA.TERM; ## 項目 CREATE TABLE SUNA.TERM( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(64)); ## 項目詳細 DROP TABLE IF EXISTS SUNA.DETAIL; CREATE TABLE SUNA.DETAIL( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, NAME VARCHAR(128)); ## 収支 DROP TABLE IF EXISTS SUNA.SHUSI; CREATE TABLE SUNA.SHUSI( ID INTEGER NOT NULL AUTO_INCREMENT PRIMARY KEY, TYPE INTEGER NOT NULL, GENERATED DATE NOT NULL, TERMID INTEGER NOT NULL, DETAILID INTEGER NOT NULL, AMOUNT INTEGER NOT NULL, FOREIGN KEY(TERMID) REFERENCES SUNA.TERM(ID), FOREIGN KEY(DETAILID) REFERENCES SUNA.DETAIL(ID) ); # データ投入 ## 項目 INSERT INTO SUNA.TERM (NAME) VALUES('給料'); INSERT INTO SUNA.TERM (NAME) VALUES('食費'); INSERT INTO SUNA.TERM (NAME) VALUES('遊興費'); INSERT INTO SUNA.TERM (NAME) VALUES('交通費'); INSERT INTO SUNA.TERM (NAME) VALUES('家賃'); INSERT INTO SUNA.TERM (NAME) VALUES('通信費'); INSERT INTO SUNA.TERM (NAME) VALUES('書籍'); INSERT INTO SUNA.TERM (NAME) VALUES('煙草'); INSERT INTO SUNA.TERM (NAME) VALUES('雑費'); ## 詳細 INSERT INTO SUNA.DETAIL (NAME) VALUES('なし'); INSERT INTO SUNA.DETAIL (NAME) VALUES('朝食'); INSERT INTO SUNA.DETAIL (NAME) VALUES('昼食'); INSERT INTO SUNA.DETAIL (NAME) VALUES('夕食'); INSERT INTO SUNA.DETAIL (NAME) VALUES('パチンコ'); INSERT INTO SUNA.DETAIL (NAME) VALUES('定期'); INSERT INTO SUNA.DETAIL (NAME) VALUES('ビール'); INSERT INTO SUNA.DETAIL (NAME) VALUES('新聞'); INSERT INTO SUNA.DETAIL (NAME) VALUES('飲料'); ## 収支 INSERT INTO SUNA.SHUSI (TYPE, GENERATED, TERMID, DETAILID, AMOUNT) VALUES(1, '2011-01-01', 8, 1, 410);
https://w.atwiki.jp/parepan/pages/28.html
準備 # groupadd mysql # useradd -g mysql -d /usr/local/mysql mysql # passwd mysql # chown -R mysql mysql /usr/local/mysql/ インストール # ./configure --prefix=/usr/local/mysql --with-charset=ujis --with-extra-charsets=all --with-mysqld-user=mysql # make # make install データベースを初期化します。 # ./scripts/mysql_install_db --user=mysql 初期化が終了すると、mysqlとtestというデータベースが作成されます。 次のようにMySQLのrootユーザーパスワードの変更方法、MySQLの起動方法が表示 されれば正常終了です。 ----------------------------------------------------------------------------------------------- Installing MySQL system tables... OK Filling help tables... OK To start mysqld at boot time you have to copy support-files/mysql.server to the right place for your system PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER ! To do so, start the server, then issue the following commands /usr/local/mysql/bin/mysqladmin -u root password new-password /usr/local/mysql/bin/mysqladmin -u root -h JASNS password new-password See the manual for more instructions. You can start the MySQL daemon with cd /usr/local/mysql ; /usr/local/mysql/bin/mysqld_safe You can test the MySQL daemon with mysql-test-run.pl cd mysql-test ; perl mysql-test-run.pl Please report any problems with the /usr/local/mysql/bin/mysqlbug script! The latest information about MySQL is available on the web at http //www.mysql.com Support MySQL by buying support/licenses at http //shop.mysql.com ----------------------------------------------------------------------------------------------- インストールが完了したらデータディレクトリ以下の所有者をmysqlに変更します。 # chown -R mysql /usr/local/mysql/var # chgrp -R mysql /usr/local/mysql/var MySQLを下記コマンドで起動してみます。 # /usr/local/mysql/bin/mysqld_safe --user=mysql Starting mysqld daemon with databases from /usr/local/mysql/var 実行されているかを確認するには # /usr/local/mysql/bin/mysqlshow と入力して次のように表示されればインストールは終了です。 データベースへ接続するには、 $ mysql -u ユーザーID -p データベース名 PHP-5.2.3インストール時のエラー対策 ・ ”libxml2”ってのが引っかかった. インストール直後の状態だと”./configure”の時にlibxml2のバージョンが古いとかで以下のようなエラーが表示された. Configuring extensions checking whether to enable LIBXML support... yes checking libxml2 install dir... no configure error libxml2 version 2.5.10 or greater required. libxml2最新版のrpmは”ftp //xmlsoft.org/”で入手可能. パッケージのアップデート # rpm -Uvh libxml2-* 警告 libxml2-2.6.11-1.i386.rpm V3 DSA signature NOKEY, key ID de95bc1f Preparing... ########################################### [100%] 1 libxml2 ########################################### [ 33%] 2 libxml2-devel ########################################### [ 67%] 3 libxml2-python ########################################### [100%] これさえ気をつければインストールに関しては4系と同じなんじゃないかと. 自動起動設定 # install -o root -g root -m 755 /usr/local/mysql/share/mysql/mysql.server /etc/init.d/mysql # chkconfig --add mysql rootユーザにパスワード設定 データベースへ接続するには、 $ mysql -u ユーザーID -p データベース名 今回は、初回のログインなので # mysql -u root -p mysql を実行します。 mysql SELECT host,user,password from user; を実行してユーザーを確認します。(以下に3種類の方法をあげます) 1.mysql SET PASSWORD FOR root@localhost=PASSWORD( new_password ); 2.mysql GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY パスワード WITH GRANT OPTION; 3.# /usr/bin/mysqladmin -u root -p password new-password ユーザー名無しの匿名ユーザーも作成されているので、 このユーザーは、削除します。権限はほとんどないそうですが 念のために削除します。 mysql DELETE FROM user where user= ; 匿名のユーザーが削除されたかを確認します。 mysql SELECT host,user,password from user; ※userにrootのみ表示されていれば成功です。 リモート接続設定 # mysql -u root -p JASNSDB01 で対象テーブルにログインします。 ユーザー名「k_uematu」を作成しすべてのホストからアクセスする場合 mysql GRANT ALL PRIVILEGES ON *.* TO k_uematu@ % IDENTIFIED BY 45jz yd@ ; IPアドレス「185.81.1.1」からアクセスできるユーザー名「k_uematu」を作成し各権限を与える場合 mysql GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON test.* TO k_uematu@ 185.81.1.1 IDENTIFIED BY 45jz yd@ ; Query OK,0 rows affected (0.00 sec)
https://w.atwiki.jp/wiki7_az/pages/15.html
前提条件MySQLがRPMからインストールされているものとする 起動 # service mysqld start データベース作成 # mysql -u root create database coreblock; root のパスワードを設定する # mysql -u root cookbook SET PASSWORD FOR root='root'; アクセス権を設定する GRANT ALL PRIVILEGES ON *.* TO root@localhost IDENTIFIED BY 'root' WITH GRANT OPTION; GRANT ALL PRIVILEGES ON *.* TO root@"%" IDENTIFIED BY 'root' WITH GRANT OPTION; ユーザー作成 GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON *.* TO username@localhost IDENTIFIED BY 'password'; GRANT SELECT,INSERT,UPDATE,DELETE,CREATE,DROP ON *.* TO username@"%" IDENTIFIED BY 'password'; 存在するテーブルの確認 # mysqlshow # mysql test テーブルを作成する create table test_table ( id int(10), [[memo]] char(240) ); テーブル一覧を表示する show tables データを insert する insert into test_table values (1,'1st'); insert into test_table values (2,'2nd'); データを select する select * from test_table; TIMESTAMP 型カラムのデフォルト値は、現在の日時になる。日付カラムのデフォルト値として、NOW() や CURRENT_DATE などの関数を設定することはできない。 参考URL PHP Miracle Linux V3.0 の場合、デフォルトで PHP が有効 設定ファイルは /etc/httpd/conf.d/php.conf サンプルプログラムを動かす # vi /var/www/html/index.php HTML BODY ?php print "Hello world!"; ? /BODY /HTML memo Oracle のシーケンスにあたるものとして auto_increment がある。 varchar型は最大255文字まで。それ以上の場合はtext型を使う。 テーブルタイプMyISAM デフォルトのテーブル型 innoDB トランザクション、行レベルロック、外部キーが使える。大容量のデータを処理する際に最大限のパフォーマンスを実現するように設計されている。 参考URLhttp //www.atmarkit.co.jp/flinux/special/mysql5/mysql5b.html http //tsuttayo.sytes.net/mysql/innodb/ http //dev.mysql.com/doc/refman/4.1/ja/innodb-overview.html
https://w.atwiki.jp/banrui/pages/23.html
MySQL.com 使い方参考サイト LOAD DATA INFILE 構文 参考 CSVファイル入出力 参考 mysqldump リファレンス mysqldumpでテーブル定義のみを取得 MySQLでバックアップ(ダンプ、エクスポートとインポート) Mac に MacPorts を使って MySQL と PHPMyAdmin をインストールする方法 初期設定:sudo -u mysql mysql install_db5 起動テスト; sudo /opt/local/share/mysql5/mysql/mysql.server start rootユーザーのパスワード設定:/opt/local/lib/mysql5/bin/mysqladmin -u root password password login /opt/local/lib/mysql5/bin/mysql -u root -ppassword MacOSにMySQLインストール aliasの設定 alias mysql= /opt/local/lib/mysql5/bin/mysql -u root -p ubuntuでMySQL 参考サイト ユーザ権限の追加 http //phpspot.net/php/pgMySQL%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE%E8%BF%BD%E5%8A%A0.html 起動 sudo /opt/local/share/mysql5/mysql/mysql.server start 停止 sudo /opt/local/share/mysql5/mysql/mysql.server stop 起動 bash cd /usr/local/mysql bash sudo ./bin/mysqld_safe (必要ならパスワードを入力) (Control-Z) bash bg (Control-D か "exit" を入れてシェルから抜ける) 停止コマンド bash sudo /Library/StartupItems/MySQLCOM/MySQLCOM stop
https://w.atwiki.jp/kamiyoc/pages/18.html
設定確認 その他確認 設定変更 character_set ユーザー作成 DB・テーブル確認 DB作成 テーブル作成・編集 テーブルバックアップ・復元 ファイル出力 ログ出力 設定確認 C \ProgramData\MySQL\my.ini mysql show variables; mysql show variables like innodb_% ; mysql show variables like %mem% ; mysql show variables like %datadir% ; mysql status; SHOW WARNINGS; ポート確認 mysql show variables like port ; 上へ その他確認 処理中プロセス mysql show processlist; 現在の接続しているスレッド数 mysql show status like Threads_connected ; ロック確認 SHOW ENGINE INNODB STATUS; select * from information_schema.INNODB_TRX \G; select * from information_schema.INNODB_LOCKS \G; select * from information_schema.INNODB_LOCK_WAITS\G; SELECT @@GLOBAL.tx_isolation, @@tx_isolation; 大文字小文字の区別 show variables where variable_name= lower_case_table_names ; my.cnf [mysqld] lower_case_table_names = 0 で変更 DBサイズ SELECT table_schema, sum(data_length+index_length) /1024 /1024 AS MB FROM information_schema.tables GROUP BY table_schema ORDER BY sum(data_length+index_length) DESC; テーブルサイズ SELECT table_name, engine, table_rows AS tbl_rows, avg_row_length AS rlen, floor((data_length+index_length)/1024/1024) AS all_mb, floor((data_length)/1024/1024) AS data_mb, floor((index_length)/1024/1024) AS index_mb FROM information_schema.tables WHERE table_schema=database() ORDER BY (data_length+index_length) DESC; 上へ 設定変更 # service mysqld restart 再起動後、ログが適用されたら書き込みがないうちにすぐに停止 # service mysqld stop my.cnf でログファイルサイズの書き換え # vi /etc/my.cnf ログファイルの移動(念のため削除ではなくバックアップ) # mv /var/lib/mysql/ib_logfile* /(backupdir)/ mysqld 起動 # service mysqld start ログファイルが指定したサイズで再作成されたことを確認 # ls -l /var/lib/mysql/ib_logfile* ※ innodb_buffer_pool_size は[mysqld]の下に置く 上へ character set set character set charset_name -- 以下を実行したことと同様 set character_set_client = charset_name; set character_set_results = charset_name; set collation_connection = @@collation_database; -- collation_databaseと同じ値に設定する 上へ ユーザー作成 ユーザー確認 SELECT host,user FROM mysql.user; SELECT * FROM mysql.user \G; ユーザー作成 GRANT ALL PRIVILEGES ON *.* TO sasuke@localhost IDENTIFIED BY aaa WITH GRANT OPTION; rootのパスワード SET PASSWORD FOR root@localhost=PASSWORD( hoge ); ユーザー削除 DELETE FROM mysql.user WHERE user= sasuke ; 上へ DB・テーブル確認 show databases; show tables; SHOW CREATE TABLE tbl_name ; show procedure status; show function status; show create procedure プロシージャ名; select table_schema,table_name,table_type,table_rows,table_collation from information_schema.TABLES; カラム確認 select TABLE_SCHEMA,TABLE_NAME,COLUMN_NAME,COLUMN_DEFAULT,IS_NULLABLE,CHARACTER_SET_NAME ,COLUMN_TYPE,COLUMN_KEY,COLUMN_COMMENT from information_schema.COLUMNS; ビュー確認 SELECT * FROM information_schema.views WHERE TABLE_NAME = ビュー名 ストアド確認 SHOW CREATE FUNCTION test1 \G SHOW CREATE PROCEDURE test1 \G SELECT ROUTINE_SCHEMA, ROUTINE_NAME, ROUTINE_TYPE FROM information_schema.ROUTINES WHERE ROUTINE_TYPE = PROCEDURE ; 上へ DB・テーブル作成 DB作成 mysql CREATE DATABASE データベース名 CHARACTER SET utf8; DB削除 mysql DROP DATABASE test_db1; 上へ テーブル作成・編集 テーブル削除 DROP TABLE IF EXISTS `testdb`.`createtest`; テーブル追加 CREATE TABLE `testdb`.`createtest` ( `userid` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `password` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin NOT NULL, `email` varchar(50) CHARACTER SET utf8 COLLATE utf8_bin DEFAULT NULL, PRIMARY KEY (`userid`), KEY `username` (`username`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8; テーブル編集 ALTER TABLE tbl_name ADD COLUMN col_name INT(11) DEFAULT 0 NOT NULL AFTER other_col_name; ALTER TABLE tbl_name CHANGE COLUMN old_col new_col INT(11) NOT NULL AUTO_INCREMENT; ALTER TABLE tbl_name MODIFY COLUMN col_name VARCHAR(128) NOT NULL; ALTER TABLE tbl_name DROP COLUMN col_name; alter table 対象テーブル add unique (対象フィールド); 上へ テーブルバックアップ・復元 バックアップ mysqldump -u napzak -p foo_db db_backup_`date +%Y%m%d-%H%M%S`.sql ストアドも mysqldump -R -u napzak -p foo_db db_backup.sql データのみダンプ mysqldump -u root -p DB名 --skip-dump-date --no-create-info --default-character-set=binary onlyData.sql スキーマとViewのみダンプ mysqldump -u root -p DB名 --no-data --skip-dump-date onlySchemaWithView.sql ストアドのみダンプ mysqldump -u root -p DB名 --skip-dump-date --no-create-info --no-data --routines onlyFunctions.sql テーブル単位 mysqldump -u root -p database_name table_name1 table_name2 dump.sql オプションの説明 --skip-dump-date ダンプした日を出力 --no-create-info create table文を出力しない --no-data データを出力しない --routines ストアド情報を出力 復元 shell mysql -u napzak -p --default-character-set=utf8 foo_db dump.sql または mysql source dump.sql 上へ ファイル出力 mysql -uroot -p -e "SELECT * FROM table_name" db_name /tmp/mysql.tsv SELECT * FROM test INTO OUTFILE /var/lib/mysql-files/test.dmp ; --secure-file-priv の権限が必要 上へ ログ出力 SET GLOBAL general_log= on SET GLOBAL log_output= table なんかやる SELECT * FROM mysql.general_log SET GLOBAL general_log= off 上へ ここを編集
https://w.atwiki.jp/nicepaper/pages/17.html
SQLインジェクション対策を兼ねたデータベースの使い方を記述します。 主にはPDOを使った方法を記載していきます。ここでは例としてMySQL(UTF-8)を使います。 また、この資料を記述していくにあたり、 DBの場所はlocalhost、ポート番号は3306、データベース名はDBname、ユーザ名はDBuser、パスワードはDBpasswordというものにします。 各自がご利用になるときは適宜置き換えてください。 目次 PDOとは 自分のサーバでPDOは使えるのか? PDOでデータベース接続 PDOとは PDOとは、PHP Data Objectsの略で、phpでデータベースとやりとりする際に利用するメソッドです。 今まではphpでmysql_connect()と接続していましたが、これではMySQLしか利用できません。 PDOを使うことで、どのデータベースを利用する場合でも同じ関数を使うことができるので、データベースを変更したとしても、設定したPDOオブジェクトを作成する時に指定したパラメータをphp.iniで変更すればいいので融通が利きます。 自分のサーバでPDOは使えるのか? phpが動くサーバでphpinfo()関数を走らせてみて、結果を見てみましょう。 phpプログラム(info.php) ?php phpinfo(); ? と記述し、ブラウザでinfo.phpに行けば確認できます。 以下のようになっていれば使えます。 自分でサーバを管理している人は、設定ファイルphp.iniで設定が必要なので検索してみてください。 (というのは、適当すぎなのでURL紹介しておきます。こちらです。) PDOでデータベース接続 ではまずはデータベースに接続して、接続できなければエラーを返すプログラムを書きましょう。 ファイル名(なんでもいいけど.php) ?php $dsn = mysql dbname=DBname;host=localhost;port=3306;charset=utf8 ; $user = DBuser ; $password = DBpassword ; try{ $dbh = new PDO($dsn, $user, $password); print( 接続に成功しました。 br ); } }catch (PDOException $e){ print( Error .$e- getMessage()); die(); } $dbh = null; ? 接続に成功しましたとかえってこればOKです。
https://w.atwiki.jp/programming_note/pages/17.html
0. 主要Issue CAP定理 Architecture データの完全性を担保するための制約定義及び、テーブル構造はどのようなものか? Performance Performanceを最大化させる、制約定義及び、テーブル構造はどのようなものか? MySQL WorkBench上での、効率的なArchitecture 設計はどのように行うものなのか? 1. MYSQLの基本作法 Login basic Column情報表示 行数数える unique 設定/解除 重複列削除 change join (単純結合、等価結合、外部結合、再帰結合) create table new_table as select * XXXXX. データ挿入 Nullを0に変更 2. Tableへの制約の設定 (整合性制約定義) PRIMARY_KEY設定 UNIQUE 制約 INDEX, KEY 設定 FOREIGN KEY(外部キー)制約 AUTO_INCREMENT 3. Dump 4. Sequel Pro の活用 4. Administration 5. Optimization 6. 文字化け/encoding 0. 主要Issue CAP定理 設計の考え方 インフラレイヤの設計 開発環境の整備 「開発インフラ」と「運用インフラ」の2つを「安く,早く, よいもの」が出来るように設計する 意識する変数は下記で、CAP定理に基づき、サービスに応じてコンポーネントを選択する ① Availability 高可用性 サーバーが一台落ちてもサービスが継続するか ② Consistency データ整合性 ③ Scalability Amazon EC2等の普及により、Scale up よりScale outが低コスト,高機能に (運用.管理の手間は増大する傾向) ④ Partition 選択すべきコンポーネントは「DBの種類」と「DBの組み合わせ」 MongoDB Architecture データの完全性を担保するための制約定義及び、テーブル構造はどのようなものか? Performance Performanceを最大化させる、制約定義及び、テーブル構造はどのようなものか? MySQL WorkBench上での、効率的なArchitecture 設計はどのように行うものなのか? 1. MYSQLの基本作法 Login mysql -h 127.15.0.1 -P 23306 -u uenoyama -p basic * select [☆1. 縦にColumns as XXX を選択する] * xxx as aaa * yyy as bbb * count(distinct XXXX) as ccc * IFNULL(式A,式B) as DAU * from [☆2. 選択元のTable を選択する] * table_name * join dbname.tablename g ON g.XXXX = YYYY * join dbname.tablename g ON g.XXXX = YYYY * where [☆3. 選択する条件と指定する] * xxx = aaa * and yyy = bbb * and zzz like ccc * group by [4. 出力する条件を指定する] * date * order by * date 例 SELECT g.gme_title AS GAME, gme_version as VERSION, p.ptf_device AS PLATFORM, date(lse_client_timestamp) AS DATE, cat.ctg_name AS CATEGORY, subcat.sctg_name AS SUBCATEGORY, count(*) AS LANDING_PAGE_HITS, count(distinct lse_usr_id) as UU FROM `gii_analytics`.`landing_screen_events` master JOIN `gii_analytics`.`games` g ON g.gme_id = master.lse_gme_id JOIN `gii_analytics`.`platforms` p ON p.ptf_id = master.lse_ptf_id JOIN `gii_analytics`.`categories` cat ON cat.ctg_id = master.lse_ctg_id JOIN `gii_analytics`.`subcategories` subcat ON subcat.sctg_id = master.lse_subcategory_ctg_id WHERE gme_id = 1 AND master.lse_usr_id IN ( SELECT subchild.ugc_usr_id FROM `gii_analytics`.`user_catalog` subchild WHERE date(subchild.ugc_join_date) date_sub(master.lse_date, interval 1 day) AND subchild.ugc_game_id=master.lse_gme_id AND subchild.ugc_ptf_id=master.lse_ptf_id ) GROUP BY GAME, VERSION, PLATFORM, DATE, CATEGORY, SUBCATEGORY ORDER BY GAME, VERSION, PLATFORM, DATE, CATEGORY, SUBCATEGORY ; Column情報表示 show columns from table_name; 行数数える * select count(*) from tweet; * count(distinct, XXXX) unique 設定/解除 * ALTER TABLE companyapp_development.crunchbase_companylist ADD CONSTRAINT UNIQUE(permalink); * ALTER TABLE talbe_name ADD [CONSTRAINT [symbol]] UNIQUE [index_name] (col_name,...) * ALTER TABLE talbe_name DROP INDEX index_name 重複列削除 * CREATE TABLE temp_table as SELECT * FROM main_table GROUP BY field_1, field_2 * create table companyapp_development.crunchdb_companylist as select * from companyapp_development.crunchbase_companylist group by permalink; change * drop * alter table XXX rename to YYY join (単純結合、等価結合、外部結合、再帰結合) SELECT g.gme_title AS GAME, gme_version as VERSION, p.ptf_device AS PLATFORM, test.usr_udid AS UDID, qee_usr_id as USER_ID, date(qee_client_timestamp) AS DATE, cat.ctg_name AS CATEGORY, qee_quest AS QUEST_ID, count(qee_quest) AS NUM_ENDS FROM `gii_analytics`.`quest_end_events` master JOIN `gii_analytics`.`games` g ON g.gme_id = master.qee_gme_id JOIN `gii_analytics`.`platforms` p ON p.ptf_id = master.qee_ptf_id JOIN `gii_analytics`.`categories` cat ON cat.ctg_id = master.qee_ctg_id JOIN `gii_analytics`.`users` test ON test.usr_id = master.qee_usr_id WHERE date(qee_client_timestamp) = date_sub(curdate(), interval 30 day) AND gme_title LIKE %3176 GROUP BY GAME, VERSION, PLATFORM, DATE, QUEST_ID,USER_ID ORDER BY GAME, VERSION, PLATFORM, DATE, QUEST_ID,USER_ID ; create table new_table as select * XXXXX. CREATE TABLE tweetnew ( tweet_id varchar(255), tweet_time varchar(255), twitter_user varchar(255), twitter_user_id varchar(255), tweet_body varchar(255) ); データ挿入 INSERTINTO tweetnew (tweet_id,tweet_time,twitter_user,twitter_user_id,tweet_body) select tweet_id,tweet_time,twitter_user,twitter_user_id,tweet_body from tweet_tests limit 10; #ここにSQL文 Nullを0に変更 * update crunchdb_companyinfo4 set founded_year=coalesce(founded_year,0); 2. Tableへの制約の設定 (整合性制約定義) 考え方 データの完全性を守るために様々な制約を定義する。Versionによって定義できる制約が異なる 行数が増えて行くだけの静的DBか更新が頻繁に掛かる動的DBかで設計が異なる 基本的には各テーブルにPRIMARY KEYを設定し、Crontabで週次/月次更新でアップデート 1. 各テーブルの一つのカラムにプライマリーキー制約を付ける UNIQUE, NOT NULL 制約 (PRIMARYという名前のユニークインデックスを作成する事と同義) 複数のカラムに設定すると、対象カラム情報の組み合わせがが完全一致したデータの格納をはじく 2. UNIQUE ID番号を自動振り分けする場合はAUTO INCREMENT 制約を用いる より厳重な完全性が必要な場合(データ更新が頻繁 等) は、外部キーを貼ることで、テーブル間の整合性も取る 親テーブル値のみを子テーブルに存在させ、データの整合性を担保する 適宜更新されていくテーブルを軸に、連鎖更新、連鎖削除を設定する(user名の更新 等) PRIMARY_KEY設定 CREATE TABLE db_name.tbl_name (col_name1 data_type1 NOT NULL PRIMARY KEY, col_name2 data_type2, ...); e.g. CREATE TABLE company_list (company_id varchar(255) NOT NULL PRIMARY KEY, company_name varchar(255)); http //www.dbonline.jp/mysql/table/index8.html UNIQUE 制約 INDEX, KEY 設定 FOREIGN KEY(外部キー)制約 親テーブルと子テーブル 親 - 子 親テーブルのカラムの値は子テーブルから参照される 子テーブルの指定したカラムに格納できる値を親のテーブルに格納されている値だけに限定 親テーブルに存在しない値を持つデータを追加しようとするとエラーが発生 親テーブル側のカラムの値を更新したり削除したりする場合には注意が必要 Restrict/No action 親テーブルの更新,削除がエラーになる Cascade 親テーブルに合わせて、子テーブルを更新 Set Null Null 値になる http //dev.mysql.com/doc/refman/4.1/ja/innodb-foreign-key-constraints.html http //dev.mysql.com/doc/workbench/en/wb-relationship-tools.html http //www.dbonline.jp/mysql/table/index11.html AUTO_INCREMENT CREATE TABLE db_name.tbl_name (col_name1 data_type1 NOT NULL PRIMARY KEY, col_name2 data_type2, ...); 3. Dump ◆ Step1 Dump to .sql file $ mysqldump -u[user] -p [dbname] ([table]) backup.sql $ mysqldump -u uenoyama -p XXXXX backup.sql $ mysqldump -u uenoyama@bosho-udon.ddo.jp -p XXXXX(tweet) backup.sql ◆ Step2 scp transfer is better than sftp transfer $ scp uenoyama@bodho-udon.ddo.jp /home/uenoyama/backup.sql ./ $ scp katsuya@www5290ua.sakura.ne.jp /home/katsuya/apps/promotionapp/app/views nana.png http //cns-guide.sfc.keio.ac.jp/2004/2/6/2.html ◆ Step3 Insert to Mysql 入れたいサーバ $ mysql -u[user] -p[passwrd] backup.sql 1. 元データのサーバからDump $ mysqldump -u[user] -p[passwrd] [dbname] ([table]) backup.sql 2. 他サーバーへ転送 scp uenoyama@bodho-udon.ddo.jp /home/uenoyama/backup.sql ./ scp katsuya@www5290ua.sakura.ne.jp /home/katsuya/apps/promotionapp/app/views/tweets nana.png 3. 入れたいサーバへの挿入 $ mysql -u[user] -p[passwrd] backup.sql 4. Sequel Pro の活用 Shot cut http //www.sequelpro.com/docs/Keyboard_Shortcuts http //dev.mysql.com/doc/workbench/en/ 4. Administration * create user * system authorization 5. Optimization http //dev.mysql.com/doc/refman/4.1/ja/mysql-optimisation.html 6. 文字化け/encoding 1. emacsのencodingをすべてutf-8に揃える → .emacs をいじる - emacs上で M x + describe current coding system で表示 2. Mysql のフォントをutf-8に合わせる - set character_set_server = utf8; みたいなコマンド諸々 3. DB接続ごとに、処理実行前に「SET NAMES UTF8」というクエリを発行する
https://w.atwiki.jp/takaidohigasi/pages/23.html
- 人目 ( ̄ー ̄)/~~ アリガトネ MySQL5.5 リファレンス 1. 一般情報 1.3 MySQL DBMS(データベース管理システム)の概要 ORIGINAL http //dev.mysql.com/doc/refman/5.5/en/what-is.html MySQLって何? MySQLの主な特徴 MySQLの歴史
https://w.atwiki.jp/taichik15/pages/41.html
MySQL ユーザの作成 Windowsの場合、パスワードは必ず入れなければならない。 GRANT ALL PRIVILEGES ON *.* TO ユーザー名@localhost IDENTIFIED BY パスワード WITH GRANT OPTION; @localhostを省略すると他のホストからもアクセスできるようになる パスワードの変更 パスワードを消すこともできる SET PASSWORD FOR ユーザー名@localhost="パスワード" サーバに接続するホストの設定 my.cnf bind-address localhost bind-address 192.168.1.1 のようにbind-addressを追加していく bind-addressをコメントアウトすれば、どこからでもアクセスできる user情報の表示 select * from mysql.user; 権限の確認 SHOW GRANTS FOR ユーザ名@localhost \G インデックスの表示 SHOW INDEX FROM テーブル名; CREATE文の表示 SHOW CREATE TABLE テーブル名 \G DBの作成 CREATE DATABASE データベース名 CHARACTER SET utf8; カラムの型の変更 ALTER TABLE テーブル名 MODIFY COLUMN カラム名 VARCHAR(128) Ubuntuで再起動する sudo service mysql restart Windowsでサービスを停止する net stop MySQL Windowsでサービスを起動する net start MySQL max_allowed_packet データをインポートするときの最大サイズ my.cnfやmy.iniの[mysqld]の欄に max_allowed_packet = 32M のように記述する データベースの引越し Windowsの場合、以下の一連作業は、コマンドプロンプトでなくcygwinでやらないとうまくいかないようだ mysqldump -u user dbname xxxx.sql mysql -u user dbname xxxx.sql
https://w.atwiki.jp/carlton/pages/13.html
MySQL MySQL 5.1 リファレンスマニュアル インストール パス設定 「システム詳細設定」≫「環境変数」で以下を追記 変数名 Path 変数値 C \Program Files\MySQL\MySQL Server 5.1\bin ユーザとデータベース作成 ユーザ名 username パスワード password データベース名 databasename mysql grant all privileges on *.* to username@localhost identified by password with grant option; mysql create database databasename Connector/J MySQL Connector/J インストール CLASSPATHにmysql-connector-java-[version]-bin.jarを配置 Connector/ODBC MySQL Connector/ODBC インストール MySQL AB ウェブサイトからmysql-connector-odbc-[version]-win32.msiをダウンロードし、インストール DSN構築 「管理ツール」≫「データソース(ODBC)」のユーザDSNで「追加」 ドライバ:MySQL ODBC 5.1 Driverを選択し「完了」 Data Source Name 設定したDSNの名前 Description Server localhost(デフォルト) Port 3306(デフォルト User 接続に使用するユーザ名 Password 接続に使用するパスワード Database アクセスを許可されたデータベースから選択 「Test」で接続が成功することを確認後、「OK」