sql server 与 mysql 中常用的SQL语句区别讲解

   2023-02-07 学习力0
核心提示:目录sql server 与 mysql 的区别1. 首先说一下sql语句结束标志2. 查看表结构数量等3、查询前几条记录4、获取当前时间5、从数据库定位到某张表6、强制不使用缓存查询6、查询一个数据库所有的表 和表下的所有列信息sql server 与 mysql 的区别  由于博主之前

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 语句

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

sql server语句

-- 查看系统内所有数据库
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写法:库名.表名

select password from Info.users where userName='boss'

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

select password from Info.dbo.users where userName='boss'

或者

select password from Info..users where userName='boss'

6、强制不使用缓存查询

查询temp表

mysql写法:

select SQL_NO_CACHE * from temp

参考资料:https://www.cnblogs.com/eyesfree/p/7232559.html

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

参考:https://www.cnblogs.com/jeffwongishandsome/p/3235177.html
https://codeday.me/bug/20190701/1344787.html

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

MySQL写法:

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

select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables where table_schema = (select database())

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

select table_name tableName, engine, table_comment tableComment, create_time createTime from information_schema.tables where table_schema = 'db_name' 其中的db_name就是要查询的数据库的名

查询表下的所有列信息:

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

参考:https://blog.csdn.net/huangbaokang/article/details/78049629

SQL Server写法:

查询数据库中的所有表:

select name from sysobjects where xtype='u'

查询指定表的所有列名

select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')

参考:https://blog.csdn.net/ANXIN997483092/article/details/78468081

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

Mysql写法:

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数据库中的信息来得到行数,这样会快一点,但是可能会不太准确。

参考:https://blog.csdn.net/jiaxiaolei19871112/article/details/7161799

SqlServer 写法:

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

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

参考:https://www.cnblogs.com/kenyang/archive/2013/04/09/3011447.html

原文地址:https://blog.csdn.net/weixin_37610397/article/details/80273070
 
反对 0举报 0 评论 0
 

免责声明:本文仅代表作者个人观点,与乐学笔记(本网)无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
    本网站有部分内容均转载自其它媒体,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责,若因作品内容、知识产权、版权和其他问题,请及时提供相关证明等材料并与我们留言联系,本网站将在规定时间内给予删除等相关处理.

  • mysql_pconnect的水挺深,apache下的数据库长连
      php的mysql持久化连接,美好的目标,却拥有糟糕的口碑,往往令人敬而远之。这到底是为啥么。近距离观察后发现,这家伙也不容易啊,要看apache的脸色,还得听mysql指挥。  对于做为apache模块运行的php来说,要实现mysql持久化连接,首先得取决于apache这个
    02-10
  • linux下mysql开启远程访问权限及防火墙开放3306端口
    linux下mysql开启远程访问权限及防火墙开放3306
    开启mysql的远程访问权限默认mysql的用户是没有远程访问的权限的,因此当程序跟数据库不在同一台服务器上时,我们需要开启mysql的远程访问权限。主流的有两种方法,改表法和授权法。相对而言,改表法比较容易一点,个人也是比较倾向于使用这种方法,因此,这
    02-10
  • php+apache+mysql
    apache2.4.7+php5.4[http://www.myhack58.com/Article/sort099/sort0100/2012/35578.htm] apachehttpd.conf:DocumentRoot:网站根目录,默认/htdocsDirectoryIndex:默认显示的文件名.默认index.html,可以有多个值.如index.html index.jsp.用空格分开Listen:端
    02-10
  • Windows下搭建apache+mysql+php开发环境
    Windows下搭建apache+mysql+php开发环境
      最近因在windows环境下搭建php开发环境遇到了各式各样的问题,故在此加以归纳总结。目的有二,一是为了避免以后再次遇到类似的问题,二是为需要的同学提供启示和借鉴。  一:下载需要的软件apache   httpd-2.2.22-win32-x86-no_ssl.msimysql     mys
    02-10
  • PHP从零开始:Apache+PHP+MySQL安装配置
    初学一个东西,最怕的恐怕就是环境配置了。我就经常碰到这样的事而浪费很多时间。  今天在网上搜索到一个图文并茂的Apache+PHP+MySQL教程,按着一步一步安装和配置下来,很快就搞定了!这里贴一下教程的地址,希望其他初学者也可以很快搞定~http://tech.163
    02-10
  • Linux测试环境搭建apache+mysql+php
    LinuxRed Hat Enterprise Linux Server release 5.4 (Tikanga)Kernel \r on an \mApache +Mysql+php搭建准备:Apache postgresql-libs-8.1.11-1.el5_1.1.i386.rpmapr-1.2.7-11.el5_3.1.i386.rpmapr-util-1.2.7-7.el5_3.2.i386.rpmhttpd-2.2.3-31.el5.i386.rpm
    02-10
  • windows支持apache、mysql、php集成环境推荐wam
    对英文不感冒的同学很容易下载到更新包,而且官方的下载速度很慢,此文件为官方原版下载,现在分享给大家。链接:https://pan.baidu.com/s/1LYyJi6FddvkQQNrLp4L6Ww 提取码:edsaMD5: 4C32136656EB25E2951E1539D264339ESHA1: 15EAC178B27EE5298883DC3BA351B81
    02-10
  • 如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境
    如何搭建lamp(CentOS7+Apache+MySQL+PHP)环境在网上搜资料,自己在本地虚拟机上尝试搭建,弄了整整一天一夜,终于弄好了.网上的资料,虽然很多,但大多都是重复的,拿去试了之后,又很多都不能得到正确的结果.最终找到了适合我的linux环境的搭建方式;在这里贴出来:这
    02-10
  • CentOS 6下搭建Apache+MySQL+PHP+SSL
    网上的一些文章都已经比较老了,现在版本高了之后,其实配置是很省力的(不考虑什么负载的话)分享全过程,出了文中提到的安装epel rpmfushion 源指令不同外,其他的过程也适用与Centos 51.安装CentOS 6 ,可以选择最小安装,也可以安装桌面2.升级系统yum upda
    02-10
  • lnamp完整版[linux+apache2.4+php5.6.6+mysql5.
    Lnamp环境安装实录将采用的开源软件:Apache [WEB动态脚本服务器,做nginx的反向代理8080端口]Tengine [WEB静态文件服务器80端口]MySQL PHP 1.Apache安装A.apr安装wget -c http://mirror.bjtu.edu.cn/apache/apr/apr-1.5.1.tar.gztar -zxvf apr-1..5.tar.gzcd
    02-10
点击排行