ToB企服应用市场:ToB评测及商务社交产业平台

标题: MySQL与SqlServer的区别 [打印本页]

作者: tsx81429    时间: 2022-6-25 04:34
标题: MySQL与SqlServer的区别
MySQL与SqlServer的区别

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

性能方面

MySQL:

纯粹就性能而言,MySQL是相当出色的,因为它包含一个缺省桌面格式MyISAM。MyISAM 数据库与磁盘非常地兼容而不占用过多的CPU和内存。MySQL可以运行于Windows系统而不会发生冲突,在UNIX或类似UNIX系统上运行则更好。你还可以通过使用64位处理器来获取额外的一些性能。因为MySQL在内部里很多时候都使用64位的整数处理。Yahoo!商业网站就使用MySQL 作为后台数据库。
当提及软件的性能,SQL服务器的稳定性要比它的竞争对手强很多。但是,这些特性也要付出代价的。比如,必须增加额外复杂操作,磁盘存储,内存损耗等等。如果你的硬件和软件不能充分支持SQL服务器,我建议你最好选择其他如DBMS数据库,因为这样你会得到更好的结果。
安全方面:

根据需求来选择

如果说这两种数据库那种更好,只能说要根据实际需求来选择数据库。
sql语句上的变形

数据定义、主键约束

  1. Mysql定义数据库和主键:
  2.         create database name; 创建数据库
  3.         use databasename; 选择数据库
  4.         drop database name 直接删除数据库
  5.         CREATE TABLE --创建一个数据库表
  6.        
  7.         CREATE TABLE Persons
  8.         (
  9.                 Id_P  int  NOT NULL,
  10.                 LastName varchar(255) NOT NULL,
  11.                 FirstName varchar(255),
  12.                 Address varchar(255),
  13.                 City varchar(255),
  14.                 PRIMARY KEY (Id_P)               //声明主健写在最后
  15.         )
  16. SqlServer定义数据库和主键:
  17.         CREATE TABLE Persons
  18.         (
  19.                 Id_P int NOT NULL PRIMARY KEY,     //声明主健 紧跟列后
  20.                 LastName varchar(255) NOT NULL,
  21.                 FirstName varchar(255),
  22.                 Address varchar(255),
  23.                 City varchar(255)
  24.         )
复制代码
当表存在时,给表加、删除主健:

  1. Mysql 、SqlServer添加:
  2.         ALTER TABLE Persons ADD PRIMARY KEY (Id_P)
  3. MySQL删除:
  4.         ALTER TABLE Persons DROP PRIMARY KEY
  5. SQL Server删除:
  6.         ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
复制代码
UNIQUE 约束

UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证,每个表可以有多个unique,但只能有一个primary key。
  1. MySQL添加:
  2. CREATE TABLE Persons
  3. (
  4.         Id_P int NOT NULL,
  5.         UNIQUE (Id_P)                 //写在最后
  6. )
  7. MySQL删除:
  8.         ALTER TABLE Persons DROP INDEX  uc_PersonID
  9. SQL Server添加:
  10. CREATE TABLE Persons
  11. (
  12.         Id_P int NOT NULL UNIQUE,        //紧跟列后
  13. )
  14. SQL Server删除:
  15.         ALTER TABLE Persons DROP CONSTRAINT uc_PersonID
复制代码
CHECK 约束

CHECK 约束用于限制列中的值的范围,如果对单个列定义 CHECK 约束,那么该列只允许特定的值。如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。
  1. My SQL添加:
  2. CREATE TABLE Persons
  3. (
  4.         Id_P int NOT NULL,
  5.         CHECK (Id_P>0)                       //写在最后
  6. )
  7. SQL Server 添加:
  8. CREATE TABLE Persons
  9. (
  10.         Id_P int NOT NULL CHECK (Id_P>0),    //紧跟列后
  11. )
  12. MySQL / SQL Server添加多个:
  13. CREATE TABLE Persons
  14. (
  15.         Id_P int NOT NULL,
  16.         City varchar(255),
  17.         CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes') //多个条件
  18. )
  19. MySQL / SQL Server对已有字段进行添加:
  20.         ALTER TABLE Persons ADD CHECK (Id_P>0)
  21. MySQL / SQL Server删除:
  22.         ALTER  TABLE  Persons  DROP CONSTRAINT chk_Person
复制代码
DEFAULT 约束

