SQL

SQL 複数条件がある WHERE句

SQL

SELECT 顧客ID , 顧客名 , 住所 , 性別 , 年齢 , 担当者ID FROM T_顧客 WHERE (性別 ='女性') AND (担当者ID = 38 OR 担当者ID = 32)こんな感じ。ネタ元 http://northqra.com/select_3.html

ある値に一番近いレコードを取得するSQL文

SQL

ある値に一番近いレコードを取得するSQL文 この場合は3000円に近い価格のレコード select * from video where abs(price - 3000) = (select min(abs(price - 3000)) from video); ネタ元 http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q14324973…

MySQL AUTO_INCREMENTの設定

SQL

AUTO_INCREMENTが設定されたカラムには自動的に連番の値が格納されていきます。 例: CREATE TABLE images ( id int NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) )

MySQL オーバーヘッドってなんですか?

SQL

意味 INSERT、DELETE、UPDATEを行っているうちにできるゴミ(未使用)領域のようなものです。 対処法 最適化(OPTIMIZE TABLE)を行えばなくなります。 ネタ元 http://oshiete.goo.ne.jp/qa/1155748.html

MySQL とPostgreSQLのtimestamp型は違う

SQL

すんごい悩んだ。思ったよりMySQL とPostgreSQLって違いがあるんだなぁ。 解説 http://90h.dip.jp/archives/2005/04/mysqltimestamp.html 結局MySQLではdatetime型を使い、insert時にNOW()で現在時刻を入れるようにした。こんな感じ create table sample1 ( …

phpPgAdminを利用したデータベースのバックアップ&リストア

バックアップ データベースのエクスポートを利用する。出力するフォーマットは構造とデータを選び、SQLにする。そうするとデータベースを再構築するためのSQLファイルが作成される。 リストア データベースを削除する。 再度データベースを作成する。 復元す…

指定フィールドの最大値/最小値を取得

SQL

(SELECT MAX(フィールド名) AS 名前 FROM テーブル名) (SELECT MIN(フィールド名) AS 名前 FROM テーブル名) ネタ元 http://www.feedsoft.net/access/sql/sql44.html

ソートさせるにはORDER BY [列名]

SQL

書式 SELECT [列名], ... FROM [TABLE名] ORDER BY [列名], ... ; SELECT [列名], ... FROM [TABLE名] ORDER BY [列名], ... ASC ; SELECT [列名], ... FROM [TABLE名] ORDER BY [列名], ... DESC ; ネタ元 http://park18.wakwak.com/~little-box/Dreamweave…

MySQLエラー「Column 'カラム名' in field list is ambiguous」

SQL

テーブルを結合して出力する場合、どちらのテーブルのカラムか指定しないとエラーになる。 ネタ元 http://www.kantenna.com/pg/2008/01/mysqlcolumn_in_field_list_is_a.php

日付型の比較と注意点

SQL

こんな感じ WHERE YMD >= '02-10-02' AND YMD < '02-10-03' 以下だと2002年10月2日0時0分0秒のものしか含まれず、 0時0分1秒から23時59分59秒が含まれない WHERE YMD >= '02-10-02'ネタ元 【初級】新人SEのためのSQLの基礎 第3回(前半) 日付型の注意点

PostgreSQL で直前に使ったシーケンス値を取得する currval 関数

SQL

直前に追加したシーケンスのIDが欲しかったりする時に便利 -- データを INSERT INSERT INTO hoge (hoge_no, hoge_text) VALUES (nextval('hoge_no_seq'), 'ほげげ'); -- 直前のシーケンス値を取得 SELECT currval('hoge_no_seq'); ネタ元 http://www.hoge256…

ORDER BY 解説

SQL

ソートの指定。ORDER BY "フィールド一" [ASC, DESC],ASCで昇順、DESCで降順。 http://sql.1keydata.com/jp/sql-order-by.php

htmlspecialchars() クロスサイトスクリプティング(XSS)対策に使える(ENT_QUOTESもつけたほうがいいみたい)

この関数は、掲示板やゲストブックなどでユーザが書きこんだテキストから HTML のマークアップ用文字を取り除く場合に有用です。変換対象となる文字は以下の通りです。 '&' (アンパサンド) は '&' になります。 ENT_NOQUOTES が設定されていない場合、 …

クエリの結合(UNION)の解説

SQL

和結合は「UNION 演算子」http://www.techscore.com/tech/sql/08_01.html#sql81

