MySQL与SqlServer的区别「建议收藏」

MySQL与SqlServer的区别「建议收藏」一、MySQL与SqlServer的区别目前最流行的两种后台数据库即为Mysql和SQLServer。这两者最基本的相似之处在于数据存储和属于查询系统,你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL(数据库管理标准)。还有,这两种数据库系统都支持二进制关键字和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式。根本的区别:SQL服务器的狭隘的、保守的存储引擎而MySQL服务器的可扩展、开放的存储引擎;SQL服务器的引擎是Sybase,而MyS

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

MySQL与SqlServer的区别

目前最流行的两种后台数据库即为Mysql 和 SQL Server。这两者最基本的相似之处在于数据存储和属于查询系统,你可以使用SQL来访问这两种数据库的数据,因为它们都支持ANSI-SQL(数据库管理标准)。还有,这两种数据库系统都支持二进制关键字和关键索引,这就大大地加快了查询速度。同时,二者也都提供支持XML的各种格式、也都能够在.NET或J2EE下运行正常,同样,都能够利用RAID(独立冗余磁盘阵列)

根本的区别:

  1. SQL服务器的狭隘的、保守的存储引擎而MySQL服务器的可扩展、开放的存储引擎;
  2. SQL服务器的引擎是Sybase,而MySQL能够提供更多种的选择,如MyISAM、Heap、InnoDB、Berkeley DB;
  3. MySQL不完全支持陌生的关键词,所以它比SQL服务器要少一些相关的数据库;
  4. MySQL也缺乏一些存储程序的功能,比如MyISAM引擎联支持交换功能;

性能方面

MySQL:

纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。

当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。

安全方面:

  1. MySQL和SqlServer都有字节完整的安全机制(缺省IP端口,也可以自己设置),只要遵守这些机制,一般是不会出问题的;
  2. MySQL有一个用于改变数据的二进制日志。因为它是二进制,这一日志能够快速地从主机上复制数据到客户机上。当服务崩溃时,二进制文件也会完整的保存;
  3. 在SQL服务器中,你也可以记录SQL的有关查询,但这需要付出很高的代价;
  4. 在恢复性方面,两款都做的很好。对于MySQL来说,主要体现在MyISAM的配置上。而SqlServer表现的就很稳健,SQL服务器能够时刻监测数据交换点并能够把数据库损坏的过程保存下来;

根据需求来选择

如果说这两种数据库那种更好,只能说要根据实际需求来选择数据库。

  1. 如果要建立一个.NET服务器体系,这一体系可以从多个不同平台访问数据,参与数据库的管理,那么你可以选用SQL服务器
  2. 如果要建立一个第三方站点,这一站点可以从一些客户端读取数据,那么MySQL将是最好的选择
  3. 如果需要海量数据,建议使用SqlServer,MySQL主要是短小精悍,容易上手,操作简单,免费供用的,在应对海量数据时没有SqlServer效果好
  4. 从成本角度考虑,MySQL肯定是第一选择,抛开5块钱的盗版SqlServer,这个数据库还是很贵的(SQL-Server 2000 是微软公司开发的中型数据库,它的可视化方面做得很好,在安全性等方面功能非常强大,并且有微软的强大技术支持,当然价格比较昂贵,适合应用于中型系统)

sql语句上的变形

数据定义、主键约束

Mysql定义数据库和主键:
	create database name; 创建数据库 
	use databasename; 选择数据库 
	drop database name 直接删除数据库
	CREATE TABLE --创建一个数据库表
	
	CREATE TABLE Persons
	(
		Id_P  int  NOT NULL,
		LastName varchar(255) NOT NULL,
		FirstName varchar(255),
		Address varchar(255),
		City varchar(255),
		PRIMARY KEY (Id_P)               //声明主健写在最后
	)

SqlServer定义数据库和主键:
	CREATE TABLE Persons
	(
		Id_P int NOT NULL PRIMARY KEY,     //声明主健 紧跟列后
		LastName varchar(255) NOT NULL,
		FirstName varchar(255),
		Address varchar(255),
		City varchar(255)
	)

当表存在时,给表加、删除主健:

Mysql 、SqlServer添加:
	ALTER TABLE Persons ADD PRIMARY KEY (Id_P)

MySQL删除:
	ALTER TABLE Persons DROP PRIMARY KEY
SQL Server删除:
	ALTER TABLE Persons DROP CONSTRAINT pk_PersonID

