• 締切済み

列の順番を変えたい

Oracle 8i SQLPlusにて、下記コマンドをした場合 desc t_syain t_syain_id t_syain_name t_syain_address1 t_syain_address2 t_syain_telno t_syain_cd と表示されます  また、 SQLPlusにて、下記コマンドをした場合 select * from t_syain t_syain_id t_syain_name t_syain_address1 t_syain_address2 t_syain_telno t_syain_cd の順でレコードが表示されます そこで、これを t_syain_cd を6番目→2番目に変えたい場合、どのようなコマンドをしたらいいのでしょうか? t_syain_id t_syain_cd t_syain_name t_syain_address1 t_syain_address2 t_syain_telno ご存知の方、ご教示の程宜しくお願いします

  • Oracle
  • 回答数3
  • ありがとう数0

みんなの回答

  • atkuma
  • ベストアンサー率11% (5/45)
回答No.3

ワイルドカードを使うから、ダメなんす! select文でやるなら、 select t_syain_id ,t_syain_cd ,t_syain_name ,t_syain_address1 ,t_syain_address2 ,t_syain_telno from t_syain ざんす。 どうしても、ワイルドカードを使いたいなら、テーブルをその順番で作成しなはれ。ワイルドカードは、業務アプリなら、パフォーマンスを問われるから、ふつう使わないでよ!

回答No.2

select * from t_syain を使わないで select t_syain_id,t_syain_cd,t_syain_name, t_syain_address1,t_syain_address2, t_syain_telno from t_syain というように記述するだけでいいのでは? #私はあまりselectで*はあまり使わないようにしてます。 テーブルの格納されている列の順をどうしても変更したい場合は再作成になります。 データを残したいのであれば create table hoge as select * from t_syain などで一度バックアップし、 再作成後に insert into t_syain (select t_syain_id,t_syain_cd,t_syain_name, t_syain_address1,t_syain_address2, t_syain_telno from hoge ) でデータを登録しなおす等が必要です。

回答No.1

Oracleには詳しくないですが。。。 ビューを定義し、ビュー経由で操作する方法にすれば、簡単に行えると思いますが? create view v_t_syain as select t_syain_id,t_syain_cd,t_syain_name, t_syain_address1,t_syain_address2, t_syain_telno from t_syain

