SQLServer和MySql语法和关键字的区别
SQLserver与MySQL语法的区别

SQLserver与MySQL语法的区别 SQL server与MySQ虽然同样是基于SQL语法的,但它们之间的差异也是不可忽略的。
本博⽂缘由: 在学习《数据库系统概论》⾥⾯使⽤的为SQLsever语法,与最先接触的MySQL部分语法有些许不同。
下⾯是我在做数据库习题与到的⼀些差异。
1、limit语句mysql中SELECT ageFROM personORDER BY age ASCLIMIT 3SQL server中SELECT TOP 3 WITH TIES *FROM personORDER BY age ASC#应⽤-- 从 "Persons" 表中选取 50% 的记录SELECT TOP 50 PERCENT * FROM Persons2、DATEDIFF() 函数mysql中#DATEDIFF() 函数返回两个⽇期之间的天数-- DATEDIFF(date1,date2)SELECT DATEDIFF('2008-12-30','2008-12-29') AS DiffDateSQL server中#DATEDIFF() 函数返回两个⽇期之间的时间-- DATEDIFF(datepart,startdate,enddate)SELECT DATEDIFF(day,'2008-12-29','2008-12-30') AS DiffDate/*注意:SQL server中的DATEDIFF() 函数等效于mysql中的 TIMESTAMPDIFF() 函数*/-- TIMESTAMPDIFF(unit,begin,end);3、DATE函数mysql中1、NOW() 返回当前的⽇期和时间-- CURDATE() 返回当前的⽇期-- CURTIME() 返回当前的时间2、DATE() 提取⽇期或⽇期/时间表达式的⽇期部分-- EXTRACT(unit FROM date) 返回⽇期/时间按的单独 unit部分3、DATE_FORMAT(date,format) ⽤不同的格式 format显⽰⽇期/时间4、DATEDIFF(date1,date2) 返回两个⽇期之间的天数-- TIMESTAMPDIFF(unit,begin,end); 相当于SQL sever中的DATEDIFF() 函数5、DATE_ADD() 给⽇期添加指定的时间间隔DATE_SUB() 从⽇期减去指定的时间间隔SQL sever中1、GETDATE() 返回当前⽇期和时间2、DATEPART(datepart,date) 返回⽇期/时间的单独 datepart3、CONVERT(data_type(length),data_to_be_converted,style) ⽤不同的格式 style显⽰⽇期/时间4、DATEDIFF(datepart,startdate,enddate) 返回两个⽇期之间的时间5、DATEADD() 在⽇期中添加或减去指定的时间间隔4、百分⽐约束例:查询课程表中的前30%的记录。
postgresql与mysqlsql语句一样吗

postgresql与mysqlsql语句一样吗postgresql 与mysql sql语句一样吗PostgreSQL 的稳定性极强, Innodb 等引擎在崩溃、断电之类的灾难场景下抗打击能力有了长足进步,然而很多MySQL 使用者都遇到过Server级的资料库丢失的场景——mysql系统库是MyISAM的,相比之下,PG资料库这方面要好一些。
sql server与mysql语句一样么LabVIEW是一种程式开发环境,由美国国家仪器(NI)公司研制开发,类似于C和BASIC开发环境,但是LabVIEW与其他计算机语言的显著区别是:其他计算机语言都是采用基于文字的语言产生程式码,而LabVIEW使用的是图形化编辑语言G编写程式,产生的程式是框图的形式。
LabVIEW软体是NI设计平台的核心,也是开发测量或控制系统的理想选择。
LabVIEW开发环境集成了工程师和科学家快速构建各种应用所需的所有工具,旨在帮助工程师和科学家解决问题、提高生产力和不断创新。
hibernate的hql语句和sql语句一样吗?一样.都是资料库操作语句.只是有区别.sql语句貌似裸奔.hql整装.......sql可比作用dos操作的老版windows系统.hql.....windows xp SQL SERVER和ORACLE中SQL语句一样吗?Oracle与Sql server都遵循SQL-92标准:区别如下:1.Oracle中表名,栏位名,储存过程名,变数名不能超过30个字串长度。
2.Oracle中不支援T op 语法。
使用whererownum < n 代替。
但需要注意如果在Top前有排序的操作,则需要先排序在利用rownum 取得。
3.Oracle中游标的使用与SqlServer中有挺大差别,主要是在回圈控制方面不一致。
在Oracle中如果某列是Date型别,那么它预设的格式是yyyy-MM-dd,如果使用where colDate = ‘2005-06-08 17:14:57’就会出错,‘2005-06-08’可以。
mysql和sqlserver中的text数据类型 -回复

