MySQL과 SQL Server의 차이점은 무엇입니까

青灯夜游
풀어 주다: 2020-12-17 18:02:13
원래의
6748명이 탐색했습니다.

차이점: 1. mysql은 enum 및 set 유형을 지원하지만 sql server는 이를 지원하지 않습니다. 2. mysql의 증분 문은 "AUTO_INCREMENT"인 반면 sql server는 "identity(1,1)"입니다. 한계 진술을 지원하십시오.

MySQL과 SQL Server의 차이점은 무엇입니까

(권장 튜토리얼: mysql 비디오 튜토리얼)

차이점 1

mysql은 enum 및 set 유형을 지원하지만, sql 서버는 지원하지 않습니다.

mysql은 nchar, nvarchar, ntext 유형을 지원하지 않습니다.

increment of mysql 문은 AUTO_INCREMENT이고, SQL 서버는 ID(1,1)입니다

SQL 서버 테이블 생성 문의 기본값은 ((0))인데, mysql에서는 괄호 2개가 허용되지 않습니다

mysql 필요 테이블의 지정된 저장 유형

sql 서버 식별자가 [], [type]은 키워드와 다르다는 뜻인데, mysql은 `, 버튼 왼쪽의 기호는 1

sql 서버가 지원하는 getdate() 메소드를 사용하여 현재 시간 날짜를 구하는데, mysql은 날짜 유형과 시간 유형으로 나눌 수 있습니다. 현재 날짜는 cur_date()이고 현재 완료 시간은 now() 함수입니다.

mysql은 table1 세트에 삽입을 지원합니다. t1 = '', t2 = '', 하지만 SQL Server에서는 이와 같은 쓰기가 지원되지 않습니다

mysql은 tabl1 값에 대한 삽입을 지원합니다. ​​(1,1), (1,1), (1,1), (1, 1), (1,1), (1,1), (1 ,1)

sql 서버는 제한문을 지원하지 않습니다. 이는 매우 유감스럽습니다. 제한 0,N을 대체하려면 top만 사용할 수 있습니다. row_number() over() 함수를 사용하여 제한 N,M

mysql은 각각에 대해 테이블을 생성해야 합니다. 테이블은 스토리지 엔진 유형을 지정하고 SQL Server는 하나의 스토리지 엔진만 지원합니다.

mysql은 기본값이 있는 날짜/시간 유형을 지원하지 않습니다. (mssql은 쉽습니다) mysql에서는 타임스탬프 유형이 사용됩니다.

sql 서버에서 확인하세요. 이 테이블을 삭제하려면 다음을 수행해야 합니다.

존재하는 경우(id가 있는 dbo.sysobjects에서 *를 선택하세요.) = object_id(N'uc_newpm') and OBJECTPROPERTY(id, N'IsUserTable') = 1)

하지만 mysql에서는 그냥 DROP TABLE IF EXISTS cdb_forums;

mysql은 부호 없는 정수를 지원하므로 mssql보다 최대 개수의 두 배를 저장할 수 있습니다. 부호 없는 정수를 지원하지 않습니다

mysql은 varchar 사용을 지원하지 않습니다. 이는 mssql(max) 유형에서 매우 편리합니다. 이 유형은 mssql의 일반 데이터 저장소와 Blob 데이터 저장소 모두에 사용할 수 있습니다. mysql의 클러스터형 인덱스는 테이블을 생성할 때 이를 키로 지정하기만 하면 됩니다. 예: KEY displayorder (fid, displayorder ) mssql에서는 다음이 필요합니다: dbo.uc_protectedmembers에 고유한 비클러스터형 인덱스 index_uc_protectedmembers_username_appid를 생성

(username asc ,appid asc)

mysql 텍스트 필드 유형은 기본값을 허용하지 않습니다. ​

mysql 테이블의 전체 필드 길이는 65XXX를 초과하지 않습니다.

아주 표면적인 차이점은 mysql의 설치가 매우 간단하고 파일 크기가 110M(비설치 버전)에 불과하다는 점입니다. 거대 Microsoft와 비교하면 설치 진행 상황은 간단합니다...

더 나은 점이 몇 가지 있습니다. mysql, mysql_front 및 공식 제품군을 위한 관리 도구이지만 SSMS만큼 사용하기가 쉽지 않습니다. 이는 mysql의 큰 단점입니다.

mysql의 저장 프로시저는 최신 버전에만 나타나므로 안정성과 성능이 mssql만큼 좋지 않을 수 있습니다.

동일한 로드 압력으로 mysql은 CPU와 메모리를 덜 소비하는 반면 mssql은 실제로 리소스를 매우 많이 소비합니다.


PHP가 mysql과 mssql을 연결하는 방식은 유사하며, 함수의 mysql을 mssql로 바꾸면 됩니다.

MySQL은 날짜, 시간 및 연도 유형을 지원하는 반면 MSSQL은 2008년 날짜 및 시간만 지원합니다.

두 가지 차이점

1. 데이터 정의

데이터베이스 작업을 위한 기본 명령

Mysql:

데이터베이스 이름 만들기

데이터베이스 이름 선택

데이터베이스 이름 삭제 미리 알림 없이 데이터베이스 직접 삭제 –

CREATE TABLE - 데이터베이스 테이블 생성

2.1 PRIMARY KEY 제약 조건(기본 키) 차이 분석:

Mysql:    
2.1.1 创建primary key
			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)
2.1.2撤销 PRIMARY KEY 约束
			MySQL:
			ALTER TABLE Persons DROP PRIMARY KEY
			SQL Server
			ALTER TABLE Persons DROP CONSTRAINT pk_PersonID
2.1.3 创建外健约束
			MySQL:
			CREATE TABLE Orders
			(
			O_Id  int NOT NULL,
			OrderNo int NOT NULL,
			Id_P int,
			PRIMARY KEY (O_Id),
			FOREIGN  KEY (Id_P)  REFERENCES  Persons(Id_P)    //写在最后
			)
로그인 후 복사
SQL Server :
			CREATE TABLE Orders
			(
			O_Id  int  NOT NULL  PRIMARY KEY,
			OrderNo  int NOT NULL,
			Id_P  int  FOREIGN KEY REFERENCES Persons(Id_P)    //顺序不同
			)
			如果在 "Orders" 表已存在的情况下为 "Id_P" 列创建 FOREIGN KEY 约束,请使用下面的 SQL:
			MySQL / SQL Server 
			ALTER  TABLE  Orders ADD  FOREIGN KEY  (Id_P) REFERENCES  Persons(Id_P)
2.1.4 撤销外健约束
			MySQL:
			ALTER TABLE Orders DROP  FOREIGN KEY f k_PerOrders
			SQL Server 
			ALTER TABLE Orders DROP CONSTRAINT  fk_PerOrders
로그인 후 복사

2.2 UNIQUE 제약 조건(고유, 고유) 차이 분석

UNIQUE 제약 조건은 데이터베이스 테이블의 각 항목을 고유하게 식별합니다. .

UNIQUE 및 PRIMARY KEY 제약 조건은 모두 열 또는 열 집합에 대한 고유성을 보장합니다.

PRIMARY KEY에는 UNIQUE 제약 조건이 자동으로 정의되어 있습니다.

각 테이블에는 여러 개의 UNIQUE 제약 조건이 있을 수 있지만 테이블당 PRIMARY KEY 제약 조건은 하나만 있을 수 있습니다.

2.2.1 UNIQUE 제약 조건 만들기

MySQL:

CREATE TABLE Persons

(

Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
주소 varchar(255),
City varchar(255),
UNIQUE (Id_P) //끝에 쓰기
)

SQL Server

CREATE TABLE Persons

(
Id_P int NOT NULL UNIQUE, //열 따르기
LastName varchar(255) NOT NULL,
FirstName varchar (255),
address varchar (255),
city varchar (255)


2.2.2 취소 고유 한 제약 조건

mysql :

연어 테이블 사람 드롭 인덱스 uc_personid

sql server table person. s DROP CONSTRAINT uc_PersonID

2.3 CHECK 제약 조건

CHECK 제약 조건은 열의 값 범위를 제한하는 데 사용됩니다. 단일 열에 CHECK 제약 조건을 정의하면 해당 열에는 특정 값만 허용됩니다.

如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

2.3.1 创建 CHECK约束

下面的 SQL 在 "Persons" 表创建时为 "Id_P" 列创建 CHECK 约束。CHECK 约束规定 "Id_P" 列必须只包含大于 0 的整数。
My SQL:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CHECK (Id_P>0)                       //写在最后
)
로그인 후 복사
SQL Server 
CREATE TABLE Persons
(
Id_P int NOT NULL CHECK (Id_P>0),    //紧跟列后
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
로그인 후 복사

如果需要命名 CHECK 约束,以及为多个列定义 CHECK 约束,请使用下面的 SQL 语法:

MySQL / SQL Server:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes') //多个条件
)
로그인 후 복사

如果在表已存在的情况下为 “Id_P” 列创建 CHECK 约束,请使用下面的 SQL:

MySQL / SQL Server:
ALTER TABLE Persons ADD CHECK (Id_P>0)
로그인 후 복사

2.3.2 撤销 CHECK约束

Sqlserver:
ALTER  TABLE  Persons  DROP CONSTRAINT chk_Person
Mysql我没有找到怎么删除。
로그인 후 복사

2.4 DEFAULT 约束(系统默认值)

DEFAULT 约束用于向列中插入默认值。

如果没有规定其他的值,那么会将默认值添加到所有的新纪录。

2.4.1 创建DEFAULT约束

下面的 SQL 在 "Persons" 表创建时为 "City" 列创建 DEFAULT 约束:
My SQL / SQL Server:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) DEFAULT 'Sandnes'     //紧跟列后,默认值字符串Sandnes
)
로그인 후 복사

通过使用类似 GETDATE() 这样的函数,DEFAULT 约束也可以用于插入系统值:

CREATE TABLE Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
OrderDate date DEFAULT GETDATE()   //紧跟列后,函数
)
로그인 후 복사

如果在表已存在的情况下为 “City” 列创建 DEFAULT 约束,请使用下面的 SQL:

MySQL:
ALTER  TABLE  Persons  ALTER  City  SET  DEFAULT  'SANDNES'

SQL Server:
ALTER  TABLE  Persons  ALTER  COLUMN  City  SET  DEFAULT  'SANDNES'
로그인 후 복사

2.4 .2 撤消DEFAULT约束

MySQL:
ALTER  TABLE  Persons  ALTER  City  DROP  DEFAULT

SQL Server:
ALTER  TABLE  Persons  ALTER  COLUMN  City  DROP  DEFAULT
로그인 후 복사

2.5 索引区别

CREATE INDEX 语句

CREATE INDEX 语句用于在表中创建索引。

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

在表上创建一个简单的索引。允许使用重复的值:

CREATE INDEX index_name ON table_name (column_name) //“column_name” 规定需要索引的列。

在表上创建一个唯一的索引。唯一的索引意味着两个行不能拥有相同的索引值。

CREATE UNIQUE INDEX index_name ON table_name (column_name)

Mysql和SqlServer的创建索引都是一致的,但是在删除索引方面却有区别:

SqlServer: DROP INDEX table_name.index_name

Mysql: ALTER TABLE table_name DROP INDEX index_name
로그인 후 복사

2.6 主键自动增加的区别

mySql的主键自动增加是用auto_increment字段,sqlServer的自动增加则是identity字段.

Auto-increment 会在新纪录插入表中时生成一个唯一的数字。

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

我们可以在表中创建一个 auto-increment 字段。

关于 MySQL 的语法
下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:
CREATE TABLE Persons
(
P_Id int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (P_Id)
)
MySQL 使用 AUTO_INCREMENT 关键字来执行 auto-increment 任务。
默认地,AUTO_INCREMENT 的开始值是 1,每条新纪录递增 1。
要让 AUTO_INCREMENT 序列以其他的值起始,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT=100
로그인 후 복사
关于 SQL Server 的语法
下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键:
CREATE TABLE Persons
(
P_Id int PRIMARY KEY IDENTITY,或则是写成P_id int primary key identity (1,1),
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
MS SQL 使用 IDENTITY 关键字来执行 auto-increment 任务。
默认地,IDENTITY 的开始值是 1,每条新纪录递增 1。
要规定 "P_Id" 列以 20 起始且递增 10,请把 identity 改为 IDENTITY(20,10)
로그인 후 복사

2.7 MySQL支持enum,和set类型,SQL Server不支持
2.8 MySQL不支持nchar,nvarchar,ntext类型

二、数据操作

2.1 limit和top

SQL SERVER : select   top   8   *   from   table1 
MYSQL: select   *   from   table1   limit   5或则是 limit 0,5; 
注意,在MySQL中的limit不能放在子查询内,limit不同与top,它可以规定范围 limit a,b——范围a-b
로그인 후 복사

2.2 ISNULL()函数

SqlServer:
select * from test where isnull(no,0)=0;
MySQL
MySQL 可以使用 ISNULL() 函数。不过它的工作方式与微软的 ISNULL() 函数有点不同。
在 MySQL 中,我们可以使用 IFNULL() 函数,就像这样:
mysql> select * from test where ifnull(no,0)=0;
row in set (0.03 sec)
로그인 후 복사

2.3 select查询

SELECT * FROM tablename

2.4 insert 插入

INSERT INTO table(col1,col2) values(value1,value2);

MySQL支持insert into table1 set t1 = ‘’, t2=‘’,但是MSSQL不支持这样写

2.5 update 修改

Update tablename set col=”value”;

2.6 delete 删除

Delete from tablename;

三、语法定义

3.1 注释符区别

SqlServer的注释符为 --和/**/

MySql的注释符为 --和/**/和#

3.2 识别符的区别

MS SQL识别符是[],[type]表示他区别于关键字,但是MySQL却是 `,也就是按键1左边的那个符号

