• ベストアンサー
  • 困ってます

SQLサーバーとMySQLの大きな違いは?

MySQLは良く使っていますが、たとえばテーブルの型情報などは、SHOW [FULL] COLUMNS FROM tbl_name テーブル名で得ることができますが、SQLServerでは、どのようにするのでしょうか? また、MySQLからSQLServer移行者にとって、注意すべき点などご存知の方教えて下さい。また、SQLServerのお勧め書籍も知りたいです。

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

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

  • ベストアンサー
  • 回答No.2

多くの主要なRDBMSは、表や列の定義情報を表形式で管理しており、ユーザに参照するためのビュー表などを公開し、SQLでの検索を可能にしています。 MySQLのように、SHOWコマンドなどの特別なコマンドを利用させる方が珍しいです。MySQLも5.0からか情報スキーマが公開され、SQLでの検索が可能になりました。 SQL Serverでは、システムテーブルを直接検索したり、ビューを検索したり、提供されているストアドプロシジャーを使うといった方法があります。 これから使うなら、情報スキーマビュー「INFORMATION_SCHEMA.COLUMNS」表を検索する方法を覚えておくといいでしょう。

参考URL:
http://msdn2.microsoft.com/ja-jp/library/ms186778.aspx

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

その他の回答 (1)

  • 回答No.1

SQL Server はよく知らないのですが、文字列引用符のエスケープが \' ではなく、 '' であることは注意した方が良いと思います。 他の言語から使う場合は、データベースとの接続ドライバが文字列のエスケープ処理をやってくれると思うので、それを使うならこの心配は不要です。

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

