約 181,968 件
https://w.atwiki.jp/maichi/pages/12.html
SQLを作成し、l2jdb(データベース)を更新しよう!! 用語 用語 例 意味 SQL エスキューエル armor.sqlなど テーブルを作成したり、削除したり、追加したり、変更したり、見たりするための命令言語 Database データベース l2jdbなど ひとつの目的のもとで、たくさんのデータを集めた「かたまり」 table テーブル(表) armor,etcitemなど データを格納するための器(うつわ)、データベースは、いくつかのテーブルで構成されます Field フィールド(項目) item_id,accesslevelなど テーブルを構成する各要素のこと ひとつのテーブルは、いくつかのフィールドで構成されます Primary Key 主キー id,item_idなど テーブル中のたくさんのデータの中から、1つのデータを限定できる項目(または、項目の組合せ)の 代表(だから"主"キー) NULL ヌル default NULLなど [0]とも[空白]とも異なり、項目に値がまったく入っていない状態、反対語 = NOT NULL … なんらかの値が入っている状態。 税金にアイテムの価格変更の記載があります。 .
https://w.atwiki.jp/dellkeitai/pages/21.html
▼テーブルの変更 MySQL alter table テーブル名 CHANGE 古いカラム名 新しいカラム名 型情報 ; ▼SQL Server時間単位で解析 select day(update_date), DATEPART (hour,update_date), count(*) from event_log group by day(update_date),DATEPART (hour,update_date) order by 1,2 ▼MySQL 3→12 SQL show processlist; SQL show full processlist; ▼Oracle 設定の確認 select name, type, value from V$SYSTEM_PARAMETER where name = processes or name= sessions ユーザ名は大文字 select count(*) as SESSION_CNT from v$session where username = ユーザ名 ; ▼SQL Server select * from sys.dm_exec_sessions where login_name= ユーザ名 ; チューニング SQLServer キャッシュを削除 DBCC FREEPROCCACHE DBCC DROPCLEANBUFFERS http //msdn.microsoft.com/ja-jp/library/ms174283.aspx http //msdn.microsoft.com/ja-jp/library/ms187762.aspx GROUP BYした結果の件数の取得方法 ID 日付 データ 1 1/1 AAA 2 1/1 BBB 3 1/2 CCC これを日付でグループ化すると 1/1 2 1/2 1 になる。 この種類の数を知りたい場合は select count(distinct(日付)) from でOK。 項目が複数ある場合 CREATE TABLE TEST_CNT( VAR1 varchar(10) PRIMARY KEY, VAR2 varchar(10), VAR3 varchar(10)); INSERT INTO TEST_CNT VALUES ( 1 , A1 , B1 ); INSERT INTO TEST_CNT VALUES ( 2 , A1 , B1 ); INSERT INTO TEST_CNT VALUES ( 3 , A1 , B2 ); INSERT INTO TEST_CNT VALUES ( 4 , A1 , B2 ); INSERT INTO TEST_CNT VALUES ( 5 , A2 , B1 ); INSERT INTO TEST_CNT VALUES ( 6 , A2 , B1 ); INSERT INTO TEST_CNT VALUES ( 7 , A2 , B2 ); INSERT INTO TEST_CNT VALUES ( 8 , A2 , B2 ); SELECT VAR2,VAR3 FROM TEST_CNT GROUP BY VAR2,VAR3; ●MySQL SELECT COUNT(DISTINCT VAR2, VAR3) FROM TEST_CNT; ●Oracle SELECT COUNT(DISTINCT VAR2 || VAR3) FROM TEST_CNT; ●SQL Server SELECT COUNT(DISTINCT VAR2 + VAR3) FROM TEST_CNT; ●共通 SELECT COUNT(*) FROM (SELECT COUNT(*) AS CNT FROM TEST_CNT GROUP BY VAR2,VAR3) TEST_CNT; ※「SELECT COUNT(*) AS CNT」にする必要がある。「 AS CNT」が無いとSQL Serverでエラーになる。(Oracle,MySQLはOK) ※最後のに「TEST_CNT」を追加する必要がある。追加しない場合は、MySQL,SQL Serverでエラーになる。(OracleはOK) 最後のに「AS TEST_CNT」を追加するとOracleでエラーになるので、「AS」は不要。 ★第二弾フラグあり CREATE TABLE TEST_CNT2( VAR1 varchar(10) PRIMARY KEY, VAR2 varchar(10), VAR3 varchar(10), FLG varchar(1)); INSERT INTO TEST_CNT2 VALUES ( 1 , A1 , B1 , 0 ); INSERT INTO TEST_CNT2 VALUES ( 2 , A1 , B1 , 0 ); INSERT INTO TEST_CNT2 VALUES ( 3 , A1 , B2 , 1 ); INSERT INTO TEST_CNT2 VALUES ( 4 , A1 , B2 , 1 ); INSERT INTO TEST_CNT2 VALUES ( 5 , A2 , B1 , 1 ); INSERT INTO TEST_CNT2 VALUES ( 6 , A2 , B1 , 0 ); INSERT INTO TEST_CNT2 VALUES ( 7 , A2 , B2 , 0 ); INSERT INTO TEST_CNT2 VALUES ( 8 , A2 , B2 , 1 ); SELECT VAR2,VAR3 FROM TEST_CNT2 WHERE FLG = 1 GROUP BY VAR2,VAR3; SELECT COUNT(*) FROM (SELECT COUNT(*) AS CNT FROM TEST_CNT2 WHERE FLG= 1 GROUP BY VAR2,VAR3) TEST_CNT; INSERT/UPDATE MySQL 「on duplicate key update」 create table a1 ( id int primary key, memo1 varchar(10), memo2 varchar(10)) insert into a1 values (1, c , C ) on duplicate key update memo1 = c , memo2= C SQL Server UPSERT MERGE merge into a1 using (select 4 as id1) as a2 on a1.id1 = a2.id1 when matched then update set memo2= d , memo3= D when not matched then insert values (4, d , D );
https://w.atwiki.jp/sevenlives/pages/61.html
SQL 読み:えすきゅーえる, しーくぇる 英語:Structured Query Language 意味: SQLとは現在、RDBMSで多くで使われる標準的な問い合わせ言語。 ANSI?やISOにも規格化されている。 決まった文法で様々な命令ができ、 「SELECT * FROM テーブル名;」 のように自然言語に近い感覚で様々な操作をすることができる。 2008年01月22日 データベース DML DDL DCL?
https://w.atwiki.jp/yama213/pages/15.html
sql
https://w.atwiki.jp/chiffon/pages/34.html
SQL
https://w.atwiki.jp/yuukizyouhou/pages/16.html
SQL-ListSelect WHERE Order by Group by [部分編集] SQL-List Select SELECT [表示要素名] FROM [テーブル名] WHERE WHEREを使って検索する WHEREの後に条件式を指定することにより その条件にマッチしたレコードだけを選択することができます。 SELECT フィールド名 FROM テーブル名 WHERE 条件式 Order by 並び替え SELECT [表示要素名] FROM [テーブル名] ORDER BY [ソートする要素名] [昇順・降順の指定]; 参照先 https //rfs.jp/sb/sql/s03/03_2-2.html#WHERE Group by グループ化を行うために使用される命令です。(ピボットテーブル化) 主に「種類ごとに集計関数を使用する」 SELECT [表示要素名] ,count(■■) FROM [テーブル名] GROUP BY ■■ ※Select指定の「■■」がソートされ、その結果で表示される 参照先 https //www.sejuku.net/blog/72923 ASC・・・昇順 DESC・・・降順 ※「ORDER BY」の後ろのソート指定は「,」区切りで複数指定することも可能 「WHERE」も同時につけられる SELECT [表示要素名],[ID] FROM [テーブル名] WHERE 3 id ORDER BY id DESC; IDが3以上を降順で 「GROUP BY」と同時にも使える SELECT [表示要素名] ,count(■■) as name_AAA FROM [テーブル名] GROUP BY ■■ ORDER BY name_AAA DESC;
https://w.atwiki.jp/program_language/pages/17.html
SQL
https://w.atwiki.jp/jorky/pages/19.html
******************************** *** DB2 SQL *** ******************************** ■テーブルスペース管理 作成したテーブルスペースやデータファイルの大きさ、そして残り容量は以下のSQL文を実行することにより把握できます。 SQL select * from sys.dba_data_files; SQL select * from sys.dba_free_space; SQL select * from sys.dba_free_space_coalesced; ********************************* ■デッドロック監視 イベントモニター ■LOG出力時のコマンド db2evmon -path /../db/db2dump/events/db2detaildeadlock db2detaildeadlock.log ■db2detaildeadlock作成 db2 "CREATE EVENT MONITOR DETAILDEADLOCK FOR DEADLOCKS WITH DETAILS HISTORY WRITE TO file /../db/db2dump/events/db2detaildeadlock BUFFERSIZE 4 BLOCKED AUTOSTART" SET event monitor DETAILDEADLOCK STATE 1 ■db2detaildeadlock削除 SET event monitor DETAILDEADLOCK STATE 0 DROP event monitor DETAILDEADLOCK ■db2detaildeadlock有効化 db2 "set event monitor db2detaildeadlock state 1" ******************************** ■DB2のスキマー指定した全テーブル一覧作成 (type=V,T) ) select REORG TABLE スキマー. || tabname || ;RUNSTATS ON TABLE スキマー. || tabname || AND DETAILED INDEXES ALL;REORG INDEXES ALL FOR TABLE スキマー. || tabname || ; from syscat.tables where owner = スキマー and type = T *************************************************** ■テーブル再編成 DB2 REORG TABLE スキマー.テーブル DB20000I REORG コマンドが正常に完了しました。 DB2 RUNSTATS ON TABLE スキマー.テーブル AND DETAILED INDEXES ALL DB20000I RUNSTATS コマンドが正常に完了しました。 ■インディクス再編成 DB2 REORG INDEXES ALL FOR TABLE スキマー.テーブル ********************************************** REBIND REORGとRUNSTATSを実行し終わったら、すべてのデータベース・パッケージを再バインドします。これは、データベース・パッケージの静的SQLで最新のシステム統計を利用できるようにするためです。次のようにDB2RBINDを使用して、すべてのデータベース・パッケージを再バインドします。 db2rbind dbname -l logfile.out ALL REORGCHK [CURRENT STATISTICS] [ 再編成対象指定 ] CURRENT STATISTICS 再編成が必要かどうかを現在の統計情報に基づいてチェックします。このオプションを指定しない場合、統計情報の更新を行った上で再編成が必要かどうかをチェックします。 再編成対象指定 再編成が必要かどうかをチェックする対象を以下の形式のいずれかで指定します。 ON TABLE USER 接続しているユーザーが所有している表をチェックします。 ON SCHEMA スキーマ名 指定したスキーマに含まれるすべての表をチェックします。 ON TABLE スキーマ名.表名 指定した表をチェックします。 ON TABLE SYSTEM システムの表をチェックします。 ON TABLE ALL すべてのユーザーおよびシステムの表をチェックします。 db2 "REORGCHK ON SCHEMA スキマー" db2 "REORGCHK ON TABLE ALL" REORGCHK_ALL.log **********************************
https://w.atwiki.jp/a_kurosawa/pages/27.html
◆SQL ◆SQL命令 関数 INNER JOIN SQLを早くする 命令 INSERT INSERT INTO テーブル名(カラム名1, カラム名2) VALUES(値1, 値2) カラム名1と値1が対応。 レコード(行データ)を追加するので、必須カラムがないとエラーになる。 UPDATE UPDATE テーブル名 SET カラム名 = 値, カラム名 = 値 WHERE ~ DELETE DELETE FROM テーブル名 WHERE (NOT) ~ CREATE CREATE TABLE テーブル名 ( カラム名 NUMBER(3) ※整数桁、少数桁 カラム名 VARCHAR2(50) ※2バイト文字、カッコ内はバイト数 ) DROP DROP TABLE テーブル名 テーブル削除 DESC DESC テーブル名 テーブル構造を取得 UNION INSERTSECT MINUS 関数 ROW_COUNT() と ROWNUM 行インデックスを取得 BETWEEN カラム名 BETWEEN 数字1 AND 数字2 カラムが数字1から数字2の間の場合…WHERE句内で使う CASE CASE カラム名 WHEN 比較する値 THEN 値 END LIKE カラム名 LIKE %値% MONTHS_BETWEEN 年月の差(月単位) 12で割れば年 SYSDATE 日付取得 IN WHERE カラム名 IN (値, 値) INNER JOIN 最初のテーブル(左) 【TBL_CHARACTOR】 ID NAME SEX 1 左 翔太郎 男 2 園咲 来人 男 3 園崎 若菜 女 4 須藤 霧彦 男 5 園咲 冴子 女 結合するテーブル(右) 【TBL_BAG】 ID NAME COLOR CHARA_ID 1 お買い物バッグ 黄色 3 2 リュック 黒 1 3 ティファニーのバッグ ゴールド 5 4 コーチのバッグ ピンク 3 5 スーツケース シルバ 4 ◆行が減る条件 ※紐づくIDが結合したテーブルに存在しない SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = 男 ◆結果 C_ID C_NAME B_ID B_NAME 1 左 祥太郎 2 リュック 4 須藤 霧彦 5 スーツケース ◆解説 WHERE句で今度は男だけで絞ってるので、 そのままだと祥太郎と来人と霧彦さんの3人の筈です。 でも、結果は2行しかありません。 右にくっついてるテーブル(TBL_BAG)に 来人のIDの2がありません。 来人はバッグは持ってないようです。 なので、来人の行がなくなってしまっています。 ◆行が増える条件 ※紐づくIDを複数持つテーブルを結合する SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID WHERE T_CHR.SEX = 女 ※さっきのSQL文を条件女のみにしただけです。 ◆結果 C_ID C_NAME B_ID B_NAME 3 園崎 若菜 1 お買い物バッグ 3 園崎 若菜 4 コーチのバッグ 5 園崎 冴子 3 ティファニーのバッグ ◆解説 WHERE句で女だけに絞ってるので、 そのままだと若菜と冴子の二人だけです。 でも、結果は3行あります。 これは右にくっついてるテーブル(TBL_BAG)の 紐づくID(INNER JOINのONで指定したID)に 同じのが複数あるからです。 若菜は「お買い物バッグ」と「コーチのバッグ」の 二つを持っています。 すると、2行必要なので左のテーブルの値は コピーされて全て同じデータが入ります。 ◆結合して増えて減ってるテーブルサンプル SELECT T_CHR.ID AS C_ID , T_CHR.NAME AS C_NAME , T_BAG.ID AS B_ID , T_BAG.NAME AS B_NAME FROM TBL_CHARACTOR T_CHR INNER JOIN TBL_BAG T_BAG ON T_BAG.CHARA_ID = T_CHR.ID ※条件を消したので、↑のふたつの結果が一緒になっただけです。 ◆結果 C_ID C_NAME B_ID B_NAME 1 左 祥太郎 2 リュック 3 園崎 若菜 1 お買い物バッグ 3 園崎 若菜 4 コーチのバッグ 4 須藤 霧彦 5 スーツケース 5 園崎 冴子 3 ティファニーのバッグ ◆解説 さっきと一緒ですが、 来人はTBL_BAGにIDがないので、データ(行)がありません。 若菜はTBL_BAGに2箇所にIDがあるので、 データ(行)が2件あります。 結果、データが1減って1増えてるので行数は同じでした。 分かりやすい参考ページ SQLを早くする 参考
https://w.atwiki.jp/gengohouse/pages/305.html
記事 2020-12-24 | SQLで始める自然言語処理 リンク元 タグ:用語 編集