3.3存储过程的区别(未经验证,从网上找的)

(1) mysql的存储过程中变量的定义去掉@;

(2) SQLServer存储过程的AS在MySql中需要用begin …end替换

(3) Mysql的Execute对应SqlServer的exec;

(注意:必须想下面这样调用)

Set @cnt=’select * from 表名’;

Prepare str from @cnt;

Execute str;

(4) MySql存储过程调用其他存储过程用call

Call 函数名(即SQLServer的存储过程名)(’参数1’,’参数2’,……)

(5) select @a=count() from VW_Action 在mySql中修改为:select count() from VW_Action into @a;

(6) MySQL视图的FROM子句不允许存在子查询,因此对于SQL Server中FROM子句带有子查询的视图,需要手工进行迁移。可通过消除FROM子句中的子查询,或将FROM子句中的子查询重构为一个新的视图来进行迁移。

(7) )MySql存储过程中没有return函数,在MySql中可以用循环和out参数代替

  If EXISTS(SELECT * FROM T_Chance WHERE FCustID=CostomerID)  return 0
改写为:
(在参数中定义一个out变量:out temp varchar(100);)
    BEGIN
        Loop1:loop
    SELECT count(*) FROM T_Chance WHERE FCustID=CostomerID int @cnt
    If @cnt>0 then
    begin
        set temp=0;
        leave loop1;
    end;
    end if
    end loop loop1;
