設計の考え方
mysql -h 127.15.0.1 -P 23306 -u uenoyama -p
* 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
;
show columns from table_name;
* select count(*) from tweet;
* count(distinct, XXXX)
* 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;
* drop
* alter table XXX rename to YYY
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 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文
* update crunchdb_companyinfo4 set founded_year=coalesce(founded_year,0);
考え方
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
CREATE TABLE db_name.tbl_name (col_name1 data_type1 NOT NULL PRIMARY KEY, col_name2 data_type2, ...);
◆ Step1: Dump to .sql file
$ mysqldump -u[user] -p [dbname] ([table]) > backup.sql $ mysqldump -u uenoyama -p XXXXX > backup.sql $ mysqldump -u [email protected] -p XXXXX(tweet) > backup.sql
◆ Step2: scp transfer is better than sftp transfer
$ scp [email protected]:/home/uenoyama/backup.sql ./ $ scp [email protected]:/home/katsuya/apps/promotionapp/app/views nana.png
◆ Step3: Insert to Mysql 入れたいサーバ
$ mysql -u[user] -p[passwrd] < backup.sql
1. 元データのサーバからDump $ mysqldump -u[user] -p[passwrd] [dbname] ([table]) > backup.sql
2. 他サーバーへ転送 scp [email protected]:/home/uenoyama/backup.sql ./
scp [email protected]:/home/katsuya/apps/promotionapp/app/views/tweets nana.png
3. 入れたいサーバへの挿入 $ mysql -u[user] -p[passwrd] < backup.sql
Shot cut
* create user * system authorization
http://dev.mysql.com/doc/refman/4.1/ja/mysql-optimisation.html
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」というクエリを発行する