関連するQ&A

  • JAVAに書くSQL文について教えてください

    Oracle内のデータを更新しようとしていますが ORA-00904というエラーが表示されます。 調べていると列名は「”」で囲ってはいけないと 書かれていたので、それでいろいろ試行錯誤してみたのですが エラーがなくなりません。 「SYAIN1」と「SYAIN2」は変数になっています。 このSQL文が機能するように、アドバイス頂けるとうれしいです。 int row_count = smt.executeUpdate(Update SYAIN_MASTER set SYAIN_NAME = SYAIN2 where SYAIN_ID SYAIN1);

    • ベストアンサー
    • Java
  • C言語について

    いつも、お世話になっています。 以下のソースでわからないことがあります。 1.構造体入れ子になっている SCH の代入方法。 2.一覧表示するとき、入れ子になっているSCHの表示方法。 3./*IDの入力後に社員リストからそのIDを呼び出す*/の件ついての考え方。 宜しくお願いします。 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <time.h> #define MAX_NUMBER 100 /* 登録件数 */ #define NAME 30 /* 氏名の文字数 */ #define LINE 100 /* スケジュールの文字数 */ #define NUM 4 /* IDの桁数 */ typedef struct { char SCH[LINE]; /* 予定 */ } work; typedef struct { char ID[NUM]; /* 番号 */ char name[NAME]; /* 氏名 */ work sched; } syain; void namecheck(char* ID) { printf("ID:"); scanf("%s", ID); } void namecheck(char* name) { printf("名前:"); scanf("%s", name); } void syaintouroku(syain data[], int syain_num) { IDcheck(data[syain_num].ID); namecheck(data[syain_num].name); } void sched_touroku(syain data[], int syain_num) { puts("登録するIDを入力してください。"); /*IDの入力後に社員リストからそのIDを呼び出す*/      /*そのIDの方のスケジュールを登録*/ SCHcheck(data[syain_num].work.SCH); } void print_data(syain data[], int syain_num) { for(i = 0; i < MAX_NUMBER; i++){      printf(data[syain_num].ID, data[syain_num].name, data[syain_num].work.ID,); } } int main(void) { syain meibo[MAX_NUMBER]; int max_syain = 0; syaintouroku(meibo, max_syain); max_syain++; worktouroku(meibo, syain_num); print_data(meibo, syain_num) return 0; }

  • OracleのSQLPLUSログインについて

    sqlplusにてデータベースにアクセスできません。 どなたか知恵をお貸しください。 環境は、LinuxにOracle10gをインストールしました。 インストールと同時にデータベース(orcl)を作成しました。 インストールしたマシンにて、sqlplusを実行してみようとしているところです。 Oracleのインストール、データベースの作成が終了し、 コマンドラインから"sqlplu /nolog"を実行し、データベースに 接続しようとしましたが、エラーと表示されます。 コマンド、エラーは以下の通りです。 SQL> conn sys/manager as sysdba ERROR ORA-12162: TNS:net service name is incorrectly specified Oracleのインストール、データベースの作成を行った Linuxのユーザは"oracle"です。 この場合、ユーザ名はoracleが正しいのでしょうか?

  • PHPでのセッション管理について

    こんにちは。 PHP初心者の者ですがよろしくお願いします。 現在、ログイン時にセッションを登録し、 メイン画面を表示している部分でセッションを 取得したいのですがうまく取得できません。 メイン画面は、フレームで2つに分割してあります。 ご協力お願いします。 ソースの一部 【a.php】 // セッション名の指定 session_name('my_session'); // ページキャッシュ session_cache_limiter('nocache'); // 情報の保存期間(30分) session_cache_expire(30); //セッション開始 session_start(); $_SESSION["id"]=$_POST["id"]; $_SESSION["pw"]=$_POST["pw"]; $_SESSION["user_cd"]=$user_cd; $_SESSION["syain_name"]=$syain_name; $sid = session_id(); //接続先指定 header("Location: http://".$_SERVER["HTTP_HOST"].dirname($_SERVER["PHP_SELF"])."/frame.php?PHPSESSID=$sid"); ?> 【frame.php】 <frameset rows="*" cols="151,*" framespacing="0" frameborder="1" border="0"> <frame src="menu.php" name="leftFrame" scrolling="NO" noresize> <frame src="main.php" name="mainFrame"> </frameset> 【menu.php】 <?php session_start(); $id = $_SESSION["id"]; $user_cd = $_SESSION["user_cd"]; $syain_name = $_SESSION["syain_name"]; print $syain_name."<br>"; //←何も表示されない ?>

    • ベストアンサー
    • PHP
  • VB6のオラクルのバインド変数

    バインド変数の使い方がわかりません。 OraDatabase1.Parameters.Remove "SYAIN_ID" OraDatabase1.Parameters.Add "SYAIN_ID", "00000000", 1 OraDatabase1.Parameters("SYAIN_ID").serverType = 1 このようにバインド変数をまず定義すると思いますが "00000000"の意味が良くわかりません。 0でも使えますか? それともバインド変数として使用するフィールドのものと同じ長さに指定しないといけないですか? 例えば select * from T_SYAIN a where a.SYAIN_ID = :SYAIN_ID でSYAIN_IDはvarchar(8)とした場合 SYAIN_IDはvarchar(8)なので "00000000"と指定するべきなのですか?

  • SELECT 文の NULL列は?

    ある人に、こんなSQLを教えてもらいました。 ----------------------------- select id,tid,NULL as "res_no",account_id,name,date from t_game_bbs as a union select id,tid,res_no,account_id,name,date from t_game_res as b where del_flg != 1'; order by date DESC limit 10; -------------------------------- 不思議に思ったのが、”NULL as "res_no"”のところです。 これについて、ググッて見たのですが、明確な説明が見つかりませんでした。 これって、SQLの隠し機能なのですか?

  • [ASP+SQLserver]列名から列番号を取得できないか?

    こんにちわ。 ASPでDBを扱うWebページを作っています。 次のようなデータベースがあるとします・・・ (0),(1),(2),(3) →列番号 ID,Name,Tel,Email こういう場合、 Response.write ("Tel") とか Response.write (2) とかでその内容が表示できますよね? それを踏まえて・・・。 このデータベースの列名「Tel」がわかっていてその列が何番にあるか、、、この場合「2」であるということが知りたい場合はどのようにすればいいでしょうか? そういうコマンドなどあればうれしいのですが・・・。 お手数をおかけしますが宜しくお願いいたします。

  • SQLplusの設定について

    Oracle 8i 1.SQLplusにて、下記方法にて  常時ラインサイズを変更しているのですが  SQLplus起動時に自動設定することは  可能でしょうか?  SQLplus -[オプション]-[環境]           -[オプション設定]-[linesize]           -[値]:1000 2.SQLplusにて、下記コマンドを発行し、  ノートパッド(エディタ)を使用し  SQL文の編集を行っています   ノートパッド(エディタ)を他のエディタに  設定変更したいのですが、  どのようにすればいいのでしょうか?

  • C言語 初心者です。

    いつもお世話になっています。 またまた困ってます。 以下のソースは一部分を抜粋したものです。 質問内容ですが、現在コンパイルをすると、warningが出てきて、型の互換性がありません。とでてきます。たぶん文字列の長さを読むときがおかしいみたいで、型を色々変えましたが、warningはとれません。どうしたらいいか教えてください。 ちなみに #define NAME 128 /* IDの桁数 */ typedef struct { char name[NAME]; /* 社員番号 */ } syain; size_t str_length(char *str) { size_t length = 0; while (*str++){ length++; } return(length); } void namecheck(syain data[], int syain_num) { int len = 0;/* 社員名の桁数 */ while(1){ printf("社員名:"); scanf("%s", data[syain_num].name); /* 社員名の桁数を変数lenに格納する */ len =(unsigned)str_length(data[syain_num].name); putchar('\n'); if (len < NAME){ break; } } } void syaintouroku(syain data[], int syain_num) { namecheck(data[syain_num].name, syain_num); putchar('\n'); } int main(void) { syain meibo[MAX_NUMBER]; int max_syain = 0; int i; syaintouroku(meibo, max_syain); max_syain++; return (0); }

  • 不明なコマンドです("FROM")。行の残りは無視されました。 のエラー

    T_地点,T_層,T_回 という三つのテーブルがあります。 それを組み合わせるSQLで下記のようなものがあります。 --------- CREATE VIEW V_地点 AS SELECT T_地点.ID, TABLE1.1A, TABLE1.2A, T_回.形 FROM T_地点,T_回, ( SELECT T_層.ID, T_層.点, MAX(DECODE(T_層.コード,'01',1)) 1A, MAX(DECODE(T_層.コード,'02',1)) 2A FROM T_層 GROUP BY T_層.ID ) TABLE1 WHERE T_地点.ID = TABLE1.ID AND T_地点.ID = T_回.ID; --------- これをORACLEのビュー作成で実行するとエラーがでないのですが、 sqlplus経由で実行するとエラーがでます。 SP2-0042: 不明なコマンドです("FROM")。行の残りは無視されました。 SP2-0734: "T_..."で開始するコマンドが不明です - 残りの行は無視されました。 どなたかわかるかたがいらっしゃいましたらご教授ねがいます。