로그인 후 복사

(8) mysql的uuid()对应sql的GUID();

(9) MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer的output放在变量后面:
MySql out,in,inout的区别——
MySQL 存储过程 “in” 参数:跟 C 语言的函数参数的值传递类似, MySQL 存储过程内部可能会修改此参数,但对 in 类型参数的修改,对调用者(caller)来说是不可见的(not visible)。
MySQL 存储过程 “out” 参数:从存储过程内部传值给调用者。在存储过程内部,该参数初始值为 null,无论调用者是否给存储过程参数设置值。
MySQL 存储过程 inout 参数跟 out 类似,都可以从存储过程内部传值给调用者。不同的是:调用者还可以通过 inout 参数传递值给存储过程。

3.4字符串连接

SQLServer: Temp=’select * from ’+’tablename’+…+…
MySql:Temp=concat(’select * from’, ’tablecname’,…,…)

四、函数和数据类型的区别

4.1 Date 函数

MySQL Date 函数

  • NOW() 返回当前的日期和时间
  • CURDATE() 返回当前的日期
  • CURTIME() 返回当前的时间 、
  • DATE() 提取日期或日期/时间表达式的日期部分
  • EXTRACT() 返回日期/时间按的单独部分
  • DATE_ADD() 给日期添加指定的时间间隔
  • DATE_SUB() 从日期减去指定的时间间隔
  • DATEDIFF() 返回两个日期之间的天数
  • DATE_FORMAT() 用不同的格式显示日期/时间