mysql和sqlserver中的text数据类型-回复MySQL和SQL Server是两个常用的关系型数据库管理系统,它们都提供了text数据类型用于存储大量的文本数据。
在本文中,我们将一步一步回答有关MySQL和SQL Server中的text数据类型的问题,并讨论它们的用途、特点以及如何在两个系统中使用。
一、MySQL中的text数据类型MySQL是一种开源的关系型数据库管理系统,在许多应用程序中被广泛使用。
它提供了多种类型的数据类型,其中包括text类型。
1. 什么是MySQL中的text数据类型?text数据类型是MySQL中用于存储大量文本数据的一种数据类型。
它可以存储最大长度为65,535字节(约64 KB)的文本。
2. text数据类型的特点是什么?text数据类型在MySQL中具有以下特点:- 可以存储大量的文本数据,最大长度为65,535字节。
- 与其他数据类型相比,text类型的存储空间较大。
- text类型的数据可以包含任意字符,包括字母、数字和特殊字符。
- text类型的数据与字符串数据类型相似,但其长度不受字符集的限制。
3. 如何在MySQL中使用text数据类型?在MySQL中,可以使用以下语法定义text类型的列:CREATE TABLE table_name (column_name TEXT);在上述代码中,'table_name'是表的名称,'column_name'是text列的名称。
二、SQL Server中的text数据类型SQL Server是微软开发的一种关系型数据库管理系统,在企业应用程序中被广泛使用。
与MySQL类似,SQL Server也提供了text数据类型用于存储大量文本数据。
1. 什么是SQL Server中的text数据类型?text数据类型是SQL Server中用于存储大量文本数据的一种数据类型。
SQL server与mysql的区别

