普段使用しているPCのSQLServerをセットアップした後、 課題で利用している販売管理B.mdbをインポートしました。 さらに追加でテーブルが必要だったので、 追加して行も作成して、さぁ「開発するぞ!」とSQLを実行すると、 なんとも列名でエラーなんですね、えぇ。 よくテーブルを見直してみると、表を作成する時に列名を間違えていたので、 ガックリしながら列名を変更しました。 またいつか列名を変更する時が来るだろうと、今の内にメモしておきます。 SQLServerでは、DBのあらゆるものをセットアップするために、 ストアドプロシージャが用意されています。 列名を変更する際には、その中の「sp_rename」を使用します。sp_rename '社員マスタ.社員コード', 'SCODE', 'COLUMN'これは、テーブル「社員マスタ」の列「社員コード」を、 「SCODE」へ変更するSQLになります。 「sp_rename」は、列名変更に限らず、 データベース名やオブジェクト名なども変更可能です。 詳しくは、Microsoftのリファレンスを参照して下さい。 sp_rename (Transact-SQL)sp_rename '社員マスタ', 'SYAIN', 'OBJECT'
ホーム > SQL
2009年11月1日日曜日
SQLServer 「sp_rename」で列名変更
2009年10月13日火曜日
Accsess/MDB 日付リテラルまとめ
今日、授業内で使用することがあったのでメモ。 授業で使用しているDBにはAccess/MDB以外に、 Oracle、MySQLがあります。 Javaで作成したプログラム内でOracle用に作成したSQL文を、 MDBに転用しようとするとエラー発生。 ちなみに、その時のSQL文は以下のもの。select * from 社員マスタ where 氏名 like '%浦%' and 性別 = 0 and 作成日 between '2005/01/01' and '2007/12/31'最初は、列名に「[]」が無いせいなのかと思いましたが、反応無し。 仕方がないので調べてみると、MDB特有の日付リテラルに行き着きました。 MDBでのBETWEENについて ※リンク先を間違えていたので修正。 つまりは、MDBでは「'2005/01/01'」という書式が、 日付型でなく文字列型で扱われるということですね。 なので、「between a and b」など日付を扱う場合には、 「#2005/01/01#」とし、型変換する必要があります。 以下が処理成功時のSQL文です。select * from 社員マスタ where 氏名 like '%浦%' and 性別 = 0 and 作成日 between #2005/01/01# and #2007/12/31#正直分かりづらいなぁ、と。
2009年7月21日火曜日
Oracle 表に列を追加/列を削除
今日の授業内で使用したので、思い出した時に見られるようにメモ。 以下が参考にさせていただいたリンクです。 ORACLE/オラクルSQLリファレンス(ALTER TABLE) Oracleで、すでに作成されている表に列を追加するSQL文。ALTER TABLE 追加先表 ADD ( 追加列1 varchar2(50), 追加列2 number(6) )削除する場合のSQL文。ALTER TABLE 削除対象表 DROP ( 削除列1, 削除列2 )さらに列名変更・列定義変更・表名変更も出来ますが、上のリンク先に詳しく書かれているので省略。 列操作後の、列順の並び替えは出来ないらしく、どうしても気になる場合には列順を新たにテーブルを作成して表を移すしかないようです。