• 締切済み
  • すぐに回答を!

MySQLでのテーブル作成について

はじめまして。私は学校でDBの勉強をするのにOracle10gを使っているのですが家で練習するにあたりOracleを入れれないのでMySQL5.0をいれてみましたが若干勝手が違いいろいろ調べながらやってみたもののテーブル作成の際の制約の決め方などがうまく作れません。特に外部キーで悩んでいるのですがどうすればよいか教えていただきたいのです。 mysql>CREATE TABLE MEIBO( SEITO_NBR INT(5) PRIMARY KEY NOT NULL, SEITO_MEI VARCHAR(80) NOT NULL, SEIBETSU_KBN CHAR(1), TANJO_YMD DATE, GAKKA_CD VARCHAR(2), BIKOU_TXT VARCHAR(1000), INSERT_DATE DATE, UPDATE_DATE ); mysql>CREATE TABLE GAKKA( GAKKA_CD VARCHAR(2) PRIMARY KEY NOT NULL, GAKKA_MEI VARCHAR(80) NOT NULL ); ちなみに下の学科表は作成できました。が上の名簿がうまくできません。長くなりましたがよろしくお願いします。

共感・応援の気持ちを伝えよう!

  • 回答数3
  • 閲覧数179
  • ありがとう数3

みんなの回答

  • 回答No.3
  • kalze
  • ベストアンサー率47% (522/1092)

>家で練習するにあたりOracleを入れれない Oracle 10gのWindows用Express版入れれば良いかと。 #2様が書かれているとおりです。 まぁMySQLもcommunity版は登録必要だとおもうので、似たようなもんですね。 >が上の名簿がうまくできません。 #1様の書かれている通りですね。 >特に外部キーで悩んでいるのですがどうすればよいか 外部キーの何に悩んでいるのでしょうか? ・外部キーの設定の方法がわからない? ・外部キーを設定するにあたり、どう設定するのが良いか判断基準がわからない? 今回の質問には関係ないですが。 MEIBOは個人管理テーブルで、GAKKAは学科の管理テーブルですね。 要求しようにもよりますが、自分ならMEIBOにはGAKKA_CDをいれずに、 もう一つ対応付けのテーブルを用意するかな。 転科がない仕様なら問題ないですけどね。 まぁ他にも現実的なこと考えるといろいろカラムが必要かなぁとか思ったり。 mysql-gui-toolsを使えば、データベースの管理だとかやりやすくなります。 MySQL query browserを使うと、上部にクエリー(SQL分)書いて実行すると下部に結果が表示されます。 クエリーは強調表示してくれるし、入力し直しも楽なので、コマンドプロンプトでやるより、効率よく学習できるかと

共感・感謝の気持ちを伝えよう!

質問者からのお礼

外部キーはTypeを設定しないといけないというのが知らなかったものでできませんでしたがTYPE=INNODBでできました。他にもいろいろ補足をありがとうございました。

関連するQ&A

  • MySQLでのテーブル作成

    MySQLでこういったテーブルを作成したのですが、 CREATE TABLE NOSGI ( GNRE_CD CHAR(5) NOT NULL, GNRE_NAME VARCHAR(20) NOT NULL, PRIMARY KEY (GNRE_CD) ); GNRE_CDはCHAR型で作成したのに、カラムの情報を見ると、 VARCHAR型にしまうのですが、どうしてでしょうか?

  • MySQLで特定のテーブルが作成できない

    MySQLにログインしcategoryというテーブルを作成しようと思っているのですが作成できません。 [列名],[データ型]は key, 整数型、プライマリキーとする category, 可変長文字型、最大100文字 keyword, 可変長文字型、最大200文字 というものを作りたいので、 create table category( key int not null, category varchar(100), keyword varchar(200), primary key(key) ); で作成したのですが、 ERROR 1064: You have an error in your SQL syntax near 'int not null, category varchar(100), keyword varchar(200), primary key(key) )' at line 2 とエラーが表示されてしまいます。 エラーから推測するにkeyが悪いということだと思うのですが、何が問題なのか理由が分かりません。 一体何が原因なのでしょうか? MySQLのバージョンはVer 11.18 Distrib 3.23.57です。

    • ベストアンサー
    • MySQL
  • MySQLでCREATE TABLE

    MySQLでCREATE TABLEをする際に、 プライマリキーを設定する場合は、 CREATE TABLE( AAA CHAR(5) NOT NULL, BBB CHAR(5) NOT NULL, CCC VARCHAR(10) NOT NULL, PRIMARY KEY(AAA) ); のようにすると思うのですが、「BBB」を外部キーにしたい場合は、どうしたらいいのでしょうか?

  • 回答No.2
  • asuncion
  • ベストアンサー率32% (1760/5420)

