質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

Q&A

解決済

4回答

1833閲覧

SQLでエラーが出る理由が分かりません

newyee

総合スコア213

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

1グッド

1クリップ

投稿2019/02/22 05:00

編集2019/02/22 05:19

以下のSQL文が何故エラーになってしまうのかが分からない為、教えて頂けましたら幸いです。

sql

1MariaDB [tennis]> create table users( 2 -> id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 3 -> name VARCHAR(255) NOT_NULL, 4 -> password VARCHAR(255) NOT NULL)DEFAULT CHARACTER SET=utf8;

以下はエラーの内容となります

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '

password VARCHAR(255) NOT NULL)DEFAULT CHARACTER SET=utf8' at line 3

よろしくお願いします

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2019/02/22 05:10

SQLもプログラムコードです PHPのときと同じようにコードブロック対応していただけませんか? でないと他にも隠れた構文ミスがあってもこちらでは気づくことができません。
newyee

2019/02/22 05:14

SQLもコードブロックで囲むのですね... 知りませんでした...早急に修正します...
m.ts10806

2019/02/22 05:16

一応「Language」の「L」ですし。 コードはコードなので、構文エラーの対応となれば余計にPHPなどと同じようにしてください。 (「読みやすくする」という観点だとエラーメッセージもですけどね)
guest

回答4

0

ベストアンサー

SQL

1create table users( 2 id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 3 name VARCHAR(255) NOT_NULL, 4 password VARCHAR(255) NOT NULL 5) DEFAULT CHARACTER SET=utf8

ではありません。
13.1.17 CREATE TABLE 構文
カラムにしてするのであれば、CHARACTER SET は create table()内に指定します。
NOT NULLもおかしなところがあります。

SQL

1create table users( 2 id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 3 name VARCHAR(255) NOT NULL, 4 password VARCHAR(255) CHARSET utf8 5)

訂正

defaultがあるのでtable optionと考えると

SQL

1create table users( 2 id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, 3 name VARCHAR(255) NOT NULL, 4 password VARCHAR(255) NOT NULL 5) 6DEFAULT CHARACTER SET utf8

set=utf8も誤っていましたね。※マニュアルではOKのようにも見えますけど。。

投稿2019/02/22 05:09

編集2019/02/22 06:28
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2019/02/22 05:27

ご回答ありがとうございます。 教えて頂きましたように、SQLを、改善したのですが、以下のようなエラーが出てしまいます。 「ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'CHARACTER SET=utf8 )' at line 5」 上記は、「CHARACTER SET=utf8」の部分が間違っているということなのでしょうか...?自分が見る限りは、おかしな所は見つからないんですよね...
yambejp

2019/02/22 05:35

[DEFAULT] CHARACTER SET(CHARSET)は table_optionsですので外で良いのでは? ここのカラムのcharsetを指定するのとは違うので
sazi

2019/02/22 05:40

> yambejpさん フォローありがとうございます。 修正分追記しました。
newyee

2019/02/22 05:44

>saziさん ご回答、追記頂きありがとうございます。 追記頂きましたSQLをそのまま、入力してみましたら、正常にテーブルを作成できました。 参考書通りに、書いたつもりでいたのですが、自分のチェックが甘すぎました...
sazi

2019/02/22 05:51

検証不足で回答してしまい、反省してます。
newyee

2019/02/22 06:05

いえいえ!とんでもないです。助かりました。
guest

0

まずエラー調べましょう。

syntaxはPHPでもよく見かけますね。
どの言語でもほとんど同じ意味で使われます。
「構文エラー」です。

構文が間違っている、というときこそマニュアルの出番です。
PHPマニュアルと同じようにMySQLにもきちんとマニュアルがあります。

CREATE TABLE文で構文エラーのほとんどがカラムの定義です。
型のうち間違えだったりカッコの間違いだったり、全角空白を入れてしまっていたり。
その観点から、各カラムの定義を1つ1つ丁寧に見直してはいかがでしょうか。

投稿2019/02/22 05:08