1、执行符号:①mysql:分号“;”②SQL server:字符“go”2、自增列:mysql必须要索引,不能设置增量3、默认值①mysql默认值不用加括号②SQL server可加可不加4、查看表结构定义:①SQL server:exec sp_help ‘tabname’②mysql:desc tabname5、更改表名:①mysql:alter table tabName rename newTabName②SQL server:exec sys.sp_rename @objname=N’tabn a me’,@newname=’newTabName’6、更改字段类型:①SQL server:alter table[dbo].[tabName] alter column [id] bigint②mysql:alter table tabName modify id bigint7、更改字段名:①SQL server:exec sys.sp_rename@objname=N’tabName.id’,@newname=’lewid’,@objtype=’column’②mysql:alter table tabName change idlew Id bigint8、添加字段:①SQL server:ALTER TABLE[dbo].[tabName] ADD NAME NVARCHAR(200) NULL②mysqlALTER TABLE tabName ADD NAME NVARCHAR(200) NULL、9、删除字段:①SQL server:ALTER TABLE[dbo].[tabName]DROP COLUMN NAME②mysqlALTER TABLE tabName DROP NAME10、添加主键/外键或约束:①SQL serverALTER TABLE[dbo].[tabName] DROP CONSTRAINT pk_tabName②mysqlALTER TABLE tabName DROP CONSTRAINT constaintNameALTER TABLE tabName DROP PRIMARY KEY pk_tabNameALTER TABLE subTabName DROP FOREIGN KEY fk_subTabName_tabName11、删除表:①SQL serverDROP TABLE tabName , TabName2;②mysqlDROP TABLE IF EXISTS tabName , TabName2;12、创建视图:①mysqlCREATE OR REPLACE VIEW VtabNameASSELECT* FROM tabNameWITH CHECK OPTION;②SQL serverCREATE VIEW VtabNameASSELECT* FROM tabNameWITH CHECK OPTION;13、视图结构和定义:①mysqlDESC VtabName;SHOW CREATE VIEW VtabName;SHOW TABLE STATUS LIKE'VtabName';②SQL serversp_help VtabNamesp_helptext VtabName14、删除视图:①mysqlDROP VIEW tabName;DROP VIEW IF EXISTS tabName;②SQL serverDROP VIEW tabName;15、创建索引:①mysqlCREATE TABLE tabName(id INT NOT NULL,KEY indName(id));ALTER TABLE tabName ADD INDEX indName(Value);CREATE UNIQUE INDEX indName ON tabName(Value);②SQL serverCREATE TABLE tabName(ID INTIDENTITY(100,1) CONSTRAINT PK_tabName PRIMARY KEY)CREATE UNIQUE INDEX indName ON tabName(Value);16、重建索引:①mysqlREPAIR TABLE tabName QUICK;②SQL serverDBCC DBREINDEX('dbo.tabName','',100)ALTER INDEX indName ON tabName REBUILD;ALTER INDEX ALL ON tabName REORGANIZE;17、删除索引:①mysqlALTER TABLE tabName DROP INDEX indName;ALTER TABLE tabName DROP PRIMARY KEY pk_tabName;ALTER TABLE subTabName DROP FOREIGN KEY fk_subTabName_tabName; DROP INDEX indName ON tabName;②SQL serverDROP INDEX indName ON tabName;ALTER TABLE tabName DROP CONSTRAINT PK_tabName18、查看索引:①mysqlSHOW INDEX FROM tabName;②SQL serverSELECT* FROM sys.indexes WHERE object_id =OBJECT_ID('tabName') SELECT*FROM sys.sysindexes WHERE id=OBJECT_ID('tabName')19、查看存储过程/函数定义:①mysqlSHOW CREATE{PROCEDURE|FUNCTION}name;SHOW{PROCEDURE|FUNCTION}STATUS[ LIKE 'pattern'];SELECT*FROM information_schema.Routines WHEREROUTINE_NAME='name';②SQL serverexec sp_help f_getdateexec sp_helptext f_getdateSELECT*FROM information_schema.Routines WHEREROUTINE_NAME='name';20、存储过程:①mysqlDELIMITER//CREATE PROCEDURE sp_name(IN param1INT,OUT param2 INT)BEGIN{sql_statement}END//DELIMITER;CALL sp_name();DROP PROCEDURE IF EXISTS sp_name;②SQL serverCREATE PROCEDURE sp_name(@param1 INT,@param2 INT OUTPUT) ASBEGIN{sql_statement}ENDGOEXEC sp_name();DROP PROCEDURE sp_name;21、函数:①mysqlDELIMITER//CREATE FUNCTION fn_name()RETURNS Decimal(10,2)RETURN 3.14;//DELIMITER;SELECT fn_name();DROP PROCEDURE IF EXISTS fn_name;②SQL serverCREATE FUNCTION dbo.fn_name()RETURNS Decimal(10,2)ASBEGINRETURN 3.14ENDGOSELECT dbo.fn_name();DROP FUNCTION dbo.fn_name;22、触发器:①mysqlDELIMITER//CREATE TRIGGER tr_name{AFTER|BEFORE}{INSERT|UPDATE|DELETE} ON tabNameFOR EACH ROWBEGIN{sql_statement;}ENDDELIMITER;DROP TRIGGER IF EXISTS tr_name;②SQL serverCREATE TRIGGER dbo.tr_nameON[dbo].[tabName]{FOR|AFTER|INSTEAD OF}{INSERT|UPDATE|DELETE} ASBEGIN{sql_statement;}ENDGODROP TRIGGER dbo.tr_name23、循环语句:①mysql(1至100之和)WHILE 循环:DELIMITER//CREATE PROCEDURE TESTPRO()BEGINDECLARE I,K INT DEFAULT 0 ;WHILE I<= 100 DOSET K=I+K;SET I=I+ 1;END WHILE;SELECT K;END;//DELIMITER;REPEAT UNTIL 循环:DELIMITER//CREATE PROCEDURE TESTPRO() BEGINDECLARE I,K INTDEFAULT 0 ; REPEATSET K=I+K;SET I=I+ 1;UNTIL I>100END REPEAT;SELECT K;END;//DELIMITER;LOOP 循环:DELIMITER//CREATE PROCEDURE TESTPRO() BEGINDECLARE I,K INTDEFAULT 0 ; LABEL:LOOPSET K=I+K;SET I=I+ 1;IF I>100 THENLEAVE LABEL;END IF;END LOOP;SELECT K;END;//DELIMITER;CALL TESTPRO();DROP PROCEDURE IF EXISTS TESTPRO;②SQL serverDECLARE@I INT= 1DECLARE@K INT= 0WHILE@I<= 100BEGINSET@K=@K+@ISET@I=@I+ 1ENDSELECT@K24、游标:①mysql(参数名称不能与列明一样)DELIMITER//CREATE PROCEDURE TESTPRO()BEGINDECLARE FName varchar(50);DECLARE LName varchar(50);DECLARE IsDone BOOLEAN DEFAULT FALSE;DECLARE cursor_name CURSOR FOR SELECT FirstName,LastName FROM Person; DECLARE CONTINUE HANDLER FOR NOT FOUND SET IsDone=TRUE;OPEN cursor_name;LABEL:LOOPFETCH cursor_name INTO FName,LName;IF IsDone THENLEAVE LABEL;END IF;SELECT CONCAT('Contact Name:',FName,LName)AS Name;END LOOP;CLOSE cursor_name;END;//DELIMITER;②SQL serverDECLARE@LastName varchar(50),@FirstName varchar(50);DECLARE contact_cursor CURSOR FOR SELECT LastName,FirstName FROM PersonOPEN contact_cursor;FETCH NEXT FROM contact_cursor INTO @LastName,@FirstName; WHILE@@FETCH_STATUS= 0BEGINSELECT'Contact Name: '+@FirstName+' '+@LastNameFETCH NEXT FROM contact_cursor INTO @LastName,@FirstName; ENDCLOSE contact_cursor;DEALLOCATE contact_cursor;GO25、查看账户信息:①mysqlselect Host,User,Password from er;show grants for 'username' @'localhost';②SQL serverselect*from sys.sysloginsselect*from sys.sysusers where is sqluser= 126、添加账户:①mysql(insert into er 默认禁止,去掉my.init\sql-mode\STRICT_TRANS_TABLES)CREATE USER'username'@'localhost'IDENTIFIED BY 'password'; INSERT INTO er (Host,User,Password)VALUES ('localhost','username',PASSWORD('password'));②SQL serverUSE[master]GOCREATE LOGIN [username] WITH PASSWORD=N'password',CHECK_POLICY=OFF GOUSE[YourDatabase]GOCREATE USER[username]FORLOGIN[username]GO26、更改密码:①mysqlmysqladmin-uusername-p123456password 654321set password=password("kk");set password for 'username' @'localhost'=password('123456');update er set Password=PASSWORD('123456') WHEREuser='username';flush privileges;②SQL serverALTER LOGIN[username]WITH PASSWORD=N'123456'sp_password@new='123456',@loginame='username',@old ='old_password'27、授权和回收权限:(SqlServer服务器角色和数据库角色相关操作)①mysqlGRANT SELECT on *.*to'username'@'localhost'identified by'password';REVOKE all privileges,grant option FROM 'username' @'localhost';②SQL serverUSE[master]GRANT CONNECTSQLTO[username]REVOKE CONNECTSQLTO[username]EXEC master..sp_addsrvrolemember @loginame=N'username',@rolename= N'sysadmin'EXEC master..sp_dropsrvrolemember@loginame=N'username',@rolename=N'sysadmin'GOUSE[YourDatabase]GRANT INSERT,UPDATE,DELETE,SELECTON[dbo].[TestTab]TO[username]REVOKE INSERT,UPDATE,DELETE,SELECTON[dbo].[TestTab]TO[username]EXEC sp_addrolemember N'db_owner',N'username'EXEC sp_droprolemember N'db_owner',N'username'GO28、删除账户:①mysqlDROP user'username'@'localhost';DELETE FROM er WHERE user='username';②SQL serverUSE[master]GODROP LOGIN [TUser]sp_droplogin@loginame='username'GOUSE[YourDatabase]GODROP USER[TUser]sp_dropuser@name_in_db='username'GO。
mysql 与 sql server 排序规则 -回复

