![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
MySQLで項目の反復定義(COBOLでいうところのOCCURS)はありますか?
今は
AAA1 varchar(10) not null
BBB1 int(6) not null
CCC1 int(2) not null
AAA2 varchar(10) not null
BBB2 int(6) not null
CCC2 int(2) not null
:
:
AAA30 varchar(10) not null
BBB30 int(6) not null
CCC30 int(2) not null
みたいに書いています。
XXX OCCURS 30
AAA varchar(10) not null
BBB int(6) not null
CCC int(2) not null
のような書き方があればと思ったのですが。。
ご存知の方いらっしゃいましたら、
また他に良い方法をご存知の方いらっしゃいましたら
ご教示願います。
宜しくお願い致します。
No.3ベストアンサー
- 回答日時:
まず、配列や構造体は、現時点ではMySQLでは実装していません。
そういった機能は、いつくかのRDBMSでは、独自仕様として実装しているものもあります。
標準SQLでは、SQL99では、配列、ユーザ定義型による構造体の定義が規定されており、MySQLでもいずれ実装されるかも知れませんが、操作性は必ずしもいいとは言えません。
>OCCURSの有無が聞きたかったのでキーや他項目は省かせていただきましたが。
そんな質問の仕方をすれば、「そんな機能はない」といった回答しか得られないし、キー項目などを省かれたら、具体的な代替手段の提示ができなかったり、せっかくのアドバイスが意味のないものになってしまいます。
普通に考えれば、
キー項目、キー内通番、AAA、BBB、CCC
といった構成を考えるのではないでしょうか?
何のためにデータベースに格納するのか、データベースに格納してどんな操作をしたいのかといったことがまったく不明ですが、極端な話をすれば、RDBMSにより一意性を保証してもらいたいキー、検索条件、ソートなどSQL上でどうしても指定が必要な列以外は、テーブル定義上はひとつの列にしておいて、アプリ側でフィールドを小分けするといった方法もあります。
この回答への補足
そんな機能が「ある」のか「ない」のかが聞きたいことでした。
「ある」のであれば利用したいし
「ない」のであれば無いなりのデータ構成なりアプリ側での対応なりは大丈夫です^^
ありがとうございました。
No.2
- 回答日時:
なぜ、正規化しないのですか?
具体的にはどのようにでしょう?
OCCURSの有無が聞きたかったのでキーや他項目は省かせていただきましたが。
何か是正する余地がありましたらご教示願います。
No.1
- 回答日時:
恐らくMySQLにはそのようなものはないかと思います。
自分でしたらPHPなどのプログラムでループを使うか、
一時的な物であればExcelのセルのコピーを使って
SQL文を作成すると思います。
意外とExcelを使うのも早いかもしれません。
下記のような形を書けばAAA1とBBB1を連続データとして下方向にコピーし、
その他の部分は通常のコピーを行い、
最後に全体をメモ帳などにコピペをすれば…
┌──┬───────────┬──┬────────┬…
│AAA1│varchar(10) not null, │BBB1│int(6) not null, │…
└──┴───────────┴──┴────────┴…
ありがとうございます。
質問中の「書いてます」とか「書き方」に語弊がありました。
sql文に関しては問題ないです。ただテーブル定義がもっと綺麗にならないかなとか添え字が使えないかなと思いましてOCCURSのようなものがあるか質問させて頂きました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL `picture` varchar(255) のコマンドで間違いないでしょうか? 1 2022/11/21 04:08
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- MySQL my_itemsテーブルのIDにAUTO_INCREMENT を追加ができるかで 1 2023/01/03 09:09
- MySQL SHOW CREATE TABLE posts;これって何ですか? 3 2022/08/28 22:57
- MySQL PHPとMySQLを使った掲示板の作り方 1 2022/06/02 13:00
- MySQL MYSQL エラー 2 2022/10/18 11:37
- MySQL テーブル作成です。どこかのスペルが間違っているか記号など スペースかな? 1 2022/10/01 05:08
- MySQL あと、MySQLの文字コードはutf8 気になりますね 1 2022/12/01 07:22
- MySQL MySQLのテーブル作成で 自信がありません。 2 2022/08/28 05:35
- PHP php テーブルが作成できない 1 2022/11/17 23:41
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
#1062 - '0' は索引 'PRIMARY' ...
-
日本の全市区町村を人口密度が...
-
下の画像はSQLの4大命令の性質...
-
データベースの複製の仕方(mysql)
-
SQLでカラムを追加し、条件に合...
-
select *, `人口(男)`AND`人口(...
-
テーブル名が可変の場合のクエ...
-
SQLについて教えて下さい。 SEL...
-
テーブル作成です。どこかのス...
-
MAMPで80ポートが使用されている...
-
同一のユーザー、同一商品のと...
-
SQLです。こんな感じですか?あ...
-
書籍の内容はまともでしょうか?
-
SQLで日付別のIDを生成するには
-
mysql>status で
-
下記の問合せを行うクエリを、P...
-
下記の問合せを行うクエリを、P...
-
エラー 1068 (42000): 複数の主...
-
MySQLのテーブル作成でハイフン...
-
「重複を間引いた数」をcountし...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Null値が入れられない
-
NULLを含む列の足し算
-
MySQLの特定のカラムの内容を全...
-
nullと同じく空白をCountしない...
-
SQLでLIMIT句を入れるとエラー...
-
SQL文を入力したらエラー
-
テーブル作成時に、「`id` int(...
-
MySQLで関連したデータを横に並...
-
MySQLで項目の反復定義(COBOL...
-
3つのテーブルから、データが...
-
phpとSQLで複数条件で検索する...
-
SQL文でダブルクォートか
-
MySQLでのテーブル名取得に制限...
-
VIEWに対してWHERE句をつける
-
空白文字を含む文字列データの検索
-
SQL任意に並び替えをしたい
-
コマンドプロンプト 複数の実...
-
後でemailに追加でPRIMARY KEY...
-
sqlの中で、 例えば条件句で AN...
-
JOIN使ってないのに、JOIN操作...
おすすめ情報