グループ化(GROUP BY)の解説

SQL

同列内の値の中で、同じ値を持つデータごとに集合化するhttp://www.techscore.com/tech/sql/SQL5/05_08.html/#

ビューの解説

SQL

仮想テーブルと考えると良いhttp://www.techscore.com/tech/sql/09_01.html

ビューとは仮想的な表、つまり、仮想テーブル、論理テーブルみたいなもの

SQL

ビューの使い方で、データベースの使い心地とプログラムでのハンドリング負荷が大きく変わる。 必要なビューを上手く設計して、プログラムコード負荷が少なくなるようにする。 ネタ元 http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/psql_k06.htm

該当データが無かったとき判定にはpg_fetch_result()

結果リソースから値を返す関数なんだけど、ひとつもデータがとれなかったら、該当データ無しと判断できる $res = pg_query($conid, $query) if (false == pg_fetch_result($res,0) ) { print '該当のデータはありません'; exit; }解説 http://php.net/manual…

SQLインジェクションへの対策を分かりやすく解説した「安全なSQLの呼び出し方」

SQL

SQLインジェクションとは想定しないSQL文を実行させることにより、データベースシステムを不正に操作する攻撃方法のことのほほんとコード書いていると外部攻撃で痛い目を見るかもしれない。要注意。 IPA(独立行政法人情報処理推進機構)による「安全なWEBサイ…

基本:SQL文でデータを追加・更新・削除する方法

SQL

「INSERT」「UPDATE」「DELETE」http://www.atmarkit.co.jp/fdb/rensai/tsql08/tsql08_1.html

$$で囲んで分かりやすくエスケープ(PostgreSQL専用)

SQL

ドル引用符付けという名前。 SELECT $$the lexeme 'Joe''s' contains a quote$$::tsvector;みたいな感じで使えますです。 ネタ元 http://www.standpower.com/postgresql/datatype-textsearch.html http://www.matsue-torisen.co.jp/~postgres/pgsql84/sql-sy…

SQL比較演算子一覧

SQL

演算子 説明 例 = 等しいかどうかを検査します。 SELECT ENAME "Employee" FROM EMP WHERE SAL = 1500; !=, ^=, <> 等しくないかどうかを検査します。 SELECT ENAME FROM EMP WHERE SAL ^= 5000; > より大きいかどうかを検査します。 SELECT ENAME "Employee…

PostgreSQL で月末日の取得

SQL

翌月の月初日から 1 日引きます。 db=# SELECT DATE_TRUNC('month', now() + '1 months') + '-1 days'; ?column? ------------------------ 2010-02-28 00:00:00+09 (1 row)任意の日付指定で時間も23:59にしたいならこっち db=# SELECT DATE_TRUNC('month',…

トランザクション処理 BEGIN,COMMIT,ROLLBACK

SQL

BEGINでトランザクション開始。 COMMITで反映。 ROLLBACKでBEGIN開始から今までのことは無かった事にする。 ネタ元 http://d.hatena.ne.jp/idegman/20070108/p8

3つのPostgreSQLバックアップ&リストア手法

SQL

http://www.atmarkit.co.jp/fdb/rensai/postgresql/04/pgtune4-2.html (1)PostgreSQLのダンプツール (2)OSコマンド、 バックアップツール (3)PITR PostgreSQL停止の必要性 なし あり なし バックアップ・リストアの手順 単純 単純 複雑 リストア後のデ…

PostgreSQLのバージョンを調べるには select version();

SQL

ネタ元 http://www.ksknet.net/postgresql/postgresql_2.html

PostgreSQLの発音の仕方は「ポスト・グレス・キュー・エル」

SQL

本場の発音はmp3をどうぞ http://www.postgresql.org/files/postgresql.mp3

AS 別名にしてデータを表示

SQL

SQL AS演算子を使用して、別名にしてデータを表示してみる http://www.ken3.org/cgi-bin/test/test077-2.asp

CREATE FUNCTIONで SQLによるユーザ定義関数

SQL

SQLから使える関数が作れる。http://www.fireproject.jp/feature/postgresql/advanced/user-function_sql.htmlちなみにこの関数の中でシングルクォーテーションを使うようなコードの場合、シングルクォーテーションを2つつなげてエスケープする必要あります。

LEFT JOIN/RIGHT JOIN

SQL

表の結合したときに指定された左右いずれかの表を優先して表示を行う指定http://www.pursue.ne.jp/jouhousyo/SQLDoc/select22.html