m.ts10806

総合スコア80850

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2019/02/22 05:38

「NOT NULL」を「NOT_NULL」と打ち間違えていた以外は、参考書通りに打ち込んでいましたので、原因が分からないんですよね... 他のご回答者様からカッコの位置が違うとご回答がありましたので、修正してみたのですが、それでも、やはりエラーをはいてしまいます...
newyee

2019/02/22 05:46

参考書通りに打ち込んでいたので、間違いがない思っていたら、ただの自分のチェックができていなかっただけでした...
退会済みユーザー

退会済みユーザー

2019/02/22 06:05 編集

みんなphpMyAdmin とか Sequel pro とか GUI 使うので、CREATE文を手入力する必要ないのにねぇ
m.ts10806

2019/02/22 05:58

確かにちょっと勿体無い気はします。 まあそれでも何かしら学ぼうとするのは良いことです・・
newyee

2019/02/22 06:00

>mtsさん ありがとうございます。 実は、また,SQLでエラーが出て、解決できなかったのですが、教えて頂きましたサイトのおかげで解決できました。
m.ts10806

2019/02/22 06:02

自己解決できるのは成長している証拠だと思います。 こういったサービスや構文チェック機能(PHPなどでしたらEclipseなどのIDE)を活用してコーディングに集中できる環境を整えるのもエンジニアとしての義務だと思っています。 ちょっとしたエラーで何回も実行して修正して実行してを繰り返すのって無駄ですから・・・
newyee

2019/02/22 06:04

phpMyAdminは知っていたのですが、Srquel proなんていうものもあるんですね。 現在参考書通りに勉強していて、本ではそういったツールは出てきていなかったもので...
m.ts10806

2019/02/22 06:14

目的はデータを作ることではなくそのデータを使ったアプリケーションを作ることだと思うので、データ導入部分はある程度さらっと流してしまっても良いかもしれません。(もちろんきちんと知っているのは良いことですし設計にもつながりますが)
guest

0

NOT_NULL,

↓↓↓

NOT NULL,

追記

一応考え方だけ

  • charsetはDBのデフォルト
  • TABLEのデフォルト
  • カラム

が指定できます。
仮にdbのデフォルトをlatin1だとすると

SQL

1create database testdb charset latin1;

SQL

1create table user1( 2id int, 3val1 varchar(10) 4);

上記tableのデフォルトcharsetも
カラムval1のcollateはlatin系のものになります

SQL

1create table user2( 2id int, 3val1 varchar(10) charset utf8 4);

個別にカラムにchasetをしておけばtableのデフォルトがlatin1でも
任意のchasetを指定できます

SQL

1create table user3( 2id int, 3val1 varchar(10), 4val2 varchar(10) charset sjis 5) charset utf8;

最終的にはdbのデフォルトとtableのデフォルト、カラムはすべてバラバラに指定もできます。
val1はtableのデフォルトを引き継ぎ、val2は任意のcharset

投稿2019/02/22 05:03

編集2019/02/22 05:57
yambejp

総合スコア114843

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2019/02/22 05:28

ありがとうございます。 気づかなかったです...完全に間違って入力していました...
newyee

2019/02/22 06:13

ご丁寧にありがとうございます。 文字コードをバラバラに設定することもできるんですね。勉強になりました。
guest

0

sql

1password VARCHAR(255) NOT NULL)DEFAULT CHARACTER SET=utf8;

sql

1password VARCHAR(255) NOT NULL DEFAULT CHARACTER SET=utf8;

投稿2019/02/22 05:02

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

newyee

2019/02/22 05:33 編集

ご回答ありがとうございます。 カッコの位置なのですが、参考書には、「DEFAULT」の位置の前に書かれていたので、正しいのかと思っていたので、間違っていないものだと信じこんでました...
退会済みユーザー

退会済みユーザー

2019/02/22 05:42

参考書って、「誤植」がつきものですから。 実行してエラーが出るんだったら、動かないんだから、結果は明らか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問