ワンポイント

  選択

全ての行
  
select * from 社員テーブル where 5 = 5
  

対象行無し
  
select * from 社員テーブル where 5 = 4
  



  order by



order by のアプリケーション的な意味は「2次加工」です。ですから、
select の最後に指定して、たいていのキーワードを指定可能です

列番号指定
  
select * from 社員テーブル order by 4
  

関数指定
  
Excel と MDB
select
	社員コード
	,氏名 as 社員名
	,mid(氏名,2,1) as 関数結果
 from 社員テーブル
 order by mid(氏名,2,1)

SQLServer と MySQL と PostgreSQL
select
	社員コード
	,氏名 as 社員名
	,substring(氏名,2,1) as 関数結果
 from 社員テーブル
 order by substring(氏名,2,1)

Oracle
select
	社員コード
	,氏名 as 社員名
	,substr(氏名,2,1) as 関数結果
 from 社員テーブル
 order by substr(氏名,2,1)
  

別名指定
  
Excel と MDB
別名は使用できません

SQLServer と MySQL と PostgreSQL
select
	社員コード
	,氏名 as 社員名
	,substring(氏名,2,1) as 関数結果
 from 社員テーブル
 order by 関数結果

Oracle
select
	社員コード
	,氏名 as 社員名
	,substr(氏名,2,1) as 関数結果
 from 社員テーブル
 order by 関数結果
  




  truncate table テーブル名

テーブルから全てのデータを削除します。

delete from テーブル名 でもデータは全て削除されますが、truncate table とは削除方法が
違い、truncate table が遥かに高速です。

※ 但し、トランザクション処理の rollback で元に戻す必要がある場合は使用できません

  
EXCEL と MDB では使用できません

EXCEL は SQL でデータを削除する事はできません( delete 文も使用できない )
  



  EXCEL、MDB の日付条件

  
select * 
	from 社員マスタ
	where 作成日 = #2005/04/03#
  



  主キー付加と削除

※Excel に主キー(インデックス)は作成できません

MDB、SQLServer、MySQL、Oracle、PostgreSQL
  
alter table
	社員マスタA
add primary key(社員コード)
  

この操作によって作成されたインデックス名の一般的な結果を以下に示します

RDBMS名称
MDBIndex_6D5C853C_F7F3_4FDE
MySQLPRIMARY
OracleSYS_C003309
PostgreSQL社員マスタa_pkey
SQLServerPK__社員マスタA__797309D9

MDB
  
ALTER TABLE
	社員マスタA
DROP CONSTRAINT 
	Index_6D5C853C_F7F3_4FDE
  

SQLServer
  
ALTER TABLE
	社員マスタA
DROP CONSTRAINT 
	PK__社員マスタA__797309D9
  

PostgreSQL
  
ALTER TABLE
	社員マスタA
DROP CONSTRAINT 
	社員マスタa_pkey
  

--------------------------------------------------------------------------------
MySQL、Oracle

  
ALTER TABLE
	社員マスタA
DROP PRIMARY KEY
  



  インラインビュー

サブクエリの一種です。from 句の後に記述されるサブクエリで、「インラインビュー」という言葉は
Oracle で使用されます

EXCEL、MDB (※ 別名は省略できます)
  
select *
	from
	(select * from 社員マスタ) as INVIEW
  
as キーワードを省略できます

SQLServer、MySQL、PostgreSQL (※ 別名は省略できません)
  
select *
	from
	(select * from 社員マスタ) as INVIEW
  
MySQLはバージョンによって使用可・不可があります
MySQLは未確認ですが、他は as キーワードを省略できます


Oracle (※ 別名は省略できます、別名指定に as キーワードは書けません)
  
select *
	from
	(select * from 社員マスタ) INVIEW
  



  limit 句

MySQL と PostgreSQL で使用できます

  
select *
	from 社員マスタ 
	order by 社員コード
	LIMIT 5 OFFSET 10
  

Oracle では、似たような結果を取得する為に
以下のように記述を行います (rownum は擬似列と呼ばれるものの一つです)

  
select *
	from (select * from 社員マスタ order by 社員コード)
	where rownum <= 10
  

何れにしても、アプリケーション側でコントロールできます



  ランダムソート

EXCEL、MDB
  
select * 
	from [社員マスタ] 
	order by Rnd(Time()-Val([社員コード]))
  


SQLServer
  
select *
	from [社員マスタ] 
	order by Right(Rand(DatePart(millisecond,GetDate())-社員コード),1)
  

MySQL
  
select *
	from [社員マスタ] 
	order by Rand()
  

PostgreSQL
  
select *
	from [社員マスタ] 
	order by Random()
  

Oracle
  
select *
	from [社員マスタ] 
	order by dbms_random.random()
  










  infoboard   管理者用   
このエントリーをはてなブックマークに追加





フリーフォントWEBサービス
SQLの窓WEBサービス

SQLの窓フリーソフト

素材

一般WEBツールリンク

SQLの窓

フリーソフト

JSライブラリ