mysql 与sql server 排序规则-回复【mysql与sql server排序规则】在数据库管理系统中,排序规则(Collation)是指用于确定字符串比较和排序顺序的一组规则。
不同的数据库管理系统具有不同的排序规则,包括MySQL和SQL Server。
一、MySQL排序规则MySQL的排序规则是通过Collation(字符集校对)来定义的。
Collation 定义了字符的比较和排序规则,包括不区分大小写、区分大小写、按字母顺序排序等。
MySQL支持多种字符集和排序规则,用户可以根据自己的需要选择合适的排序规则。
1.1. 字符集和排序规则MySQL支持多种字符集和排序规则,常用的字符集包括utf8、latin1、gbk等。
每种字符集对应多种排序规则,比如utf8字符集对应的排序规则包括utf8_general_ci(不区分大小写)、utf8_bin(区分大小写)等。
1.2. 排序规则的影响排序规则会影响字符串的比较和排序结果。
比如在utf8_general_ci排序规则中,大写字母和小写字母被认为是相等的,所以对于字符串比较来说,'A'和'a'是相等的;而在utf8_bin排序规则中,大小写字母是不相等的。
1.3. 设置排序规则在MySQL中,可以在数据库、表和列级别上设置排序规则。
在创建数据库或表时,可以通过指定COLLATE子句来设置排序规则。
比如创建一个按照utf8_general_ci排序规则的表:CREATE TABLE mytable (id INT,name VARCHAR(100)) COLLATE utf8_general_ci;在列级别上,可以使用ALTER TABLE语句修改列的排序规则。
比如将name列的排序规则修改为utf8_general_ci:ALTER TABLE mytable MODIFY COLUMN name VARCHAR(100) COLLATE utf8_general_ci;1.4. 默认排序规则如果没有指定排序规则,默认情况下MySQL使用服务器的默认字符集和排序规则。
sql语言的标准