SQL Server Date 函数

  • GETDATE() 返回当前日期和时间
  • DATEPART() 返回日期/时间的单独部分
  • DATEADD() 在日期中添加或减去指定的时间间隔
  • DATEDIFF() 返回两个日期之间的时间
  • CONVERT() 用不同的格式显示日期/时间

4.2 Date 数据类型

MySQL 使用下列数据类型在数据库中存储日期或日期/时间值:
DATE - 格式 YYYY-MM-DD 
DATETIME - 格式: YYYY-MM-DD HH:MM:SS 
TIMESTAMP - 格式: YYYY-MM-DD HH:MM:SS 
YEAR - 格式 YYYY 或 YY

SQL Server 使用下列数据类型在数据库中存储日期或日期/时间值:
DATE - 格式 YYYY-MM-DD 
DATETIME - 格式: YYYY-MM-DD HH:MM:SS 
SMALLDATETIME - 格式: YYYY-MM-DD HH:MM:SS 
TIMESTAMP - 格式: 唯一的数字
로그인 후 복사

五、性能比较
(1)一个很表面的区别就是MySQL的安装特别简单,而且文件大小才110M(非安装版),相比微软这个庞然大物,安装进度来说简直就是…
(2)MySQL的管理工具有几个比较好的,MySQL_front,和官方那个套件,不过都没有SSMS的使用方便,这是MySQL很大的一个缺点。
(3)MySQL的存储过程只是出现在最新的版本中,稳定性和性能可能不如MS SQL。
(4)同样的负载压力,MySQL要消耗更少的CPU和内存,MS SQL的确是很耗资源。

1、把主键定义为自动增长标识符类型
MySql
在mysql中,如果把表的主键设为auto_increment类型,数据库就会自动为主键赋值。例如:
create table customers(id int auto_increment primary key not null, name varchar(15));