UNIQUE 约束

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,每个表可以有多个unique,但只能有一个primary key。

MySQL添加:
CREATE TABLE Persons
(
	Id_P int NOT NULL,
	UNIQUE (Id_P)                 //写在最后
)
MySQL删除:
	ALTER TABLE Persons DROP INDEX  uc_PersonID

SQL Server添加:
CREATE TABLE Persons
(
	Id_P int NOT NULL UNIQUE,        //紧跟列后
)
SQL Server删除:
	ALTER TABLE Persons DROP CONSTRAINT uc_PersonID

CHECK 约束

CHECK 约束用于限制列中的值的范围,如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

My SQL添加:
CREATE TABLE Persons
(
	Id_P int NOT NULL,
	CHECK (Id_P>0)                       //写在最后
)
SQL Server 添加:
CREATE TABLE Persons
(
	Id_P int NOT NULL CHECK (Id_P>0),    //紧跟列后
)

MySQL / SQL Server添加多个:
CREATE TABLE Persons
(
	Id_P int NOT NULL,
	City varchar(255),
	CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes') //多个条件
)

MySQL / SQL Server对已有字段进行添加:
	ALTER TABLE Persons ADD CHECK (Id_P>0)

MySQL / SQL Server删除:
	ALTER  TABLE  Persons  DROP CONSTRAINT chk_Person

DEFAULT 约束

DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。

My SQL / SQL Server添加:
CREATE TABLE Persons
(
	Id_P int NOT NULL,
	City varchar(255) DEFAULT 'Sandnes'     //紧跟列后,默认值字符串Sandnes
)

通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
CREATE TABLE Orders
(
	Id_O int NOT NULL,
	OrderDate date DEFAULT GETDATE()   //紧跟列后,函数
)


MySQL对已有表进行添加:
	ALTER  TABLE  Persons  ALTER  City  SET  DEFAULT  'SANDNES'
SQL Server对已有表进行添加:
	ALTER  TABLE  Persons  ALTER  COLUMN  City  SET  DEFAULT  'SANDNES'

MySQL删除:
	ALTER  TABLE  Persons  ALTER  City  DROP  DEFAULT

SQL Server删除:
	ALTER  TABLE  Persons  ALTER  COLUMN  City  DROP  DEFAULT

索引

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。

Mysql和SqlServer在表上创建一个简单的索引(允许使用重复的值):
	CREATE INDEX index_name ON table_name (column_name) //"column_name" 规定需要索引的列。

Mysql和SqlServer在表上创建一个唯一的索引(两个行不能拥有相同的索引值):
	CREATE UNIQUE INDEX index_name ON table_name (column_name)

Mysql删除:
	ALTER TABLE table_name DROP INDEX index_name
SqlServer删除:
	DROP INDEX table_name.index_name

自增主键

我们通常希望在每次插入新纪录时,自动地创建主键字段的值。

mySql的主键自动增加是用auto_increment字段,默认地,AUTO_INCREMENT 的开始值是 1,每条新纪录递增 1
sqlServer的自动增加则是identity字段.
Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
我们可以在表中创建一个 auto-increment 字段。
用于 MySQL 的语法

MySQL增加:
CREATE TABLE Persons
(
	P_Id int NOT NULL AUTO_INCREMENT,
	PRIMARY KEY (P_Id)
)
设置自增的起始值:
	ALTER TABLE Persons AUTO_INCREMENT=100
SqlServer增加:
CREATE TABLE Persons
(
	P_Id int PRIMARY KEY IDENTITY,或则是写成P_id int primary key identity (1,1),
)
要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)


MySQL支持enum,和set类型,SQL Server不支持

枚举enum

ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值,枚举最多可以有65,535个元素。

create table meijut (f1 enum('1','2','3','4','5','6'))
desc meijut

+-------+-------------------------------+------+-----+---------+-------+
| Field | Type                          | Null | Key | Default | Extra |
+-------+-------------------------------+------+-----+---------+-------+
| f1    | enum('1','2','3','4','5','6') | YES  |     | NULL    |       |
+-------+-------------------------------+------+-----+---------+-------+
insert into meijut values('5');

集合set

	create table jihe(f1 set('f','m'));
	insert into jihe values('f');

删表

Mysql判断一个数据库表是否存在并删除的语句是:

drop table if exists jihe