sql语言的标准一、概述SQL(StructuredQueryLanguage)是一种用于管理关系数据库系统的标准语言。
它被广泛用于各种数据库管理系统,如MySQL、Oracle、SQLServer等。
本标准旨在规范SQL语言的使用和行为,以确保在不同的数据库管理系统之间的一致性和互操作性。
二、语法规则1.语句结构:SQL语句通常以一个或多个关键字开头,后面跟着表名、列名、条件、操作符和值等元素。
语句以分号结尾。
2.关键字:SQL关键字用于指定操作类型,如SELECT、INSERT、UPDATE、DELETE等。
3.表格和列:表格是SQL中的基本数据结构,由列和行组成。
列名是表格中每个单元格的名称,行是表格中的数据单元。
4.条件:条件用于筛选表格中的数据。
常用的条件包括等于、不等于、大于、小于、包含等。
5.操作符:操作符用于执行各种数据操作,如加法、减法、乘法、除法等。
6.排序和分组:SQL支持对表格数据进行排序和分组,以便对数据进行更高级的查询和分析。
三、标准内容1.语法规则:详细描述SQL语句的语法结构,包括关键字、表格和列的命名规则、条件和操作符的使用方法等。
2.数据类型:定义SQL支持的数据类型,包括数字、字符串、日期等。
3.查询语句:规定如何使用SELECT语句从表格中检索数据,包括通配符的使用、聚合函数的使用等。
4.插入语句:规定如何使用INSERT语句向表格中插入数据。
5.更新语句:规定如何使用UPDATE语句修改表格中的数据。
6.删除语句:规定如何使用DELETE语句删除表格中的数据。
7.事务处理:规定如何使用事务来确保数据库操作的原子性、一致性和隔离性。
8.安全性:规定如何使用SQL语句来保护数据库的安全性,包括用户身份验证、权限管理等。
9.性能优化:提供一些优化SQL语句的建议,以提高查询性能和响应速度。
四、标准实施1.数据库管理系统开发商:数据库管理系统开发商应遵循本标准,确保其产品支持SQL语言的规范使用。
sqlserver mysql的触发器语法

