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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

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

Q&A

2回答

5602閲覧

SQL文の括弧の規則性

cupnoodle

総合スコア20

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQL

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

0グッド

2クリップ

投稿2021/10/02 08:23

SQLの括弧について、どういう時に必要となるか、その規則性が見い出せずによく間違えてしまいます。

例えば下記の例ですと
・①は後ろを大きく括弧で囲みますが、②や③は否(寧ろ括弧で囲むとエラー)。
・②-3のように要素別に囲んでもエラー。
・③は括弧で囲むも、飛び飛びで囲む。

「係り方」?や「引数」の捉え方の問題かと思うのですが、分かり易い考え方を教えて頂けますでしょうか。

※postgreSQLを使用しています。標準SQLや他の方言であれば整理が容易い、という事であればその点も教えて頂ければと存じます。


↓①-1 ok

SQL

1CREATE TABLE Shop 2 (Shohin_id CHAR(4) NOT NULL, 3 Shohin_mei VARCHAR(100) NOT NULL, 4 Hanbai_tanka INTEGER , 5 PRIMARY KEY (shohin_id) );

↓②-1 ok

SQL

1ALTER TABLE Shop 2 ADD COLUMN Shohin_bunrui CHAR(100) NOT NULL, 3 ADD COLUMN Shohin_type CHAR(100);

↓②-2 NG

SQL

1ALTER TABLE Shop( 2 ADD COLUMN Shohin_bunrui CHAR(100) NOT NULL, 3 ADD COLUMN Shohin_type CHAR(100); 4)

↓②-3 NG

SQL

1ALTER TABLE Shop 2 ( ADD COLUMN Shohin_bunrui CHAR(100) NOT NULL ), 3 ( ADD COLUMN Shohin_type CHAR(100) ); 4

↓③ ok

SQL

1INSERT INTO Shop 2    (Shohin_id, Shohin_mei, Hanbai_tanka, Shohin_bunrui )   3   VALUES 4     ('0000', 'chopstics', 140, 'kitchen goods' );

表記揺れ検索用:かっこ、括弧、カッコ、ルール

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

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

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

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

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

guest

回答2

0

規則も何も文法なのですから「何がOKかNGか」を検証するのではなく、
ドキュメント確認してその通りに書くしかないと思います。
(SQLも方言があるので使うDB、バージョンに対応したものを確認してください)

「こういう時はOK、こういう時はNG」というのはなく、
ここに必要」という観点のみです。

投稿2021/10/02 10:02

m.ts10806

総合スコア80875

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

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

cupnoodle

2021/10/02 12:15

ご意見ありがとうございます。 はい、仰る通りそれが文法なので覚えたいなと思っているのですが、よく間違ってしまう(覚えられない)のです。 何らかの規則性や意味合いがあるのであれば、記憶に残りやすい(覚えやすい)な、と思って質問した次第です。
m.ts10806

2021/10/02 21:23

都度ドキュメントを確認し身につけるしかありません。 「覚えたい」なら文法を覚えるしかない。 質問でやろうとしていることも結局「覚え方」みたいなものですよね? それなら「要不要」よりも「要」だけ覚えた方がやることは絞られます。 中にはSQLの入力サポートがあるエディタを使うという手もあるでしょうけど、組みたいことに対してフォローしてくれるわけではないので、勝手にカッコをつけてくれるものではないですしね。
cupnoodle

2021/10/03 00:06

仰る通り、「要」だけを覚えたいと思っています。 追加のご指摘、ありがとうございます。
m.ts10806

2021/10/03 00:43

指摘と言うかほぼ正論のようなものと思っています。 プログラムは書いた通りにしか動かないので、仕様をおさえる以外に乗り越える術はないです。運や自分の想いではどうにもできません。
m.ts10806

2021/10/03 00:45 編集

それにSQLは提示されたものだけが全てではないので、 質問と回答という範囲ではおさまりません。 そこだけを解決できたとしても他で同じように悩むことになります。 (なのでこの無言での低評価2には疑問しかない。)
guest

0

分かり易い考え方

こう言ってしまうと身も蓋もないですが、慣れではないでしょうか。
参考までに、以下は 標準SQL での構文になります。

https://ja.wikipedia.org/wiki/CREATE_(SQL)

SQL

1CREATE [TEMPORARY] TABLE [表名] ( [基底表要素カンマリスト] ) [表パラメータ]

https://ja.wikipedia.org/wiki/ALTER_(SQL)

SQL

1ALTER [オブジェクトの種類] [オブジェクト名] [パラメタ]

https://ja.wikipedia.org/wiki/INSERT_(SQL)

SQL

1INSERT INTO テーブル名 [ (列名1 [ ,列名2・・・]) ] 2 VALUES (値A1 [, 値A2 ...]) [, (値B1 [, 値B2 ...]) ...];

投稿2021/10/02 10:41

cx20

総合スコア4648

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

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

cupnoodle

2021/10/02 12:25

ご意見ありがとうございます。 慣れしかない、という事はつまり「やはり規則性はない」という事でしょうかね。 SELECT以外は接する機会が少ないため、質問例のような文を使う際にいつも間違えてしまい、効率が悪いなと思っています。
cx20

2021/10/02 12:38

ALTER TABLE 等は確かにややこしいかも知れません(自分も込み入った構文はマニュアル無しで書けるか怪しいです。)
cupnoodle

2021/10/03 00:12

丸暗記となるまで都度参照、をもうちょっと続けてみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問