mysql与sql server的语法区别
发布时间:2023-12-28 04:59:35 所属栏目:MySql教程 来源:DaWei
导读: 对于很多先学习MySQL再学习SQLServer的初学者来说,很难受的一件事情莫过于在这俩者的语法中有一些细微的细节差异让人无法适应,例如SQLServer中并没有modify与change等关键字,又或者MySQL中的
对于很多先学习MySQL再学习SQLServer的初学者来说,很难受的一件事情莫过于在这俩者的语法中有一些细微的细节差异让人无法适应,例如SQLServer中并没有modify与change等关键字,又或者MySQL中的每条语句以;结尾,而SQLServer却是使用go这一关键字表示一段批处理语句的结束等等… 本文正是在这种情况下出现,希望帮助同时学习这俩们SQL语言的人了解这俩种数据库的语法异别 语句结尾:在MySQL中必须使用;分隔每条语句并作为语句结尾,当有多条语句一起执行时如果语句间没有使用分号分隔会报错示例: use Student; -- 同时运行俩条语句时不用;分隔语句会报错select * from SC; 而在SQLServer中分号是可选的,你可以选择加也可以选择不加,同时SQLServer中提供了go关键字,作为批处理语句的结尾,建议写SQLServer时使用go结束,这样子在下一段语句需要上一段语句执行完才能执行的情况下不会报批处理错误,示例: use Student-- 假设SC数据表在Student库下,此时如果不写go会报错goselect * from SC 存储引擎:在mysql中常用的有InnoDB | MyISAM | MEMORY | MERGE等存储引擎,其中使用最多的是InnoDB而在SQLServer中数据库的存储分为逻辑实现与物理实现,示意图: 其中主数据文件有且仅有一个,次数据文件可以有n个(0-n),日志文件可以有一到多个(至少有一个) 同时MySQL在创建表时可以指定表的存储引擎(默认InnoDB),而SQLServer只有一种存储引擎 MySQL可以使用单引号与双引号,而SQLServer只支持单引号 都不严格区分大小写 定位某张表mysql:库名.表名,示例:Student.SCSQLServer:库名.dbo.表名 或者 库名…表名其中dbo为数据库所有者(Database Owner),即有权限访问数据库的用户,是唯一的,拥有这个数据库的全部权限,并能给其他用户提供访问权限与功能示例: Student.dbo.SC -- 或者:Student..SC SQLServer中的exec关键字: -- 1. exec 存储过程名 参数1, 参数2....-- 注意:执行存储过程时是不加括号的 -- 2. exec('sql语句'),表示执行该语句 SQLServer高级语法中提供了一系列的sp命令 SQLServer中的系统数据库:master:记录系统的所有系统级信息model:模板数据库msdb:存储计划信息,备份与恢复相关信息,SQLServer代理程序调度报警与作业调度等信息tempdb:临时数据库,他为所有的临时表,临时存储过程以及其他所有临时操作提供存储空间resource:隐藏的只读数据库,包含所有系统对象,但不含用户数据或用户原数据 mysql中的系统数据库:information_schema:提供了访问数据库元数据的方式。(元数据是关于数据的数据,如数据库名或表名,列的数据类型,或访问权限等。有时用于表述该信息的其他术语包括“数据词典”和“系统目录”) ,即保存着关于MySQL服务器所维护的所有其他数据库的信息,如数据库名,数据库的表,表栏的数据类型与访问权限等在INFORMATION_SCHEMA中,有几张只读表。它们实际上是视图,而不是基本表mysql:核心数据库(类似于SQLServer的master表),存储数据库的用户、权限设置、关键字等mysql自己需要使用的控制和管理信息,例如修改root用户密码就需要使用这个数据库performance_schema;sys; 在负载压力相同时,MySQL消耗的内存和CPU更少 在SQLServer中还提供了打印语句print,mysql中没有,示例: -- print自带换行 print 'hello' MySQL支持enum和set类型,SQLServer不支持 DDL&DML语句 建库 mysql: -- 直接创建即可CREATE DATABASE [IF NOT EXISTS] 数据库名 [character set 字符集名]; SQLServer: /* 除了数据库名字外还需要指定: 主数据文件逻辑名(一般与数据库同名),主数据物理文件名称(.mdf) 主数据文件初始大小(默认5MB),最大容量,增长速度 日志文件逻辑名(一般命名为库名字_log),日志物理文件名(.ldf) 日志文件初始大小(默认1MB),最大容量,增长速度 是否加上次要数据文件(.ndf),是否在增加几个日志文件.... 并且逻辑文件命名需要与物理文件命名相对应 主数据文件逻辑默认名为数据库名 */-- 示例:CREATE DATABASE 数据库名[ON [PRIMARY]( NAME = 'test', FILENAME='D:\test.mdf', [SIZE=10240KB/MB/GB/TB, ] [MAXSIZE = UNLIMITED/20480KB/MB/GB/TB,] [FILEGROWTH = 10%/1024KB/MB/GB/TB])][LOG ON ( NAME='test_log', FILENAME='D:\test_log.ldf', [SIZE=1024KB/MB/GB/TB,] [MAXSIZE = 5120KB/MB/GB/TB/UNLIMITED,] [FILEGROWTH = 1024KB/MB/GB/TB/%])]GO/* 其中: ON表示后面定义的是数据文件 ON PRIMARY表示定义主数据文件 LOG ON表示定义日志文件 NAME表示文件逻辑名 FILENAME表示文件物理名 SIZE表示初始大小,至少为模板数据库model的大小(主数据文件与日志文件分别是3M与1M) MAXSIZE表示文件最大大小,可以为UNLIMITED(无限制) FILEGROWTH表示文件大小增长速度,默认值10%,每次最少增加64kb 默认单位都是MB 注意:括号中最后一行无逗号,其他行都需要逗号 以上就是“mysql与sql server的语法有哪些区别”这篇文章的所有内容,感谢各位的阅读! (编辑:威海站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
推荐文章
站长推荐