SQL Server 和MySQL 的触发器语法有所不同。
下面分别介绍两者的触发器语法。
1.SQL Server 触发器语法:在SQL Server 中,触发器是一种数据库对象,它与表相关联,当表上发生特定事件(如INSERT、UPDATE 或DELETE)时,触发器就会被触发。
以下是SQL Server 触发器的基本语法:解释:•trigger_name是触发器的名称,可以根据需要自行定义。
•table_name是触发器所关联的表名。
•event_type是触发器所关联的事件类型,可以是INSERT、UPDATE或DELETE。
•column_list是触发器所关联的列名列表,如果触发器与所有列相关联,则可以省略列名列表。
•BEGIN和END之间是触发器的逻辑代码块。
2.MySQL 触发器语法:在MySQL 中,触发器是与表相关联的数据库对象,当满足特定条件时,触发器会自动执行预定义的操作。
以下是MySQL 触发器的基本语法:解释:•trigger_name是触发器的名称,可以根据需要自行定义。
•trigger_time是触发器的时间,可以是BEFORE或AFTER。
•trigger_event是触发器的操作事件,可以是INSERT、UPDATE或DELETE。
•table_name是触发器所关联的表名。
•FOR EACH ROW表示触发器将为每一行执行预定义的操作。
•BEGIN和END之间是触发器的逻辑代码块。
需要注意的是,SQL Server 和MySQL 的触发器语法在细节上可能略有不同,上述示例仅展示了基本的语法结构。
在实际使用中,请根据具体的数据库版本和需求进行适当的调整。
c# MySql与SQL sever的区别