최근 mssql을 mysql로 ​​변환하는 작업을 하고 있는데 몇 가지 경험을 정리해서 공유합니다.
동시에 지속적으로 업데이트될 예정입니다. 나는 또한 당신이 더 많은 것을 추가할 수 있기를 바랍니다.
mysql은 enum 및 set 유형을 지원하지만 sql Server는 지원하지 않습니다.
mysql은 nchar, nvarchar, ntext 유형을 지원하지 않습니다.
mysql의 증분 문은 AUTO_INCREMENT이고 mssql은 ID(1,1)입니다.
msms의 기본값은 기본값입니다. 테이블 생성문 ((0))을 뜻하는데 mysql에서는 괄호 2개가 허용되지 않습니다. MySQL에서는 테이블에 대한 저장 유형을 지정해야 합니다. mssql 식별자는 [], [type]은 키워드와 다르다는 의미입니다. 하지만 mysql은 ` 입니다. 즉, 버튼 1
왼쪽에 있는 기호입니다. mssql은 현재 시간과 날짜를 가져오는 getdate() 메서드를 지원하지만 mysql은 날짜 유형과 시간 유형으로 나눌 수 있습니다. (), 현재 완료 시간은 now() 함수입니다
mssql 바꾸기 문은 지원되지 않지만 최신 sql20008에서는 병합 구문도 지원됩니다
mysql은 insert into table1 set t1 = '', t2 = '를 지원합니다. ', 하지만 mssql은 이런 방식의 쓰기를 지원하지 않습니다
mysql은 tabl1 값에 대한 삽입을 지원합니다. ​​(1, 1), (1,1), (1,1), (1,1), (1,1), ( 1,1), (1,1)
mssql은 Limit 문을 지원하지 않습니다. 이는 매우 아쉽습니다. Limit 0,N을 대체하려면 top만 사용할 수 있고, Limit N,M을 대체하려면 row_number() over() 함수를 사용할 수 있습니다.
mysql은 테이블을 생성할 때 각 테이블에 대한 스토리지 엔진 유형을 지정해야 하지만 mssql은 하나의 스토리지 엔진만 지원합니다.
mysql은 기본값이 현재 시간인 datetime 유형을 지원하지 않습니다(mssql에서는 쉽습니다). mssql에서는 삭제하기 전에 해당 테이블이 있는지 확인해야 합니다.
존재하는 경우(id = object_id(N'uc_newpm') 및 OBJECTPROPERTY(id, N'IsUserTable') = 1)
하지만 mysql에서는 DROP TABLE IF EXISTS cdb_forums만 필요합니다.
Mysql은 부호 없는 정수를 지원하므로 부호 없는 정수를 지원하지 않는 것보다 낫습니다. mssql은 최대 저장 공간을 두 배로 늘릴 수 있습니다.
mysql은 지원하지 않습니다. mssql의 매우 편리한 varchar(max) 유형입니다. 이 유형은 mssql의 일반 데이터 저장 및 Blob 데이터 저장에 모두 사용할 수 있습니다.
mysql 생성 비클러스터형 인덱스는 테이블을 생성할 때 키로만 지정하면 됩니다. 예: KEY mssql에서는 displayorder(fid, displayorder)가 필요합니다. dbo.uc_protectedmembers에 고유한 비클러스터형 인덱스 index_uc_protectedmembers_username_appid를 생성하세요
(사용자 이름 asc,appid asc)
mysql 텍스트 필드 유형에서는 기본값을 허용하지 않습니다. ​​
19The total field length of a table in mysql은 65XXX를 초과하지 않습니다.
20 아주 표면적인 차이점은 mysql 설치가 매우 간단하고, 파일 크기가 110M(비설치 버전)에 불과하다는 점이다. 거대 마이크로소프트에 비하면 설치 진행은 간단하다...
21 더 나은 점이 몇 가지 있다. mysql용 관리 도구인 Mysql_front와 공식 제품군은 SSMS만큼 사용하기 쉽지 않은데, 이는 mysql의 큰 단점이다.
22MySQL의 저장 프로시저는 최신 버전에만 나타나며, 안정성과 성능이 mssql만큼 좋지 않을 수 있습니다.
동일한 로드 압력으로 mysql은 CPU와 메모리를 덜 소비하는 반면 mssql은 실제로 리소스를 매우 많이 소비합니다.
24php에는 mysql과 mssql을 연결하는 방법이 비슷합니다. 함수의 mysql을 mssql로 바꾸면 됩니다.
25mysql은 날짜, 시간, 연도 유형을 지원하며 mssql은 2008년 날짜 및 시간만 지원합니다.

MySQL의 숫자 데이터 유형은 대략 두 가지 범주로 나눌 수 있습니다. 하나는 정수이고 다른 하나는 부동 소수점 숫자 또는 소수입니다.
이러한 각 범주에는 다양한 하위 유형을 사용할 수 있으며 각 하위 유형은 다양한 크기의 데이터를 지원하며 MySQL을 사용하면 숫자 필드의 값이 양수인지 음수인지 또는 0으로 채워지는지 지정할 수 있습니다.

다음 표에는 다양한 숫자 유형, 허용 범위 및 차지하는 메모리 공간이 나열되어 있습니다.



정수:

유형 크기 범위(부호 있음) 범위(부호 없음) 목적 TINYINT 1바이트 (-128, 127)(0,255)작은 정수 값SMALLINT2바이트(-32 768, 32 767)(0, 65 535)큰 정수 값MEDIUMINT3바이트 (-8 388 608, 8 388 607)(0, 16 777 215)큰 정수 값INT/INTEGER4바이트( -2 147 483, 2 147 483 647 )(0, 4 294 967 295)큰 정수 값BIGINT8바이트(-9 233 372 036 854 775 808,9 223 372 036 854 775807)(0, 18 446 744 073 709 551 615)최대 정수값FLOAT4바이트(-3.402 823 466 E+38, 1.17 5 494 351 E-38 ), (1.175 494 351 E- 38, 3.402 823 466 351 E+38)단정도부동 소수점 값
Type크기 범위(서명됨) 범위(서명 없음)사용DOUBLE8바이트(1.797 693 134 862 315 7 E+308, 2.225 073 858 507 201 4 E -308), 0( 2.225 073 58 507 201 4 E-308, 1.797 693 134 862 315 7 E+308), 0더블

부동 소수점 값
DECIMAL(M,D)에 대해 M>D이면 M+2, 그렇지 않으면 D+2 M, D 값에 따라 다름 M, D 값에 따라 다름 소수 값

INT 유형
MySQL에서 지원되는 5가지 주요 정수 유형은 TINYINT, SMALLINT, MEDIUMINT, INT 및 BIGINT입니다. 이러한 유형은 대체로 동일하며 저장하는 값의 크기만 다릅니다.
 MySQL은 선택적 표시 너비 표시기 형태로 SQL 표준을 확장하므로 데이터베이스에서 값을 검색할 때 값을 지정된 길이로 늘릴 수 있습니다. 예를 들어, 필드 유형을 INT(6)로 지정하면 데이터베이스에서 검색할 때 6자리 미만의 숫자가 포함된 값이 자동으로 공백으로 채워집니다. 너비 표시기를 사용해도 필드 크기나 저장할 수 있는 값 범위에는 영향을 미치지 않습니다.
허용 범위를 초과하는 필드에 숫자를 저장해야 하는 경우 MySQL은 숫자를 저장하기 전에 가장 가까운 허용 범위의 끝 부분에 따라 숫자를 자릅니다. 또 다른 특별한 점은 MySQL이 잘못된 값을 테이블에 삽입하기 전에 자동으로 0으로 변경한다는 것입니다.
 UNSIGNED 수정자는 필드에 양수 값만 저장하도록 지정합니다. 숫자의 양수 및 음수 부호를 저장할 필요가 없기 때문에 저장 중에 1 "비트"의 공간을 절약할 수 있습니다. 이렇게 하면 이 필드에 저장할 수 있는 값의 범위가 늘어납니다.
ZEROFILL 수정자는 출력 값을 보완하기 위해 0(공백 아님)을 사용할 수 있음을 지정합니다. MySQL 데이터베이스가 음수 값을 저장하는 것을 방지하려면 이 수정자를 사용하십시오.
  
 MySQL에서 지원하는 세 가지 부동 소수점 유형은 FLOAT, DOUBLE 및 DECIMAL 유형입니다. FLOAT 숫자 유형은 단정밀도 부동 소수점 값을 나타내는 데 사용되고, DOUBLE 숫자 유형은 배정밀도 부동 소수점 값을 나타내는 데 사용됩니다.
정수와 마찬가지로 이러한 유형도 추가 매개변수(표시 너비 표시기 및 소수점 표시기)를 사용합니다. 예를 들어 FLOAT(7,3) 문은 표시되는 값이 소수점 이하 3자리를 포함하여 7자리를 초과하지 않도록 지정합니다.
 허용 범위보다 소수점 이하 자릿수가 많은 값의 경우 MySQL은 자동으로 가장 가까운 값으로 반올림한 후 삽입합니다.
  DECIMAL 데이터 유형은 정확도 요구 사항이 매우 높은 계산에 사용됩니다. 이 유형을 사용하면 값의 정밀도와 계산 방법을 선택 매개변수로 지정할 수 있습니다. 여기서 정밀도는 해당 값에 대해 저장된 전체 유효 자릿수를 의미하고, 카운트 방식은 소수점 이하 자릿수를 의미합니다. 예를 들어, DECIMAL(7,3) 문은 저장된 값이 7자리를 초과하지 않고 소수점 이하 3자리를 초과하지 않도록 지정합니다.
DECIMAL 데이터 유형의 정밀도 및 계산 방법 수정자를 무시하면 MySQL 데이터베이스는 이 데이터 유형으로 식별된 모든 필드의 정밀도를 10으로, 계산 방법을 0으로 설정합니다.
 UNSIGNED 및 ZEROFILL 수정자는 FLOAT, DOUBLE 및 DECIMAL 데이터 유형에서도 사용할 수 있습니다. 그리고 그 효과는 INT 데이터 유형과 동일합니다.
문자열 유형
MySQL은 간단한 문자부터 거대한 텍스트 블록 또는 이진 문자열 데이터까지 무엇이든 저장할 수 있는 8가지 기본 문자열 유형을 제공합니다.

Type Size Use
CHAR 0-255바이트 고정 길이 문자열
VARCHAR 0-25 5바이트 가변 길이 문자열
TINYBLOB 0-255바이트 255자 이하의 이진 문자열
TINYTEXT 0-255바이트 짧은 텍스트 문자열
BLOB 0- 65 535바이트 긴 텍스트 바이너리 형식의 데이터
TEXT 0-65 535바이트 긴 텍스트 데이터
MEDIUMBLOB 0-16 777 215바이트 바이너리 중간 형식 LENGTH TEXT DATA
MEDIUMTEXT 0 -16 777 215바이트 중간 길이의 텍스트 데이터
LOGNGBLOB 0-4 294 967 295바이트 바이너리 형식의 매우 큰 텍스트 데이터
LONGTEXT 0 -4 294 967 295바이트 매우 큰 텍스트 데이터

CHAR 및 VARCHAR 유형

  • CHAR 유형은 고정 길이 문자열에 사용되며 괄호 안에 크기 수정자로 정의되어야 합니다. 이 크기 수정자의 범위는
    0-255입니다. 지정된 길이보다 큰 값은 잘리고, 지정된 길이보다 작은 값은 공백으로 채워집니다.
  • CHAR 유형은 BINARY 수정자를 사용할 수 있습니다. 비교 작업에 사용되는 경우 이 수정자는 CHAR
    가 기존의 대소문자 구분 방식이 아닌 이진 형식으로 작업에 참여하도록 합니다.
  • CHAR 유형의 변형은 VARCHAR 유형입니다. 가변 길이 문자열 유형이며 0-255 범위의 표시기도 있어야 합니다. CHAR와 VARCHGAR의 차이점은 MuSQL 데이터베이스가 이 표시기를 처리하는 방식입니다. CHAR는 크기를 값의 크기로 처리하고 길이가 충분하지 않으면 공백으로 채웁니다.
  • 반면 VARCHAR 유형은 이를 최대값으로 처리하고 문자열을 저장하는 데 실제로 필요한 길이만 사용하여(문자열 자체의 길이를 저장하기 위해 추가 바이트 추가) 값을 저장합니다. 그래서 표시기 길이보다 짧습니다.
  • VARCHAR 유형은 공백으로 채워지지 않지만 표시기보다 긴 값은 여전히 ​​잘립니다.
  • VARCHAR 유형은 실제 내용에 따라 저장된 값의 길이를 동적으로 변경할 수 있으므로 필드에 필요한 문자 수가 확실하지 않을 때 VARCHAR 유형을 사용하면 디스크 공간을 크게 절약하고 저장 효율성을 향상시킬 수 있습니다.
  • BINARY 수식자를 사용할 때 VARCHAR 유형은 CHAR 유형과 동일합니다.

TEXT 및 BLOB 유형
필드 길이 요구 사항이 255를 초과하는 경우 MySQL은 TEXT 및 BLOB의 두 가지 유형을 제공합니다. 이들은 모두 저장된 데이터의 크기에 따라 서로 다른 하위 유형을 갖습니다. 이러한 대용량 데이터는 텍스트 블록이나 이미지, 사운드 파일과 같은 바이너리 데이터 유형을 저장하는 데 사용됩니다.
 TEXT형과 BLOB형은 분류 및 비교에 차이가 있습니다. BLOB 유형은 대소문자를 구분하지만 TEXT는 대소문자를 구분하지 않습니다. 다양한 BLOB 및 TEXT 하위 유형에는 크기 수정자가 사용되지 않습니다. 지정된 유형에서 지원하는 최대 범위보다 큰 값은 자동으로 잘립니다.
날짜 및 시간 유형
날짜 및 시간 유형 값을 처리할 때 MySQL에는 선택할 수 있는 5가지 데이터 유형이 제공됩니다. 단순 날짜 및 시간 유형과 혼합 날짜 및 시간 유형으로 나눌 수 있습니다. 필요한 정밀도에 따라 각 하위 유형 내에서 하위 유형을 사용할 수 있으며, MySQL에는 다양한 입력 형식을 표준 형식으로 변환하는 기능이 내장되어 있습니다.
유형 크기
(바이트) 범위 형식 사용
DATE 3 1000-01-01/9999-12-31 YYYY-MM-DD 날짜 값
TIME 3 '-838:59:59'/'838:59:59' HH:MM:SS 시간 값 또는 기간
YEAR 1 1901/2155 YYYY 연도 값
DATETIME 8 1000-01-01 00:00:00/9999-12-31 23:59:59 YYYY-MM-DD HH :MM :SS 날짜 및 시간 혼합 값
TIMESTAMP 8 1970-01-01 00:00:00/2037년 언젠가 YYYYMMDD HHMMSS 날짜 및 시간 혼합 값, 타임스탬프

DATE, TIME 및 TEAR 유형
  MySQL은 DATE 및 TEAR 유형을 사용하여 간단한 날짜 값을 저장하고 TIME 유형을 사용하여 시간 값을 저장합니다. 이러한 유형은 구분 기호가 없는 문자열이나 정수 시퀀스로 설명할 수 있습니다. 문자열로 설명하는 경우 DATE 유형의 값은 구분 기호인 하이픈으로 구분되어야 하며, TIME 유형의 값은 구분 기호인 콜론으로 구분되어야 합니다.
콜론 구분 기호가 없는 TIME 유형 값은 MySQL에서 타임스탬프가 아닌 기간으로 이해된다는 점에 유의해야 합니다.
 MySQL도 해당 날짜의 연도에 있는 두 숫자의 값이나 SQL 문에서 TEAR 유형으로 입력된 두 숫자의 값을 최대한 해석합니다. 왜냐하면 모든 TEAR 유형의 값은 4개의 숫자로 저장되어야 하기 때문입니다. MySQL은 2자리 연도를 4자리 값으로 변환하려고 시도합니다. 00-69 범위의 값을 2000-2069 범위로 변환합니다. 70-99 범위의 값을 1970-1979로 변환합니다. MySQL에서 자동으로 변환한 값이 요구사항에 맞지 않는 경우 4자리 연도를 입력하세요.
DATEYIME 및 TIMESTAMP 유형
날짜 및 시간 데이터 유형 외에도 MySQL은 DATEYIME 및 TIMESTAMP라는 두 가지 혼합 유형도 지원합니다. 날짜와 시간을 단일 값으로 저장할 수 있습니다. 두 유형 모두 현재 날짜와 시간이 포함된 타임스탬프를 자동으로 저장하는 데 일반적으로 사용되며, 많은 수의 데이터베이스 트랜잭션을 수행해야 하고 디버깅 및 검토 목적으로 감사 추적을 설정해야 하는 애플리케이션에서 잘 작동할 수 있습니다.
 TIMESTAMP 유형의 필드에 값을 명시적으로 할당하지 않거나 null 값이 할당되는 경우. MySQL은 자동으로 시스템의 현재 날짜와 시간을 채웁니다.
복합 유형
 MySQL은 SQL 사양을 확장하는 두 가지 복합 데이터 유형인 ENUM 및 SET도 지원합니다. 이러한 유형은 기술적으로는 문자열 유형이지만 다른 데이터 유형으로 처리될 수 있습니다. ENUM 유형은 컬렉션에서 하나의 값만 얻을 수 있도록 허용하고, SET 유형은 컬렉션에서 원하는 수의 값을 얻을 수 있도록 허용합니다.
ENUM 유형
  ENUM 유형은 집합에서 하나의 값만 얻을 수 있도록 허용하며 이는 단일 옵션과 다소 유사합니다. 인간의 성별과 같이 상호 배타적인 데이터를 다룰 때 이해하기가 더 쉽습니다. ENUM 유형 필드는 컬렉션에서 값을 가져오거나 null 값을 사용할 수 있습니다. 그렇지 않으면 입력으로 인해 MySQL이 빈 문자열을 필드에 삽입하게 됩니다. 또한, 삽입된 값의 대소문자가 컬렉션에 있는 값의 대소문자와 일치하지 않는 경우, MySQL은 자동으로 삽입된 값의 대소문자를 이용하여 컬렉션의 대소문자와 일치하는 값으로 변환한다.
 ENUM 타입은 시스템 내에 숫자로 저장될 수 있으며, 1부터 인덱스가 지정됩니다. ENUM 유형은 최대 65536개의 요소를 포함할 수 있으며, 그 중 하나는 MySQL에서 오류 정보를 저장하기 위해 예약되어 있습니다. 이 오류 값은 인덱스 0 또는 빈 문자열로 표시됩니다.
 MySQL은 ENUM 타입 컬렉션에 나타나는 값을 합법적인 입력으로 간주하고, 그 외의 입력은 모두 실패합니다. 이는 빈 문자열이나 해당 숫자 인덱스 0이 포함된 행을 검색하면 잘못된 레코드의 위치를 ​​쉽게 찾을 수 있음을 보여줍니다.
SET 유형
  SET 유형은 ENUM 유형과 유사하지만 동일하지는 않습니다. SET 유형은 미리 정의된 컬렉션에서 원하는 수의 값을 가져올 수 있습니다. 그리고 ENUM 유형과 마찬가지로 SET 유형 필드에 미리 정의되지 않은 값을 삽입하려고 하면 MySQL이 빈 문자열을 삽입하게 됩니다. 합법적인 요소와 불법적인 요소를 모두 포함하는 레코드를 삽입하면 MySQL은 합법적인 요소를 유지하고 불법적인 요소를 제거합니다.
 SET 유형은 최대 64개의 요소를 포함할 수 있습니다. SET 요소에서 값은 해당 요소를 나타내는 "비트"의 개별 시퀀스로 저장됩니다. 비트는 순서가 지정된 요소 컬렉션을 만드는 간단하고 효율적인 방법입니다. 또한 중복된 요소를 제거하므로 SET 유형에 두 개의 동일한 요소를 포함하는 것이 불가능합니다.
 SET 유형 필드에서 잘못된 레코드를 찾으려면 빈 문자열이나 0의 바이너리 값이 포함된 행을 찾으면 됩니다.

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 배우기를 방문하세요! !

위 내용은 MySQL과 SQL Server의 차이점은 무엇입니까의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!