SqlServer判断一个数据库表是否存在并删除的语句是:

    if exists (select * from sysobjects where name='Sheet1$' and xtype='U') drop table Sheet1$
    jihe数据库名 Sheet1$表名

查表

MySQL:
		Show tables;           显示一个库中的所有表
        Desc table;              显示一个表的表结构
        Show create table tablename;         显示一个表的详细创建信息
        alter table t1 rename t2;        给表重命名
        alter table meijut add column f2 int default 0;				新增一列
        alter table meijut modify f2 text;					修改一列

数据的CRUD

limit和top

SQL Server: 
			select   top   8   *   from   table1 
MySQL: 
			select   *   from   table1   limit   5
			select * from table1 limit 0,5

ISNULL()函数

SqlServer:
	select * from test where isnull(no,0)=0;

MySQL 可以使用 ISNULL() 函数
MySQL:
	select * from test where ifnull(no,0)=0;

语法定义

注释符区别

SqlServer:–和 /* */
MySql:–和/**/和#

识别符的区别

SqlServer识别符是[],[type]表示他区别于关键字
MySQL识别符是 `

存储过程

  1. MySql的存储过程中变量的定义去掉@
  2. MySql的declare只能用在begin end 的复合语句中,且只能是语句的开头。而SqlServer可以放在里面,也可以放在begin前
  3. MySql的Execute对应SqlServer的exec
  4. MySql存储过程调用其他存储过程用call
  5. SqlServer:select @a=count() from VW_Action MySQL为:select count() from VW_Action into @a
  6. MySql存储过程中没有return函数,在MySql中可以用循环和out参数代替
  7. MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer的output放在变量后面
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/186811.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • C++简单有趣的恶搞问答关机程序

    C++简单有趣的恶搞问答关机程序点进来的朋友首先反思一下自己:为什么进了CSDN这样一个学习的社区却还要来看我这种无聊的额恶搞程序呢?哈哈!我来替你们回答吧——因为无聊呗!没错,我也是无聊,五一假期显得无聊,看到高中班群实在安静决定写个小程序恶搞一下班级同学。闲话不多说,先来看一下效果吧!当你的同学收到.exe的可执行文件之后双击,首先他看到的是这样的界面:好吧,看到题目一句一句的跳出,如果你是我同学,估计你也应该开始…

    2022年7月22日
    19
  • C51单片机实验——定时器实验

    C51单片机实验——定时器实验实验名称:单片机定时器实验实验环境:普中实验系统;KeilμVision4软件;实验目的:(1)掌握单片机定时器的原理和控制方法。(2)通过编程利用定时器实现定时功能,并利用该定时功能实现时钟分、秒的功能。硬件连线:P2^1口连接led1P2^3口连接led3P2^5口连接led5P2^7口连接led7实验主要代码:/********************************************************************************

    2022年7月26日
    3
  • Acquia Drupal「建议收藏」

    Acquia Drupal「建议收藏」Acquia是一家有Drupal创建者Dries成立的一家公司,Acquia Drupal是一款商业软件,有些部分非开源的。Drupal与Acquia Drupal的关系就像Eclilpse和Myeclipse的关系一样。AcquiaDrupalforWindows的安装需要通过微软的WebMatrix进行安装。通过WebMatrix可以利用CMS快速创建网站。http

    2022年5月10日
    33
  • navicat for mysql15 激活码-激活码分享[通俗易懂]

    (navicat for mysql15 激活码)这是一篇idea技术相关文章,由全栈君为大家提供,主要知识点是关于2021JetBrains全家桶永久激活码的内容IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.htmlS32PGH0SQB-eyJsa…

    2022年3月26日
    212
  • 数据库 建模_可视化建模与uml

    数据库 建模_可视化建模与uml(1)数据库建模  1,ERWin:CA公司出品的拳头产品,强大的老牌数据库建模工具。它有一个兄弟是BPWin,这个是CASE工具的一个里程碑似的产品。目前的我使用的版本是4.0。ERWin界面相当简洁漂亮,也是采用ER模型,如果你是开发中小型数据库,极力推荐ERWin,它的Diagram给人的感觉十分清晰。在一个实体中,不同的属性类型采用可定制的图标显示,实体与实体的关系也一目了然。当然

    2025年7月4日
    1
  • traceroute 命令使用方法详解

    traceroute 命令使用方法详解通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MSWindows中为tracert。traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)..

    2025年6月10日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号