MYSQLでデータベースの作成

このQ&Aのポイント
  • MYSQLを使用して、選手表と成績表のデータベースを作成するSQL文を教えてください。
  • 選手表には選手IDと選手氏名の列があり、主キーは選手IDです。
  • 成績表には大会ID、選手ID、スコアの列があり、主キーは大会IDと選手IDの組み合わせです。
回答を見る
  • ベストアンサー

MYSQLでデータベースの作成

MYSQLで次のような表を作成するためのSQLを教えてください。 (1)PLAYERS表のPID列はその表の主キー PLAYERS表(選手表) PID(選手ID) PANME(選手氏名)   M001    JUMBO OZAKI         M002    KING KAZU   M003    ANIKI KANEMOTO (2)RESULTS表のGIDとPID列はその表の複合キーであり、主キーになっている。 RESULTS表(成績表) GID(大会ID) PID(選手ID) SCORE(スコア) HIUCUP08    M001     72 HIUCUP08    M002     75 JPNCUP09    M001     70 JPNCUP09    M002     76 JPNCUP09    M003     68 (3)各々の表について設定されたデータのSQL よろしくおねがいします。

  • MySQL
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • x_jouet_x
  • ベストアンサー率68% (162/236)
回答No.1

これでいいのか分かりませんが…。 (1)PLAYERSテーブル作成SQL ---------- CREATE TABLE PLAYERS ( PID char(4) NOT NULL, PNAME varchar(255) NOT NULL, PRIMARY KEY (PID) ); ---------- (2)RESULTSテーブル作成SQL ---------- CREATE TABLE RESULTS ( GID char(8) NOT NULL, PID char(4) NOT NULL, SCORE int(11) NOT NULL, PRIMARY KEY (GID,PID) ); ---------- (3)データ作成SQL <PLAYERSテーブル> ---------- INSERT INTO PLAYERS (PID, PNAME) VALUES ('M001', 'JUMBO OZAKI'), ('M002', 'KING KAZU'), ('M003', 'ANIKI KANEMOTO'); ---------- <RESULTSテーブル> ---------- INSERT INTO RESULTS (GID, PID, SCORE) VALUES ('HIUCUP08', 'M001', 72), ('HIUCUP08', 'M002', 75), ('JPNCUP09', 'M001', 70), ('JPNCUP09', 'M002', 76), ('JPNCUP09', 'M003', 68); ---------- 各フィールドの属性は適宜変更して下さい。 MySQLでデータベースやテーブルを作成されるのであれば、Webサーバが使える環境であればphpMyAdmin(http://www.phpmyadmin.net/home_page/index.php)を使用すると便利ですよ。

marukozozo
質問者

お礼

ありがとうございます。参考になりました。

関連するQ&A

  • MYSQL文について

    MYSQLで次のような表を元に(1)(2)(3)を作成するためのSQLを教えてください。 (1)PLAYERS表のPID列はその表の主キー PLAYERS表(選手表) PID(選手ID) PANME(選手氏名)   M001    JUMBO OZAKI         M002    KING KAZU   M003    ANIKI KANEMOTO (2)RESULTS表のGIDとPID列はその表の複合キーであり、主キーになっている。 RESULTS表(成績表) GID(大会ID) PID(選手ID) SCORE(スコア) HIUCUP08    M001     72 HIUCUP08    M002     75 JPNCUP09    M001     70 JPNCUP09    M002     76 JPNCUP09    M003     68 (1)RESULTS表から、スコア「(SCORE)が72以下の行を取り出し、大会ID(GID)、選手ID(PID)、スコア(SCORE)を表示する。ただし、スコア(SCOE)の昇順に表示する。 (2)RESULTS表を対象に、選手ごとに、選手ID(PID)、大会の参加数、スコア(SCORE)の平均を表示する。大会への参加回数は集合関数COUNR(*)を、スコアの平均は集合関数AVG(SCORE)を利用すればよい。 (3)スコアが72より小さかったすべての成績について、大会IDと選手氏名、スコアを選手氏名の昇順に表示する。PLAYERS表とRESULTS表を結合すればよい。 よろしくおねがいします。

    • ベストアンサー
    • MySQL
  • SQL文について

    MYSQLで次のような表を作成するためのSQLを教えてください。 (1)PLAYERS表のPID列はその表の主キー PLAYERS表(選手表) PID(選手ID) PANME(選手氏名)   M001    JUMBO OZAKI         M002    KING KAZU   M003    ANIKI KANEMOTO (2)RESULTS表のGIDとPID列はその表の複合キーであり、主キーになっている。 RESULTS表(成績表) GID(大会ID) PID(選手ID) SCORE(スコア) HIUCUP08    M001     72 HIUCUP08    M002     75 JPNCUP09    M001     70 JPNCUP09    M002     76 JPNCUP09    M003     68 (3)各々の表について設定されたデータのSQL のとき、次のようなSQL文を入力してもエラーが出ます。 (1)PLAYERSテーブル作成SQL ---------- CREATE TABLE PLAYERS ( PID char(4) NOT NULL, PNAME varchar(255) NOT NULL, PRIMARY KEY (PID) ); ---------- (2)RESULTSテーブル作成SQL ---------- CREATE TABLE RESULTS ( GID char(8) NOT NULL, PID char(4) NOT NULL, SCORE int(11) NOT NULL, PRIMARY KEY (GID,PID) ); ---------- (3)データ作成SQL <PLAYERSテーブル> ---------- INSERT INTO PLAYERS (PID, PNAME) VALUES ('M001', 'JUMBO OZAKI'), ('M002', 'KING KAZU'), ('M003', 'ANIKI KANEMOTO'); ---------- <RESULTSテーブル> ---------- INSERT INTO RESULTS (GID, PID, SCORE) VALUES ('HIUCUP08', 'M001', 72), ('HIUCUP08', 'M002', 75), ('JPNCUP09', 'M001', 70), ('JPNCUP09', 'M002', 76), ('JPNCUP09', 'M003', 68); ---------- なぜエラーが発生するのか教えてください。

    • ベストアンサー
    • MySQL
  • SQLについて

    Access2007 で次のような表を作成するためのSQLを教えてください。 PLAYERS表(選手表) PID(選手ID) PANME(選手氏名)   M001    JUMBO OZAKI         M002    KING KAZU   M003    ANIKI KANEMOTO また、テーブル作成をするときにSQLを入力することができません。入力するための方法も教えていただけるとありがたいです。

  • プログラミングについて

    PLAYERS表 PID(選手ID)  PNAME(選手氏名) M001       JUMBO OZAKI M002       KING KAZU 主キーは、PID で、プログラムを作成するのですがエラーが出ます。 create tabre PLAYERS ( PID char(4), PNAME varchar(15), primary key (PID) ); と、入力すると ERROR 1050 (42S01):table "players" already exists と表示されます。

    • ベストアンサー
    • MySQL
  • プログラミングの詳しい人へ

    MY SQLでプログラムを作成してますがうまくいきません。 PLAYERS表 ーーーーーーーーーーーーーーー l PID(選手ID)lPNAME(選手名)l lーーーーーーーーーーーーー--l  主キーはPID で、 create table PLAYERS ( PID char (4), PNAME varchar, primary key(PID) ); と入力するとエラーが出ます。 エラーメッセージは、 ERROR 1064(42000):You have an error in your SQL syntax,check the manual tthat corresponds to your my SQL server version for the right syntax to use near'primary key(PID) )' at line 4 と表示されます。 自分では、ちゃんと表の定義をして正しいと思うのですが?

    • ベストアンサー
    • MySQL
  • 別のテーブルの値でUPDATEしたいのですが

    Oracle8iデータベースのSQL文で困っています。 以下のような2つの表があります。 ※表の構成は似ていますが、同じではありません。 [表A]  列1 ・・・ 主キー  列2 ・・・ 主キー  列3  列4 [表B]  列1 ・・・ 主キー  列2 ・・・ 主キー  列3  列4 表Aと表Bの主キーが一致するデータについて、 表Aを表Bの値でUPDATEしたいのですが、 どのように記述すればよいでしょうか? よろしくお願いします。

  • データベースのインポートができません(MySQL)

    ●質問の主旨 下記のサイトを見ながら、データベースのテーブルを インポートしようとしていますが、エラーが出ます。 この場合、phpmyadminのどこを確認すればよいでしょうか? ご存知の方、ご教示願います。 http://www.dbonline.jp/phpmyadmin/export-import/index3.html ●開発環境 windows8 xammp1.8.1 ●エラーの内容(添付画像) エラー 実行した SQL: -- -- データベース: `mydb10` -- CREATE DATABASE `mydb10` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; MySQL のメッセージ: #1007 - Can't create database 'mydb10'; database exists ●インポートの内容(mydb.sql) -- phpMyAdmin SQL Dump -- version 3.5.2.2 -- http://www.phpmyadmin.net -- -- ホスト: 127.0.0.1 -- 生成日時: 2013 年 4 月 20 日 08:27 -- サーバのバージョン: 5.5.27 -- PHP のバージョン: 5.4.7 SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; SET time_zone = "+00:00"; /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; /*!40101 SET NAMES utf8 */; -- -- データベース: `mydb10` -- CREATE DATABASE `mydb10` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE `mydb10`; -- -------------------------------------------------------- -- -- テーブルの構造 `db10` -- CREATE TABLE IF NOT EXISTS `db10` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` text NOT NULL, `address` text NOT NULL, `tel` text NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; -- -- テーブルのデータのダンプ `db10` -- INSERT INTO `db10` (`id`, `name`, `address`, `tel`) VALUES (1, 'あああ', 'いいい', '111'), (2, 'ううう', 'えええ', '222'), (3, 'おおお', 'かかか', '333'); /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

    • ベストアンサー
    • MySQL
  • データベース

    [表]社員 と [表]組織 SQLと関係代数で記述して、結果を導出表として作成したいのですが・・・ 「社員」....................................................│..............「組織」 [社員ID]...[名前]....[年収]...[課ID]............│........[課ID].....[課名].....[課長] [1001].....[浅野]....[800]....[D].............. │..........[D].........[設計].....[1001] [1002].....[坂口]....[600]....[D]...............│..........[S].........[営業]......[1003] [1003].....[山口]....[800]....[S]...............│..........[P].........[社長室]...[NULL] [1004].....[森]........[900]....[S] [1005].....[田中]....[700]....[S] [1006].....[山田]....[600]....[NULL] 「表」社員を定義する。 CREATE TABLE 社員 ( 社員ID CHAR(4)    NOT NULL , 名前   NCHAR VARYING(20) , 年収  INTEGER , 課ID CHAR(1) , PRIMARY KEY (社員ID) , FOREIGN KEY (課ID) PEFERENCES 組織) 表「組織」を定義する CREATE TABLE 組織 ( 課ID CHAR (1) NOT NULL , 課名  NCHAR (10) , 課長  CHAR (4) , PRIMARY KEY (課 ID) , FOREIGN KEY (課長)  REFERENCES 社員) 1)表「社員」から年収800万未満の社員のすべての情報が知りたい 2)表「社員」と表「組織」から課名が設計である社員の社員IDと名前、課名を知りたい このように「データベース」という本に問題があるんですがわかります方、教えていただけませんでしょうか。 表など見にくいかとは思いますが、宜しくお願い致します。

  • データベースの考え方で。

    データベースの考え方、で教えてください。 路線検索と、路線にひもづく駅名の時刻表を表示させる、データベースを作りたいと思っているのですが、 その場合、考え方としては、以下のような感じになるのでしょうか? 路線名のtbl sql文: create table transit ( id integer not null, name varchar(20) not null ); 路線名tblにひもづく、駅名tbl sql文: create table station ( id integer not null primary key, transit_id integer not null, name varchar(20) not null ); 駅名tblにひもづく、時刻表tbl sql文: create table timetable ( id integer not null primary key, station_id integer not null, hour integer not null, minute integer not null ); 表示パターンとしては、 ================================= ○○線: XX駅 6:10 20 7:30 55 . . . . . . 22:15 36 ================================== のような感じです。 よろしくお願いします。

  • GROUP BYで集約されるときのソートを変えたい

    GROUP BYで集約されるときのソートを変えたい MySQLの5.1を使用しています。 テーブル"tbl"には、"no","id","score"の3つのフィールドがあり、 "no"は主キーです。 +---+----+-------+ | no | id | score | +---+----+-------+ | 1 | 10 | 10002 | | 2 | 10 | 10000 | | 3 | 10 | 10008 | | 4 | 11 | 10004 | | 5 | 12 | 10006 | +---+----+-------+ 上記の表から、 scoreの値が高い順にグループ化してソートしたいのですが、 以下のSQL文ではscoreが最初に登録されたものに集約されてからグループ化されてソートしてしまうため、 思い通りの結果が得られずに困っています。 ↓具体例 SELECT no, id, score FROM tbl ORDER BY score DESC GROUP BY id; +---+----+-------+ | no | id | score | +---+----+-------+ | 5 | 12 | 10006 | | 4 | 11 | 10004 | | 1 | 10 | 10002 | +---+----+-------+ ↓欲しいソート順 +---+----+-------+ | no | id | score | +---+----+-------+ | 3 | 10 | 10008 | | 5 | 12 | 10006 | | 4 | 11 | 10004 | +---+----+-------+ テンポラリテーブルはなるべく使用せずソートしたいのですが、 このような事は可能なのでしょうか? ご存知の方がいらっしゃいましたら教えていただけると助かります。 よろしくお願いします。

    • ベストアンサー
    • MySQL