SQL Server 与 MySQL 的区别

  由于博主之前学过mysql,目前在学习SQL server,原来以为这两个数据库之间的sql语句应该不会有太大区别。但是学sql server(用的版本是2012) 学久之后,发现与mysql 还是有很多不同的地方,有些时候写起来很不适应,所以就打算写这篇博客来记录一下这两个数据库的sql语句的区别,以备方便将来查询。(每隔一段时间会更新)


1. 首先说一下sql语句结束标志

mysql以;结束一条SQL语句;SQL server 以;go或不写结束都可以。不过建议写sql server的时候以go结束,因为sql server很多语句要以等一个语句结束后才能写下一个语句,不然会报批处理错误(深受其害)。

2. 查看表结构数量等

mysql 语句

sql 复制代码
-- 查看系统内所有数据库
show databases;
-- 查询数据库内所有表
show tables;
-- 显示表结构
desc 表名;

sql server语句

sql 复制代码
-- 查看系统内所有数据库
SELECT name, database_id, create_date  FROM sys.databases  ;
-- 查询数据库内所有表
select * from sysobjects where xtype= 'U'  ;
-- 显示表结构
sp_help/sp_columns 表名;

相比来说,mysql 的更为简洁。

3、查询前几条记录

查询前10条记录: mysql 语句 select * from student limit 10; sql server 语句 select top 10 * from student ;

4、获取当前时间

MySQL写法:now() SQLServer写法:getdate()

5、从数据库定位到某张表

mysql写法:库名.表名

sql 复制代码
select password from Info.users where userName='boss'

Sqlserver写法:库名.dbo.表名 ;或者:库名..表名 (注:中间使用两个点)

sql 复制代码
select password from Info.dbo.users where userName='boss'

或者

sql 复制代码
select password from Info..users where userName='boss'

6、强制不使用缓存查询

查询temp表

mysql写法:

sql 复制代码
select    SQL_NO_CACHE * from temp

参考:www.cnblogs.com/eyesfree/p/...

Sqlserver的没有,它只缓存sql的执行计划,不会缓存结果。

参考:www.cnblogs.com/jeffwongish... codeday.me/bug/2019070...

7、查询一个数据库所有的表 和表下的所有列信息

MySQL写法:

写法1(查询选定数据库下所有的表):

sql 复制代码
select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables where table_schema = (select database())

写法2(查询指定数据库名下所有的表):

sql 复制代码
select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables where table_schema = 'db_name'

其中的db_name就是要查询的数据库的名

查询表下的所有列信息:

sql 复制代码
select column_name columnName, data_type dataType, column_comment columnComment, column_key columnKey, extra from information_schema.columns
        where table_name = '表名' and table_schema = '数据库名' order by ordinal_position

参考:blog.csdn.net/huangbaokan...

SQL Server写法:

查询数据库中的所有表:

sql 复制代码
select name from sysobjects where xtype='u'

查询指定表的所有列名

sql 复制代码
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')

参考:blog.csdn.net/ANXIN997483...

8.快速查询一个表的行数

Mysql写法:

sql 复制代码
SELECT   TABLE_NAME, PARTITION_NAME, TABLE_ROWS, AVG_ROW_LENGTH,
DATA_LENGTH FROM  INFORMATION_SCHEMA.PARTITIONS  WHERE 
TABLE_NAME='table_name_t' ;  

其中table_name_t是要查询下表名.

这里是通过 INFORMATION_SCHEMA数据库中的信息来得到行数,这样会快一点,但是可能会不太准确。

参考:blog.csdn.net/jiaxiaolei1...

SqlServer 写法:

sql 复制代码
select schema_name(t.schema_id) as [Schema], t.name as TableName,i.rows as [RowCount] 
from sys.tables as t, sysindexes as i 
where t.object_id = i.id and i.indid <=1

这种写法可以列出所有表的行数,可以在该查询的基础之上去再去过滤器想要的表名

参考:www.cnblogs.com/kenyang/arc...

9. 分页

要获取第12行到第21行的记录可以这样写:

Mysql写法:

sql 复制代码
select * from test_t limit 11,10;

SqlServer 写法:

sql 复制代码
select * from student
order by sno  
offset 11 rows
fetch next 10 rows only ;
相关推荐
从零开始的代码生活_1 分钟前
C++ 继承详解:访问控制、对象模型、菱形继承与设计取舍
开发语言·c++·后端·学习·算法
Conan在掘金12 分钟前
�鸿蒙报错速查:Cannot find name 'require',禁用 require(),根因 + 真解法
后端
隔窗听雨眠15 分钟前
Spring Boot在云原生时代的编程范式革新研究
spring boot·后端·云原生
一朵小花31 分钟前
记一次Docker 容器 NFS 文件写入延迟排查过程
后端
z1234567898641 分钟前
2026最新两款AI编程工具深度对比实测
java·数据库·ai编程
程序猿DD43 分钟前
一个 API Key,统一调用大模型、生图和联网搜索
数据库·网关
TlSfoward2 小时前
抓包代理链路下的 TLS 指纹变化分析 TLSFOWARD抓包工具
数据库·爬虫·网络协议·搜索引擎·php
数智化管理手记2 小时前
账龄分析手工统计易遗漏?自动账龄分析工具怎么搭建
大数据·网络·数据库·人工智能·数据挖掘
FF2501_940228582 小时前
Grid 构建月历网格:7 列模板 + 日期占位算法
后端·华为·harmonyos·鸿蒙系统
神奇小汤圆2 小时前
线程池的 DiscardPolicy 为什么是「静默杀手」?一个生产事故的完整复盘
后端