SqlServer与MySql语法比较

偶尔善良 提交于 2019-12-20 03:18:24

1、复制表(包括表结构、表数据)

SqlServer:

  Select * into user_copy from user

MySql:

  CREATE TABLE user_copy LIKE user;

  INSERT INTO user_copy SELECT * FROM user;

 

2、多表连接做update

SqlServer:

  UPDATE s1 SET s1.salary= s2.salary 
  FROM (SELECT * FROM s WHERE age>10) AS s1 JOIN s2 ON s1.uname= s2.uname
  WHERE s1.uname = 'xx'

MySql:(无法直接对目标表的查询数据直接做更新,只能针对目标表操作)

  UPDATE s1 JOIN s2 ON s1.uname= s2.uname
  SET s1.salary= s2.salary
  WHERE s1.uname = 'xx'

 

3、修改表字段结构

SqlServer:  

  ALTER TABLE user ALTER COLUMN uid INT NOT NULL
  GO
  ALTER TABLE user ALTER COLUMN name nvarchar(100) NOT NULL
  GO

MySql:(无法直接对目标表的查询数据直接做更新,只能针对目标表操作)

  ALTER TABLE user MODIFY uid INT NOT NULL COMMENT 'xx';
  ALTER TABLE user MODIFY name varchar(100) NOT NULL COMMENT 'xxy';

 

4、添加、修改主键

SqlServer:

  ALTER TABLE user ADD CONSTRAINT PK_uid_name PRIMARY KEY(uid, name)

MySql:(无法直接对目标表的查询数据直接做更新,只能针对目标表操作)

  ALTER TABLE user DROP PRIMARY KEY;
  ALTER TABLE user ADD PRIMARY KEY (uid, name);

 

5、查询数据拼接Sql语句

SqlServer:

  SELECT 'insert into dbo.TableName([ID],[Name]) values ('+ CAST([ID] AS VARCHAR) + ',''' + CAST([Name] AS VARCHAR)  + ''')' 
  FROM dbo.TableName WHERE ID > 433

 

6、查询字段首位为汉字

SqlServer:

SELECT * FROM 表名 WHERE ascii(字段)>127

7、查询字段包含汉字(任意位)

SqlServer:

SELECT * FROM 表名 WHERE 字段 LIKE '%[吖-座]%'
--[吖-座]是中文字符集第一个到最后一个的范围

8、SqlServer和Mysql插入记录前判断是否存在,存在则插入,不存在则修改

SqlServer:

if NOT exists(SELECT * FROM Setting WHERE ID=0)
INSERT INTO Setting(ID,Title,SearchKeys, ServiceIntervalSecond,SleepMillisecondPerSearch) VALUES(0,@title,@searchKeys,@serviceIntervalSecond,@sleepMillisecondPerSearch) 
ELSE 
UPDATE Setting SET Title=@title,SearchKeys=@searchKeys,ServiceIntervalSecond=@serviceIntervalSecond, SleepMillisecondPerSearch=@sleepMillisecondPerSearch

MySqL:

INSERT INTO `his_examine_result` (Mid,His_Examine_Mid, His_File_Mid, ResultType, His_Employee_Mid,
                                  His_Employee_Name, ExamineResult, ExamineItemName, ExamineStandardName, 
                                  ExamineItemUnit, ExamineHighValue, ExamineLowValue, ExamineDiscription, Discription)
    VALUES ($mid,$examineMid,$fileMid,1,null,null,'',$itemName,$standName,$itemUnit,$highValue,$lowValue,'','') 
ON DUPLICATE KEY UPDATE ExamineResult=$result,ExamineDiscription=$dis

 9、创建索引

SqlServer:

IF NOT EXISTS(SELECT * FROM sysindexes WHERE id = OBJECT_ID('T_Person_info') and name = 'idx_pCode')
CREATE NONCLUSTERED INDEX idx_pCode ON [dbo].T_Person_info
(
pCode ASC
) ON [PRIMARY];

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!