区别
type
status
date
slug
summary
tags
category
icon
password
区别
mysql&sqlserver
- mysql必须用
;
结尾,sqlserver可以选择不加批处理语句时需要加go
- 在mysql中常用的有InnoDB | MyISAM | MEMORY | MERGE等存储引擎,其中使用最多的是
InnoDB
- 事务支持:InnoDB存储引擎支持事务,这意味着它可以确保数据库操作的一致性和可靠性。事务是一组数据库操作,要么全部成功,要么全部失败,这有助于维护数据的完整性。
- 行级锁定:InnoDB使用行级锁定(Row-Level Locking)来管理并发访问数据。这意味着多个事务可以同时访问同一表的不同行,而不会导致整个表的锁定,提高了数据库的并发性能。
- 外键支持:InnoDB支持外键约束,这允许在表之间建立关系,确保数据的引用完整性。外键是表之间的连接,可以保证数据的一致性。
- ACID特性:InnoDB存储引擎遵循ACID(原子性、一致性、隔离性和持久性)特性,这是数据库管理系统必须提供的核心特性。它确保了数据的可靠性和一致性。
- 热备份:InnoDB支持在线热备份,这意味着可以在数据库运行时备份数据而无需停止数据库服务。
- 崩溃恢复:InnoDB具有崩溃恢复机制,可以在数据库崩溃后自动恢复数据到一致的状态,减少了数据丢失的风险。
- 自动增长:InnoDB支持自动增长的表列,使得插入新数据时不需要手动指定列的值。
- 多版本并发控制:InnoDB使用多版本并发控制(MVCC)来处理并发事务,每个事务看到的数据是独立的版本,不会相互干扰。
而在SQLServer中数据库的存储分为逻辑实现与物理实现
以下是InnoDB存储引擎的一些关键特点和功能:
- MySQL可以使用单引号与双引号,而SQLServer只支持单引号
都不严格区分大小写
- 定位某张表
mysql:库名.表名,示例:Student.SC
SQLServer:库名.dbo.表名 或者 库名…表名
- 在负载压力相同时,MySQL消耗的内存和CPU更少
- 在SQLServer中还提供了打印语句print,mysql中没有,示例:
- 系统数据库区别
- SQLServer中的系统数据库:
- mysql中的系统数据库:
master:记录系统的所有系统级信息
model:模板数据库
msdb:存储计划信息,备份与恢复相关信息,SQLServer代理程序调度报警与作业调度等信息
tempdb:临时数据库,他为所有的临时表,临时存储过程以及其他所有临时操作提供存储空间
resource:隐藏的只读数据库,包含所有系统对象,但不含用户数据或用户原数据
information_schema:提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”) ,即保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等
在INFORMATION_SCHEMA中,有几张只读表。它们实际上是视图,而不是基本表
mysql:核心数据库(类似于SQLServer的master表),存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息,例如修改root用户密码就需要使用这个数据库
performance_schema;
sys;
- 数据类型
- MySQL中没有nchar,nvarchar,ntext等类型
- SQLServer使用datetime类型作为获取默认值为当前时间的数据类型
- MySQL支持无符号的整数类型,而SQLServer不支持
而MySQL使用timestamp时间错类型实现这个效果
- 约束/索引
- 递增语句MySQL是AUTO_INCREMENT,SQLServer是identify(10.1),从10开始一次加1
- mysql不支持检查索引(check),SQLServer支持
- 获取当前时间
MySQL可以使用current_date()函数获取当前日期,或者使用CURRENT_TIME()函数只获取当前时间,或者使用CURRENT_TIMESTAMP()函数与now()函数获取当前的完整时间,示例:
而SQLServer可以使用getdate()方法获取当前时间日期,示例:
- 字符串连接函数
- 视图
mysql视图中的from子句不允许存在子查询,而SQLServer支持
- 循环结构
基本一致
但是在MySQL中在while循环后面需要加上do关键字
同时在end后面需要写上循环类型与循环表示,例如:WHILE [标签];
SQLServer不用
- case结构(一致)
- case后可以带一个值,在when中通过判断这个值的取值来达到选择效果(switch-case形式)
- 也可以不带值,在when语句中写条件判断式(多重IF形式)
都需要使用then
不需要写Begin,只需要写END,分为俩种形式:
- IF结构
mysql需要在if 条件后以及else后添加then再写语句
并且mysql中的IF结构只能写在begin end块中
而在SQLServer中不需要写then
- 判空函数
Last update: 2023-09-17
type
status
date
slug
summary
tags
category
icon
password
这里是关于我笔记,希望你能获取到你想要的知识 🧐