SQLServerとMySQLの違いの要約(1)
1.TOP句 SQLServerでTOP文で返すレコード数を規定する . MySQLでLIMIT文を使用してこの機能を実現する
2.FULL OUTER JOINキーワード MySQLではFULL OUTER JOINキーワード はサポートされていません SQLServerでFULL OUTER JOINキーワード を使用可能
3.SELECT INTO文 SQLServer SELECT INTO文により、あるテーブルから別の新しいテーブルへの情報のコピー を実現する MySQLはSELECT INTO文をサポートしていませんが、INSERT INTOをサポートしています...SELECT文は、1つのテーブルから別の既存のテーブルへのデータのコピー を実現する.
4.UNIQUE制約 MySQLとSQLServerでは、UNIQUE制約の作成と取り消しに使用する文は異なりますが、ALTER TABLEでは同じ の構文です.新規UNIQUE制約 UNIQUE制約を取り消す
5.PRIMARY KEY制約 MySQLとSQLServerでは、PRIMARY KEY制約の作成と取り消しに使用する文が と異なります. PRIMARY KEY制約 を作成する PRIMARY KEY制約を取り消す
6.FOREGN KEY制約 MySQLとSQLServerでは、FOREGN KEY制約の作成と取り消しに使用される文が と異なります. FOREGN KEY を作成する FOREGN を取り消す
7.CHECK制約 MySQLとSQLServerは、CHECK制約の作成と取り消しに使用する文が異なる CKECK制約 を作成する. CHECK制約を取り消す
8.DEFAULT制約 SQLServerとMySQLは、ALTER TABLEとDEFAULT制約の取り消し時に文が異なる ALTERTABLE時のDEFAULT制約 DEFAULT制約を取り消す
9.INDEXの取り消し SQLServerとMySQLでインデックス操作を取り消すときに使用される文が異なる
10.ALTER TABLE文 ALTER TABLEでテーブル内のカラムのデータ型を変更した場合、SQLServerとMySQL文が異なる
11.IDENTITYキーワード SQLServer IDENTITYキーワードを使用してauto-incrementタスク を実現 MySQL AUTO INCERMENTフィールドを使用してauto-incerment を実現
12.DATE関数 MySQL DATE関数 関数#カンスウ#
説明
NOW()
現在の日付と時刻を返します.
CURDATE()
現在の日付を返す
CURTIME()
現在の時刻を返す
DATE()
日付または日付/時刻式の日付部分の抽出
EXTRACT()
日付/時刻の個別のセクションを返します.
DATE_ADD()
指定した間隔を日付に追加
DATE_SUB()
日付から指定した間隔を減算
DATEDIFF()
2つの日付の間の日数を返します.
DATE_FORMATE()
時間/日付を別の形式で表示 SQLServer DATE関数 関数#カンスウ#
説明
DFETDATE()
現在の日付と時刻を返します.
DATEPART
日付/時刻の個別のセクションを返します.
DATEADD()
指定した間隔を日付に追加または減算
DATEDIFF()
2つの日付の間の時間を返します.
CONVERT()
日付/時刻を別の形式で表示
13.ISNULL関数 SQLServerのISNULL関数は、NULL値 をどのように処理するかを規定するために使用される. MySQLではIFNULL関数またはCOALESCE関数を使用して、同じ効果を達成しています.
14.データ型 MySQLとSQLServerのデータ型には一定の違いがあります.ここには詳しくは記載されていません.関連するWebサイトやマニュアルを参照して を参照してください.
PS:MySQLとSQLServerは個別関数の使用にも一定の違いがあり、次のブログでまとめます
select top number|percent column_names from table
//
select top * from [table1]
select column_names from table_name limit number
//
select * from [table1] limit 1
2.FULL OUTER JOINキーワード
select column_names from table1
full outer join table2
on table1.column_name = table2.column)name
//
SELECT Websites.name, access_log.count, access_log.date
FROM Websites
FULL OUTER JOIN access_log
ON Websites.id=access_log.site_id
ORDER BY access_log.count DESC;
3.SELECT INTO文
select column_names into newtable [IN externaldb] from table1
//
select * into WebsitesBackup2016 from Websites
insert into table2 (colunm_names)
select colunm_names from table1
//
INSERT INTO Websites (name, country)
SELECT app_name, country FROM apps
WHERE id=1;
4.UNIQUE制約
// MySQL
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
UNIQUE (P_Id)
)
//SQLserver
CREATE TABLE Persons
(
P_Id int NOT NULL UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
// : UNIQUE ,
//MySQL & SQLServer
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT uc_PersonID UNIQUE (P_Id,LastName)
)
//MySQL
ALTER TABLE Persons
DROP INDEX uc_PersonID
//SQLServer
ALTER TABLE Persons
DROP CONSTRAINT uc_PersonID
5.PRIMARY KEY制約
//MySQL
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
//SQLServer
CREATE TABLE Persons
(
P_Id int NOT NULL PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
// : PRIMARY KEY SQLServer MySQL
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (P_Id,LastName)
)
//MySQL
ALTER TABLE Persons
DROP PRIMARY KEY
//SQLServer
ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID
6.FOREGN KEY制約
//MySQL
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
FOREIGN KEY (P_Id) REFERENCES Persons(P_Id)
)
//SQLServer
CREATE TABLE Orders
(
O_Id int NOT NULL PRIMARY KEY,
OrderNo int NOT NULL,
P_Id int FOREIGN KEY REFERENCES Persons(P_Id)
)
// : FOREIGN KEY
CREATE TABLE Orders
(
O_Id int NOT NULL,
OrderNo int NOT NULL,
P_Id int,
PRIMARY KEY (O_Id),
CONSTRAINT fk_PerOrders FOREIGN KEY (P_Id)
REFERENCES Persons(P_Id)
)
//MySQL
ALTER TABLE Orders
DROP FOREIGN KEY fk_PerOrders
//SQLServer
ALTER TABLE Orders
DROP CONSTRAINT fk_PerOrders
7.CHECK制約
//MySQL
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (P_Id>0)
)
//SQLServer
CREATE TABLE Persons
(
P_Id int NOT NULL CHECK (P_Id>0),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
// : CKECK CHECK ,
CREATE TABLE Persons
(
P_Id int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (P_Id>0 AND City='Sandnes')
)
//MySQL
ALTER TABLE Persons
DROP CHECK chk_Person
//SQLServer
ALTER TABLE Persons
DROP CONSTRAINT chk_Person
8.DEFAULT制約
//MySQL
ALTER TABLE Persons
ALTER City SET DEFAULT 'SANDNES'
//SQLServer
ALTER TABLE Persons
ADD CONSTRAINT ab_c DEFAULT 'SANDNES' for City
//MySQL
ALTER TABLE Persons
ALTER City DROP DEFAULT
//SQLServer
ALTER TABLE Persons
ALTER COLUMN City DROP DEFAULT
9.INDEXの取り消し
//SQLServer
DROP INDEX table_name.index_name
//MySQL
ALTER TABLE table_name DROP INDEX index_name
10.ALTER TABLE文
//SQLServer
ALTER TABLE table_name
ALTER COLUMN column_name datatype
//MySQL
ALTER TABLE table_name
MODIFY COLUMN column_name datatype
11.IDENTITYキーワード
// auto-increment
// ,IDENTITY 1, 1
// : "ID" 10 5, identity IDENTITY(10,5)
CREATE TABLE Persons
(
ID int IDENTITY(1,1) PRIMARY KEY,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
// auto-increment
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)
// AUTO_INCREMENT
ALTER TABLE Persons AUTO_INCREMENT=100
12.DATE関数
説明
NOW()
現在の日付と時刻を返します.
CURDATE()
現在の日付を返す
CURTIME()
現在の時刻を返す
DATE()
日付または日付/時刻式の日付部分の抽出
EXTRACT()
日付/時刻の個別のセクションを返します.
DATE_ADD()
指定した間隔を日付に追加
DATE_SUB()
日付から指定した間隔を減算
DATEDIFF()
2つの日付の間の日数を返します.
DATE_FORMATE()
時間/日付を別の形式で表示
説明
DFETDATE()
現在の日付と時刻を返します.
DATEPART
日付/時刻の個別のセクションを返します.
DATEADD()
指定した間隔を日付に追加または減算
DATEDIFF()
2つの日付の間の時間を返します.
CONVERT()
日付/時刻を別の形式で表示
13.ISNULL関数
//
SELECT ProductName,UnitPrice*(UnitsInStock+ISNULL(UnitsOnOrder,0))
FROM Products
//
SELECT ProductName,UnitPrice*(UnitsInStock+IFNULL(UnitsOnOrder,0))
FROM Products
SELECT ProductName,UnitPrice*(UnitsInStock+COALESCE(UnitsOnOrder,0))
FROM Products
14.データ型
PS:MySQLとSQLServerは個別関数の使用にも一定の違いがあり、次のブログでまとめます