DEFAULT 约束用于向列中插入默认值。如果没有规定其他的值,那么会将默认值添加到所有的新纪录。
  1. My SQL / SQL Server添加:
  2. CREATE TABLE Persons
  3. (
  4.         Id_P int NOT NULL,
  5.         City varchar(255) DEFAULT 'Sandnes'     //紧跟列后,默认值字符串Sandnes
  6. )
  7. 通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:
  8. CREATE TABLE Orders
  9. (
  10.         Id_O int NOT NULL,
  11.         OrderDate date DEFAULT GETDATE()   //紧跟列后,函数
  12. )
  13. MySQL对已有表进行添加:
  14.         ALTER  TABLE  Persons  ALTER  City  SET  DEFAULT  'SANDNES'
  15. SQL Server对已有表进行添加:
  16.         ALTER  TABLE  Persons  ALTER  COLUMN  City  SET  DEFAULT  'SANDNES'
  17. MySQL删除:
  18.         ALTER  TABLE  Persons  ALTER  City  DROP  DEFAULT
  19. SQL Server删除:
  20.         ALTER  TABLE  Persons  ALTER  COLUMN  City  DROP  DEFAULT
复制代码
索引

在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
  1. Mysql和SqlServer在表上创建一个简单的索引(允许使用重复的值):
  2.         CREATE INDEX index_name ON table_name (column_name) //"column_name" 规定需要索引的列。
  3. Mysql和SqlServer在表上创建一个唯一的索引(两个行不能拥有相同的索引值):
  4.         CREATE UNIQUE INDEX index_name ON table_name (column_name)
  5. Mysql删除:
  6.         ALTER TABLE table_name DROP INDEX index_name
  7. SqlServer删除:
  8.         DROP INDEX table_name.index_name
复制代码
自增主键

我们通常希望在每次插入新纪录时,自动地创建主键字段的值。
mySql的主键自动增加是用auto_increment字段,默认地,AUTO_INCREMENT 的开始值是 1,每条新纪录递增 1
sqlServer的自动增加则是identity字段.
Auto-increment 会在新纪录插入表中时生成一个唯一的数字。
我们可以在表中创建一个 auto-increment 字段。
用于 MySQL 的语法
  1. MySQL增加:
  2. CREATE TABLE Persons
  3. (
  4.         P_Id int NOT NULL AUTO_INCREMENT,
  5.         PRIMARY KEY (P_Id)
  6. )
  7. 设置自增的起始值:
  8.         ALTER TABLE Persons AUTO_INCREMENT=100
  9. SqlServer增加:
  10. CREATE TABLE Persons
  11. (
  12.         P_Id int PRIMARY KEY IDENTITY,或则是写成P_id int primary key identity (1,1),
  13. )
  14. 要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)
复制代码
MySQL支持enum,和set类型,SQL Server不支持

枚举enum

ENUM是一个字符串对象,其值来自表创建时在列规定中显式枚举的一列值,枚举最多可以有65,535个元素。
  1. create table meijut (f1 enum('1','2','3','4','5','6'))
  2. desc meijut
  3. +-------+-------------------------------+------+-----+---------+-------+
  4. | Field | Type                          | Null | Key | Default | Extra |
  5. +-------+-------------------------------+------+-----+---------+-------+
  6. | f1    | enum('1','2','3','4','5','6') | YES  |     | NULL    |       |
  7. +-------+-------------------------------+------+-----+---------+-------+
  8. insert into meijut values('5');
复制代码
集合set

  1.         create table jihe(f1 set('f','m'));
  2.         insert into jihe values('f');
复制代码
删表

Mysql判断一个数据库表是否存在并删除的语句是:
  1. drop table if exists jihe
复制代码
SqlServer判断一个数据库表是否存在并删除的语句是:
  1.     if exists (select * from sysobjects where name='Sheet1$' and xtype='U') drop table Sheet1$
  2.     jihe数据库名 Sheet1$表名
复制代码
查表

  1. MySQL:
  2.                 Show tables;           显示一个库中的所有表
  3.         Desc table;              显示一个表的表结构
  4.         Show create table tablename;         显示一个表的详细创建信息
  5.         alter table t1 rename t2;        给表重命名
  6.         alter table meijut add column f2 int default 0;                                新增一列
  7.         alter table meijut modify f2 text;                                        修改一列
复制代码
数据的CRUD

limit和top

  1. SQL Server:
  2.                         select   top   8   *   from   table1
  3. MySQL:
  4.                         select   *   from   table1   limit   5
  5.                         select * from table1 limit 0,5
复制代码
ISNULL()函数

  1. SqlServer:
  2.         select * from test where isnull(no,0)=0;
  3. MySQL 可以使用 ISNULL() 函数
  4. MySQL:
  5.         select * from test where ifnull(no,0)=0;
复制代码
语法定义

注释符区别

SqlServer:–和 /* */
MySql:–和/**/和#
识别符的区别

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


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4