C#开发用sql server(2008)与mysql(5.6) 的不同之处程序方面1 连接字符串Sql server: connectionString="DataSource=IP;Initial Catalog=DBname;Persist Security Info=True;UserID=sa;Password=pwd;Max Pool Size = 512"Mysql:connectionString="Server=127.0.0.1;Database=dbname;Uid=root;Pwd=pwd;chars et=utf8;"2 数据操作类库Sql server: using System.Data.SqlClient;Mysql: using MySql.Data.MySqlClient;(要下载mysql.data.dll)3 调用存储过程区别(调用方式相同,有些小区别)Sql server: 传参时参数名一般以@开头Mysql: 参数不能以@开头,以?开头,存储过程的不用?开头,定义的参数名与存储过程一致即可,但不要与字段名相同数据库部分1 top 与limitSql server: select top n * from table orderby id desc;Mysql: select * from table order by id desclimit n;2 group bySql server: select itemcode,Avg(itemvalue)from table group by itemcodeGroup by 部分须与select 部分一致,除非统计类用到的字段Mysql: select itemcode,Avg(itemvalue) from table group by itemcode3 日期函数很多不同,列出常用的一个Sql server:convert(varchar(10),getdate(),120) 将时间转换成年-月-日格式字符串Mysql: DATE_FORMAT(NOW(),'%Y-%m-%d') mysql还有其它方式可以实现此功能4 字符串相加SqlServer 直接用+ 如str1 + str2MySql concat() 如set str3 =concat(str1,str2);5 存储过程写法Sqlserver:1 多个语句之间可以用;分隔,也可不用2执行动态sqlDeclare @strsql varchar(2000)Set @strsql=’select * from table where id=@参数id’Execute(@strsql);3 Print @strsql 打印(显示)出执行的sql语句4 exec(其它存储过程参数1)Mysql:1多个语句之间必须用;分隔,查询里也一样2 执行动态sqlDeclare strSQL varchar(2000);Set @strSQL2=concat(’select * from tablewhere id=’,’参数id’);prepare strSQL from @strSQL2;execute strSQL;3 SELECT @strSQL2; 打印(显示)出执行的sql语句4 call 其它存储过程(参数1)6. isnull()SqlServer isnull()MySql ifnull()7. getdate()SqlServer getdate()MySql now()8. newid()SqlServer newid()MySql uuid()9. @@ROWCOUNTSqlServer @@ROWCOUNTMySql row_count()注意:MySql的这个函数仅对于update, insert, delete有效10. SCOPE_IDENTITY()SqlServer SCOPE_IDENTITY()MySql last_insert_id()11. if ... else ...SqlServer IF Boolean_expressionBeginsql_statement | statement_blockendELSEBeginsql_statement | statement_blockend-- 单条语句可以不要BEGIN 和END。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SQL Server 和MySql 语法和关键字的区别——用于SQLServer到MySql的转换(1)mysql的ifnull()函数对应sql的isnull()函数;(2)mysql的存储过程中变量的定义去掉@;(3)mysql的每句结束要用";"(4)SQLServer存储过程的AS在MySql中需要用begin .....end替换(5)字符串连接用concat()函数;如SQLServer: Temp=’select * from ’+’tablename’+…+…MySql:Temp=concat(’select * from’, ’tablecname’,…,…)(6)mysql的uuid()对应sql的GUID();(7)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 参数传递值给存储过程。
(8)MySQL的if语句为if (条件) thenend if;或者If (条件) thenElseEnd if或者If(条件)thenElseif (注意不能写成Else if )Elseif…End if(9)Mysql的Execute对应SqlServer的exec;(注意:必须像下面这样调用)Set @cnt=’select * from 表名’;Prepare str from @cnt;Execute str;(10)MySql存储过程调用其他存储过程用callCall函数名(即SQLServer的存储过程名)(’参数1’,’参数2’,……)(11) mysql的日期○1获得当前日期函数:curdate(),current_date()○2获得当前时间函数:curtime();○3获得当前日期+时间:now();○4MySQL dayof... 函数:dayofweek(), dayofmonth(), dayofyear()分别返回日期参数,在一周、一月、一年中的位置。
(注:周日=1,周一=2,周二=3,……)○5返回本月的天数:select day(last_day(now()));○6MySQL 为日期增加一个时间间隔:date_add()select date_add(CURRENT_DATE(),interval ‘要增加的天数’ day) as Fdate○7MySQL 为日期减去一个时间间隔:date_sub()select date_sub('1998-01-01 00:00:00', interval '1 1:1:1' day_second);○8MySQL 日期、时间相减函数:datediff(date1,date2), timediff(time1,time2)○9MySQL 拼凑日期、时间函数:makdedate(year,dayofyear), maketime(hour,minute,second)例:select makedate(2001,31); -- '2001-01-31'select makedate(2001,32); -- '2001-02-01'○10本周时间(起始)select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-2 day) as Fdate○11本周时间(结束)select date_add(CURRENT_DATE(),interval dayofweek(curdate())+3 day) as Fdate○12上周时间(起始)select date_sub(CURRENT_DATE(),interval dayofweek(curdate())+5 day) as Fdate○13上周时间(结束)select date_sub(CURRENT_DATE(),interval dayofweek(curdate())-1 day) as Fdate○14本月时间(起始)select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE())-1 DAY) as Fdate○15本月时间(结束)Select date_add(current_date(),interval day(last_day(CURDATE())) -day(CURDATE()) day) as Fdate○16上月时间(起始)select DATE_SUB(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY),intervalday(last_day(DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY)))-1 day) as Fdate○17上月时间(结束)select DATE_SUB(CURDATE(),INTERVAL DAY(CURDATE()) DAY) as Fdate○18今年时间(起始)select makedate(year(curdate()),1) as FDate○19今年时间(结束)select DATE_SUB(makedate(year(curdate())+1,1) ,INTERVAL 1 day) as Fdate○20去年时间(起始)select makedate(year(curdate())-1,1) as Fdate○21去年时间(结束)select DATE_SUB(makedate(year(curdate()),1) ,INTERVAL 1 day) as FDate○22DATE_FORMAT(date,format):根据format字符串格式化date值。
下列修饰符可以被用在format 字符串中%M 月名字(January……December)%W 星期名字(Sunday……Saturday)%D 有英语前缀的月份的日期(1st, 2nd, 3rd, 等等。
)%Y 年, 数字, 4 位%y 年, 数字, 2 位%a 缩写的星期名字(Sun……Sat)%d 月份中的天数, 数字(00……31)%e 月份中的天数, 数字(0……31)%m 月, 数字(01……12)%c 月, 数字(1……12)%b 缩写的月份名字(Jan……Dec)%j 一年中的天数(001……366)%H 小时(00……23)%k 小时(0……23)%h 小时(01……12)%I 小时(01……12)%l 小时(1……12)%i 分钟, 数字(00……59)%r 时间,12 小时(hh:mm:ss [AP]M)%T 时间,24 小时(hh:mm:ss)%S 秒(00……59)%s 秒(00……59)%p AM或PM%w 一个星期中的天数(0=Sunday ……6=Saturday )%U 星期(0……52), 这里星期天是星期的第一天%u 星期(0……52), 这里星期一是星期的第一天%% 一个文字“%”。
例:所有的其他字符不做解释被复制到结果中。
mysql> select DATE_FORMAT('1997-10-04 22:23:00', '%W %M %Y');->'Saturday October 1997'mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H:%i:%s');-> '22:23:00'mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%D %y %a %d %m %b %j');->'4th 97 Sat 04 10 Oct 277'mysql>select DATE_FORMAT('1997-10-04 22:23:00', '%H %k %I %r %T %S %w');->'22 22 10 10:23:00 PM 22:23:00 00 6'(12)MySql存储过程中没有return函数,在MySql中可以用循环和out参数代替If EXISTS(SELECT * FROM T_Chance WHERE FCustID=CostomerID) return 0改写为:(在参数中定义一个out变量:out temp varchar(100);)BEGINLoop1:loopSELECT count(*) FROM T_Chance WHERE FCustID=CostomerID int @cntIf @cnt>0 thenbeginset temp=0;leave loop1;end;end ifend loop loop1;(13) select @a=count(*) from VW_Action 在mySql中修改为:select count(*) from VW_Action into @a;(14)MySQL中没有top关键字,需要用limit代替且放在后面注意,在MySQL中的limit不能放在子查询内,limit不同与SQLServer,它可以规定范围limit a,b——范围a-bSQL SERVER : select top 8 * from table1MYSQL: select * from table1 limit 5;(15)即使存储过程没有参数也要写括号“()”(16) 当一个存储过程中有创建临时表时create procedure up_test()begindrop table if exists tb1;create TEMPORARY table tb1//注意添加TEMPORARY table(id int,name varchar(20));//注意最后加分号insert tb1 values('1','jim');select * from tb1;end(17)建表中自增长问题:create table user(Id varchar(10) primary key auto_increment not null, Name varchar(20) not null,Password varchar(20),create_date datetime);auto_increment 自增长(18) "Unable to convert MySQL date/time value to System.DateTime"这是因为在日期列中有"0000-00-00"数据值,要修正这个问题,你可以把这些数据设为null,或者在连接字符串中设置"Allow Zero Datetime=True" 。