関連するQ&A

  • MySQLの現存するテーブルからcreate table文を起こす方法ありますか?

    MySQLの現存するテーブルからcreate table文を起こす方法ありますか? ・お金が掛からない ・CUIベースでできる が条件です。 show full columns from テーブル名; でテーブルの情報を参照できるところまでは理解したのですが。。 showとかの特殊コマンドでなくて、管理情報のテーブル(かビュー、あるいはシノニム)に直接クエリー投げれるなら、スクリプト組めばなんとかなりそうなのですが。。

    • ベストアンサー
    • MySQL
  • エクセルからMySQL

    すみません、エクセルからMySQLのテーブル作成をしたいのですが、うまくいきません。 --------------------------------------------------------- Sub aaa() Dim cat As ADOX.Catalog Dim tbl As ADOX.Table Dim cnn As New ADODB.Connection Set cat = New ADOX.Catalog cat.ActiveConnection = "provider = MSDASQL.1;data source=test;" cnn.Open "Provider=MSDASQL.1;Data Source=test;" Set tbl = New ADOX.Table tbl.Name = "aaa" Set tbl.ParentCatalog = cat With tbl .Columns.Append "ID", 4 .Columns.Append "名前", 4 End With End Sub ----------------------------------------------------------- エクセルからACCESSへの接続の参考ホームページを見ながらやっているので、MySQLの場合これであっているのか分からないです。実行してもエラーがでないのですが、確認してみるとテーブルが作成されていないです。どなたか分かる方教えてください。お願いします。 上のコードは、MySQLの【test】というデータベースに【aaa】というテーブルを作成するというつもりで書いているのですが、間違っていますでしょうか?

  • PHP+MySQL 内部結合(INNER_JOIN)がうまく行きません。

    以下の文で「client_master」テーブルと「jobmaster0717」テーブルを内部結合させようとしているのですが、うまく行きません。どこがおかしいのでしょうか? <?php  // データベースサーバへの接続・データベースの選択  $db = mysql_connect('localhost','test','password');  $db_name = 'test';  mysql_select_db($db_name,$db);  // 処理対象テーブル  $tbl_name1 = "client_master";  $tbl_name2 = "jobmaster0717";    // 内部結合(INNER JOIN句)  $str_sql1 = "SELECT * FROM {$tbl_name1}"       . " INNER JOIN {$tbl_name2}"       . " ON {$tbl_name1}.company_ID"       . "  = {$tbl_name2}.client_ID;";  $rs1 = mysql_query($str_sql1,$db);  print "\"{$str_sql1}\"<br>\n";  // 結果セットの表示  show_rs($rs1,$db);  print "<br>\n";  // 結果セット(結果ID)の開放  mysql_free_result($rs1);    // データベースサーバの切断  mysql_close($db); ?>

  • MySQLで論理名を取得する方法

    表題の通り、MySQLでカラムの論理名を取得する方法を探しています。 show full columns from table; でやってもダメでした、、、

  • sp_columnsでデータベース名を指定できません

    現在、SQLServer勉強中のものです。たびたびの質問ですいません。 sp_columnsというシステムストアドプロシージャで列情報が取得できますが、@table_nameでテーブルを、@table_ownerで所有者を指定できますよね。 さらに@table_qualifierでデータベース名を指定できると思っていたのですが、これは無理なのでしょうか。 ヘルプには「SQLServerでは、この列はデータベース名をあらわします」とあるのですが、現在、接続データベース以外のデータベースに格納されているテーブルの列情報を参照しようとすると「オブジェクト修飾子の一部になるデータベース名には、現在のデータベースを指定してください。」と表示されてしまいます。 例:TestDB1に接続してTestDB2内のテーブル指定 use TestDB1 sp_columns @table_name=TestDB2Tbl, @table_qualifier=TestDB2

  • MySQLでテーブルとビューの区別

    SHOW COLUMNSで特定テーブルのカラム名などを取得しています。 テーブルとビューとを区別したいのですが、区別情報を取得するにはどうしたらいいのでしょうか。

    • ベストアンサー
    • MySQL
  • PostrgreSQL

    PostgreSQLに関して質問です。PostrgreSQLを使い始めたのですが、テーブルのデータ定義を確認するコマンドを作成しています。 MySQLでは「SHOW COLUMNS FROM DESC テーブル名」で取得出来るんですが、PostrgreSQLにはあるんでしょうか 教えてください

  • oracleからSQL Serverへの移行

    oracleからSQL Serverへ移行することになったのですが、副問い合わせで定義したテーブル同士を外部結合するSQL構文が、うまく実現できず、ご教授して頂きたくよろしくお願いします。 下記、oracle 構文をSQL Server構文へ書き換えたい。 select * from (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 >100) aaa, (select cal1,cal2,cal3 from tbl1,tbl2 where cal1 <=100) bbb, tbl3 where aaa.cal1 = bbb.cal1(+) and aaa.cal2 = bbb.cal2(+) and aaa.cal3 = bbb.cal3(+) and aaa.cal1 = tbl3.cal1 よろしくお願いします。

  • mysql

    phpでmysqlのテーブルからデータを引っ張ってくる構文なのですが $pdo = new PDO("mysql:dbname=データベース名", "root", "root"); $st = $pdo->query("SELECT * FROM テーブル名"); while ($row = $st->fetch()) { $name = htmlspecialchars($row['テーブル名']); $price = htmlspecialchars($row['price']); echo "<tr><td>$name</td><td>$price 円</td></tr>"; 上記のデバックに手こずっております。 自分の知りたいところはカタカナ、漢字の使われているところが正しいのか知りたいです。 またもっと楽な方法があれば教えて頂きたいです。 馬鹿でスミマセンがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • mysql で副問い合わせができない (長文)

    レンタルサーバー上のmysqlで副問い合わせがうまくできません お手数おかけしますが、何か情報をいただけましたら幸いです 【質問内容】 レンタルサーバー上のmysqlで副問い合わせがうまくできない 【詳細】 ローカルPC上 の mysql で 副問い合わせをするとうまくいくのですが レンタルサーバー上では syntax エラーが出てしまいます ●状況1 たとえば ローカルPC上のmysql で select * from (SELECT * FROM ronbun_art_tbl) AS TBL_B; を実行すると正しく結果を返すのですが レンタルサーバー上だと エラーとなる ●状況2 レンタルサーバー上で SELECT * FROM ronbun_art_tbl は結果をちゃんと返すのですが select * from (SELECT * FROM ronbun_art_tbl) AS TBL_B; をはエラーとなる 【その他の情報】 サーバー ハッスルサーバー mysqlバージョン 4.0.24 ローカルのmysql 4.1 【エラーの内容】 #1064 - You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT * FROM ronbun_art_tbl ) AS TBL_B LIMIT 0, 30' at line 1

    • ベストアンサー
    • MySQL