> Oracle10gを使っているのですが家で練習するにあたりOracleを入れれない Oracle 10gにはフリーのエディションがあります。 ユーザ・プロファイルを登録してからダウンロードする必要があるようですけれど。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。是非試してみます。

  • 回答No.1

単なる書き込みのミスかも知れませんが、 UPDATE_DATE に属性指定(DATE等)が抜けているようです。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。確かに抜けていましたすみません。 DATEをつけることでとりあえずの登録(外部キーは後付けにしてみようかなと思います。)はできました。

関連するQ&A

  • MySQLのテーブル設計で迷っています(桁数)

    MySQLのテーブル設計で迷っています。 クリエイト文のカッコの中は桁数を表しているのでしょうか?それともバイト数でしょうか?桁数であれば、それぞれの型で何桁まで設定できますでしょうか? int型のnoを18桁に変更したいのですが、調べているうちに迷ってしまいました。 型 バイト 最小値 最大値 TINYINT 1 -128 127 SMALLINT 2 -32768 32767 MEDIUMINT 3 -8388608 8388607 INT 4 -2147483648 2147483647 BIGINT 8 -9223372036854775808 9223372036854775807 CREATE TABLE `user` ( `no` int(8) unsigned NOT NULL auto_increment, `id` varchar(24) NOT NULL default '', `email` varchar(255) NOT NULL default '', `reg_date` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY (`no`) ) TYPE=MyISAM;

    • ベストアンサー
    • MySQL
  • 漢字名のテーブルとカラムのCREATE TABLEについて

    Oracle9iで以下のCREATE文を実行しようと思っています。 漢字名のテーブルで、漢字名のカラムのあるCREATE文です。 SQL> CREATE TABLE "TAB_あいう"( 2 "かきコード" varchar2(5) NOT NULL , 3 "くけ開始月" varchar2(2) NOT NULL , 4 "フラグ" char(1) NOT NULL , 5 "さCD" char(6) NOT NULL , 6 "日時" date NOT NULL , 7 canstraint PK_FISCALTERM primary key ("かきコード")); canstraint PK_FISCALTERM primary key ("かきコード"))                            * 行7でエラーが発生しました。: ORA-00907: 右カッコがありません。 しかし、 ORA=00907;右カッコがありません。といわれてしまいます。 見た目、右かっこはあります。 なにか、お作法的なものがあるのでしょうか?

  • Oracleのシーケンスありのテーブル作成について

    Oracleのテーブルを作るのに、ある列を自動で「全体の通し番号」みたいなユニーク(一意)な番号を振りたいく、 シーケンス(sequence)を作成しテーブルを作ろうとしているのですがうまくいきません。 どこがわるいのでしょうか。 create sequence "yamaaf_seq"; CREATE TABLE TBL_AFFILIATE_SESS( UNIQ_ID NUMBER(11,0) DEFAULT nextval('yamaaf_seq') NOT NULL, ORG_CODE VARCHAR2(64) NOT NULL, primary key("UNIQ_ID"));

  • MySQLのFOREIGN KEYについて

     MySQLのFOREIGN KEYについて質問です。 下記のようにitemテーブルを作ってからarrivalhistoryテーブルを作ろうとすると ERROR 1005 (HY000): Can't create table 'xxx_db.arrivalhistory' (errno: 150) というエラーが出てしまいます。 自分でもForeign keyの作り方等調べてはみたのですが、 上手く解決することができません。 どなたかアドバイス下さい。お願いします。 ・親 create table item ( id bigint not null primary key, itemno VARCHAR(50) ) engine=InnoDB; ・子 create table arrivalhistory( id int primary key, itemno varchar(50), arrivaldate date, index(itemno), foreign key(itemno) references item(itemno) on update cascade on delete cascade ) engine=InnoDB;

    • ベストアンサー
    • MySQL
  • テーブル作成時に1289エラーが出る。

    テーブル作成時に、ERROR 1289 (HY000): The 'InnoDB' feature is disabled; you need MySQL built with 'InnoDB' to have it working というエラーが出てしまいます。 どういった原因が考えられるでしょうか? Mysql5.0.15を使っています。 CREATE文 CREATE TABLE USER ( ID BIGINT NOT NULL AUTO_INCREMENT ,NAME VARCHAR(30) ,PRIMARY KEY (ID) ) type=InnoDB;

  • phpmyadminでのテーブル作成

    phpmyadminでテーブルを作成しようとするとエラーが発生します。 <実行されたSQLクエリ> CREATE TABLE `個人情報` ( `氏名` VARCHAR( 30 ) NOT NULL , PRIMARY KEY ( `氏名` ) ) <mysqlのメッセージ> #1 - Can't create/write to file '.\住所録\個人情報.frm' (Errcode: 2) どうやらファイルを作成できないと言われているみたいです。 いろいろ試してみましたがよくわかりません。 初歩の初歩ですいませんがご解答お願いします。

    • ベストアンサー
    • MySQL
  • 同じ構成の2つのテーブルの更新について

    はじめまして、下のような2つの同じ構成のテーブルがあった場合に create table test1 ( key1 varchar(8) not null, key2 varchar(4) not null, key3 varchar(6) not null, key4 varchar(11) not null, suryo int(9), kingaku int(11), constraint test1_key primary key (key1,key2,key3,key4) ); create table test2 ( key1 varchar(8) not null, key2 varchar(4) not null, key3 varchar(6) not null, key4 varchar(11) not null, suryo int(9), kingaku int(11), constraint test2_key primary key (key1,key2,key3,key4) ); 10万件のtest1テーブルに 5件のtest2テーブルの内容をキー集計した結果を test1に反映するにはどうのようなSQL文を書けば、効率的なのでしょうか? 片方のテーブルはデータ量が多く、もう片方は数件の更新処理となります。 宜しくお願いいたします。 ・処理前 (test1テーブル) key1,key2,key3,key4,suryo,kingaku "20070521","1111","111111","11111111111",10,1000 "20070521","2222","222222","22222222222",5,5000 "20070521","3333","333333","33333333333",1, 100 (test2テーブル) key1,key2,key3,key4,suryo,kingaku "20070521","2222","222222","22222222222",10,30000 ↓ ・処理後 (test1テーブル) key1,key2,key3,key4,suryo,kingaku "20070521","1111","111111","11111111111",10,1000 "20070521","2222","222222","22222222222",15,35000 "20070521","3333","333333","33333333333",1, 100

    • ベストアンサー
    • MySQL
  • PL/SQLでフィルタ後のテーブルを返す関数

    環境:Oracle81740 タイトル通りの質問ですが、、、 以下のテーブルがあったとします。 CREATE TABLE PUBLIC.TEST_TABLE ( KEY1 CHAR(20) NOT NULL, KEY2 CHAR(20) NOT NULL, VALUE1 VARCHAR2(256), CONSTRAINT GENERAL_TABLE_PK PRIMARY KEY (KEY1, KEY2) ) そこで本題ですが、 (構文がめちゃくちゃだとは思いますが、読み取ってください^^;) FUNCTION TEST_GET ( IN_KEY TEST_TABLE.KEY1%TYPE ) RETURN TABLE IS retTbl TABLE; というイメージで、[KEY1]値を受け取り、該当するレコードをテーブルとして返す関数を組みたいのですが、調べがつきません。 どなたかよろしくお願いいたします。

  • NOTNULL制約について

    MYSQL ver4.0.20a 下記のようにNOTNULL制約を付けてテーブルを作成するのですが、 デフォルト値が勝手に設定されてしまいます。 CREATE TABLE TEST_01 ( NO int(8) NOT NULL auto_increment, STATUS int(1) NOT NULL, TOUROKUBI date NOT NULL, MEMO varchar(200) NOT NULL, PRIMARY KEY (NO) INT型だと 0 varchar型だと '' date型だと 0000-00-00 インサートの時に値がNULLの場合、SQLエラーを返してほしいのですが、 デフォルト値が設定されている為、登録されてしまいます。 本当はNOTNULL制約で、DBにチェックを任せたいのですが・・・ どなたかご存知の方、教えてください。 お願いします。

    • ベストアンサー
    • MySQL
  • Oracleでテーブルを作成する際に、インデクスの作成先を指定したい。

    以下のようにテーブルを作成しようとしてます。 CREATE TABLE TEST_USER.M_USER ( ID char(4), NAME varchar2(40) NOT NULL), CONSTRAINT PK_USER PRIMARY KEY(ID) ); さて、プライマリキーを定義しているので、インデクスが作成されるはずです。 この作成先のテーブルスペースを指定したいのですが、方法が解りません。 CREATE TABLEの紹介をしているサイトにものっていなくて、途方にくれています・・・。 CONSTRAINT句を使えばいいのでしょうか?