一般來說,我對 mySQL 和 sql 是全新的。正如我在許多教程中看到的那樣,我已經安裝了 mysql 作業臺和 mysql 社區服務器來開始練習。我有 2 個問題可能相互關聯。在許多腳本中,我看到了
USE master;
在我的作業臺版本(8.0 版)中,當我嘗試運行此查詢時說“未知資料庫'主'。我不太確定主資料庫有什么(我用谷歌搜索了它,我只知道這是一個很好的做法)您自己的資料庫在主資料庫中)。
我的另一個讓我更困惑的問題是當我使用 IF 時。
IF NOT EXISTS(SELECT name FROM master.dbo.sysdatabases
WHERE name = 'mydatabase')
CREATE DATABASE [mydatabase]
它不斷給我錯誤:“IF 在這個位置無效,期待 EOF,ALTER,ANALYZE,BEGIN ,...”
當我在 IF 之前使用 BEGIN 時說:IF 在這個位置無效,期待 EOF,';'
起初我認為它與主資料庫有關,所以我嘗試了一些不同的東西:
IF OBJECT_ID('tablename','U') IS NULL
CREATE TABLE tablename(
....);
我得到同樣的錯誤。我在 stackoverflow 上發現的唯一內容是: statement-is-not-valid-in-this-position 有人說“你不能在 SQL 陳述句中使用 IF。你只能在存盤程序或函式中使用它”如果就是這樣,我在網上找到的腳本如何以這種方式使用 IF 陳述句?這是應該作業的 sql 代碼示例:
USE [master]
GO
IF NOT EXISTS (SELECT name FROM master.dbo.sysdatabases
WHERE name = 'HotelManagement')
CREATE DATABASE [HotelManagement] COLLATE Greek_CI_AI -- Collatiom : CI = Case Insensitive, AI = Accent Insensitive
GO
/* =====================
CREATE ENTITIES
======================*/
USE [HotelManagement]
GO
IF OBJECT_ID ('Customers', 'U') IS NULL
BEGIN
CREATE TABLE Customers
(
Customer_ID int IDENTITY(1,1) PRIMARY KEY,
First_name varchar (50) not null,
Last_name varchar (50) not null,
Birth_date datetime,
Issuing_authority varchar (50) not null,
Email varchar (50),
Phone varchar (50)
)
END
uj5u.com熱心網友回復:
這很令人困惑,但每個品牌都有自己的 SQL 實作。
SQL 基于 ANSI 標準,但沒有供應商實作整個標準。此外,SQL 標準允許供應商創建他們自己對 SQL 語言的專有擴展。每個供應商都至少會這樣做一點點。
底線是你不應該假設一個品牌的資料庫的 SQL 代碼在不同的品牌上作業。有一些相似之處,因為它們都是基于 SQL 的,但是您確實需要分別研究每個品牌的檔案。
您甚至需要研究您正在使用的資料庫的特定版本的檔案,因為每個供應商都會在每個版本中引入新功能(或棄用一些舊功能)。
在 MySQL 的情況下:
- MySQL 不支持復合陳述句(例如
IF/THEN/END IF,在存盤例程之外。請參閱https://dev.mysql.com/doc/refman/8.0/en/sql-compound-statements.html - MySQL 不支持方括號 (
[ ]) 作為識別符號分隔符。見https://dev.mysql.com/doc/refman/8.0/en/identifiers.html - MySQL 的客戶端使用分號 (
;) 不GO作為陳述句終止符。見https://dev.mysql.com/doc/refman/8.0/en/entering-queries.html - MySQL 有一個名為 的列選項
AUTO_INCREMENT,而不是IDENTITY(1,1)Microsoft 使用的選項。見https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html
還有許多其他差異。等到你開始撰寫存盤程序!
uj5u.com熱心網友回復:
MySQL、Microsoft SQL Server (MSSQL)、Postgres 等都是不同的關系資料庫管理系統。它們都使用結構化查詢語言 (SQL) 與特定服務器進行通信。每個都有自己不同的口味、櫻桃和糖衣——但它們幾乎運行相同的功能,最常用的語法是 99% 相同。
您需要一個客戶端軟體/Web 應用程式來設計/寫入/編輯/洗掉/讀取/查詢資料庫引擎上的資料。這些被稱為客戶端軟體。有些可以在您的本地機器上運行。其他人可能從網頁或您自己的網路服務器運行。
學習關系資料庫設計
學習結構化查詢語言
學習SQL 客戶端
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/483444.html
上一篇:如何取消觸發器內的插入?
