1、自增长列的插入
SQLServer中可以不为自动增长列插入值,
MySQL中需要为自动增长列插入值。
2、获取当前时间函数
SQLServer写法:getdate()
MySQL写法:now()
- 从数据库定位到表
Sqlserver写法:库名.dbo.表名 ;或者:库名..表名 (注:中间使用两个点)
select password from Info.dbo.users where userName='boss'
或者
select password from Info..users where userName='boss'
mysql写法:库名.表名
select password from Info.users where userName='boss'
- 取出查询结果中的第一条数据或者前几条记录(取前几条记录只需要修改对应的数字即可),分页也是使用这个关键字
SQLServer写法:
select top 1 password from users where userName='boss'
MySQL写法:
select password from users where userName='111' limit 0,1
它可以规定范围 limit a,b——范围a-b
- 某些函数和语法的使用
5.1截取字符串
SQLServer只能使用SUBSTRING关键词来截取字符串。
MySQL可以使用SUBSTRING和SUBSTR截取字符串
5.2取得字符串的长度
SQLServer只能使用Len关键词取得字符串的长度。
MySQL使用Length取得字符串的长度。
5.3日期比较差
SQLServer: DATEDIFF(datepart,startdate,enddate)
datepart可以为:yy,qq,mm,dd,wk,dw,hh,mi,ss等
eg:select DateDiff(dd,'2019-06-13','2019-06-14')
返回值为1。
MySQL: TIMESTAMPDIFF(unit,begin,end);
Unit可以为: MICROSECOND, SECOND, MINUTE, HOUR, DAY, WEEK,MONTH ,QUARTER ,YEAR
eg:select TIMESTAMPDIFF(day, '2019-05-1','2019-05-2') 返回-1。
Mysql里面DateDiff('2019-06-13',now())(相差的天数)
5.4 获取日期的年月日
SQLServer:datepart()
Select detepart(type ,getDate())
type可以为:yy,mm,dd,dy,wk,dw,qq,hh,mi,ss等
eg: DATEPART(wk, GETDATE())获取今年第几个星期
MySQL: select WEEKOFYEAR(now()) 获取今年第几个星期
select YEAR(now()),MONTH(now()),
5.5 联合查询拼接字符串
1)SQLServer可以使用with t as(...)select * from t;
MySQL 不支持with as ,在外层再套select;
eg:select * from (...) as t;
- SQLServer支持for xml path,stuff;
MySQL 使用group_concat()
- 符号的使用
mysql对参数可以使用单引号,也可以使用双引号,对字段名和表明可以使用反引号。
sqlserver只能使用单引号,且不能使用反引号。
Mysql写法:
Select `password` from Users where userName='boss' or username=”jmj”
Sqlserver写法:
Select password from Users where userName='boss' or username=’jmj’
- 查询所有库
SQLServer写法:
select * from [master]..[SysDatabases];
MySQL写法:
SHOW DATABASES;
- 查询指定库中的所有表
SQLServer写法:
select *from 库名.dbo.[SysObjects] where[type]='U';
(注:若想知道[type]='U'代表什么意思,请点击http://blog.youkuaiyun.com/winddai/article/details/5815138)
MySQL写法:
SHOW TABLES
- 判断是否存在某个数据库,若存在,则删除
Sqlserver写法:
IF DB_ID('users') IS NOT NULL
DROP DATABASE users
Mysql写法:
Drop DATABASE if exists
users
拓展:若sqlserver数据库正在使用中,删除之前,先要把数据库变成“单一用户”,再删除
ALTER DATABASE users SET SINGLE_USER with ROLLBACK IMMEDIATE IF DB_ID('users') IS NOT NULL DROP DATABASE users
另附:判断某数据库中是否存在某张表,若存在,则删除
Sqlserver写法:
if exists(select * from sysobjects where name ='Users_test')
drop table Users_test
Mysql写法:
DROP TABLE IF EXISTS Users_test
- 主键存在,则更新,不存在,则插入
Mysql写法:
INSERT into users (userID,userName,password) VALUES (1,’jmj’,’123’) ON DUPLICATE KEY UPDATE userName='jmj', password =123
Sqlserver没有mysql这样的关键字,只能组合sql语句来实现操作:
if not exists (select userID from users where userID= 1)insert into users (userID,userName,password) values(1,’jmj’,’123’) else update users set userName
= ’jmj’, password=’123’ where userID = 1