SQL Serverデータベースによくある問題(一)


1.テーブルの索引を削除すると、
インデックスの「grade.pk_」は禁止されています。grade’はDROP INDEXを明示的に使用する。このインデックスは、PRIMARY KEY制約の強制実行に使用されています。索引の削除は下記の文を使って行われます。
alter table grade
drop constraint pk_grade
構文:
alter table table_name
drop constraint index_name
2.sql serverの文にセミコロンを付けるかどうかの問題はsql serverの命令に対して、セミコロンを付けないのが一般的で、プラス記号は普通は一回に複数の文を実行するためです。しかし、いくつかのデータベースでは、セミコロンを追加します。sql文をいくつかの高度な言語プログラムに組み込んでも、セミコロンを追加することはできません。コンパイラがセミコロンをsql文の一部として扱うため、エラーがコンパイルされます。ただし、セミコロンを追加しなければならない場合があります。詳細はSqlにセミコロンを追加しなければならない場合があります。
3.複数の部分から構成された識別子をバインドできない(完璧に解決されていない)sql server 2017に下記のコマンドを作成しました。
select student.sno,student.sname from student
where student.sno = grade.sno
実行中に以下のエラーが発生しました。
複数の部分からなる識別子「grade.sno」をバインドできませんでした。
インターネットで多くの資料を調べましたが、インターネット上の資料によると、grade表に別名があります。この表を使う時は別名を使う必要があります。sqlでは別名を優先的に使うのが普通です。しかし私は別名を取っていません。その中のどの列に対しても別名を取っていません。だからおかしいです。後でw 3 cschoolを調べて、inner joinを使って問題を解決しました。
select student.sno,student.sname from student
inner join grade
on student.sno = grade.sno
これは成功に実行できます。問題が解決されましたが、やはり迷っています。私のような書き方には間違いがないので、中にはきっと何か分からない原因があります。ここにエイリアスを設定する文法を追加します。
表のSQL Alias文法:
SELECT column_name(s)FROMテーブルuname AS aliasname
列のSQL Alias文法:
SELECT column_name AS aliasname FROMテーブルname