1. sqlserver中的数据类型与mysql之间的对应

    --sqlserver
    select * into xx from xx where = 只复制表结构
    select * into xx from xx where = 复制表结构和表数据 --mysql
    create table xx like xx; 只复制表结构
    create table xx as select * from xx; 复制表结构和表数据 mysql复制表结构/数据的时候,并不会复制主键,索引,自增列等任何属性,仅仅是简单拷数据,而sqlserver会拷贝自增列
    sqlserver mysql类型
    bit布尔型(true/false) boolean转换后变成tinyint(1/0)
    smalldatetime timestamp长度设为空
     varchar(max)  text
     nvarchar(max)  ntext
     varbinary(max)  image
    DATEDIFF(datepart,startdate,enddate)函数
    timestampdiff(unit,datetime_expr1,datetime_expr2)函数
    datediff(date1,date2):两个日期相减 date1 - date2,返回天数。
     CONVERT() 用不同的格式显示日期/时间  DATE_FORMAT() 用不同的格式显示日期/时间
  2. mysql存储过程实例
    例1、一个简单存储过程游标实例
    DELIMITER $$ 
    DROP PROCEDURE IF EXISTS getUserInfo $$
    CREATE PROCEDURE getUserInfo(in date_day datetime) -- 实例 -- 存储过程名为:getUserInfo
    -- 参数为:date_day
    -- 日期格式:--  
      BEGIN declare _userName varchar(); -- 用户名
    declare _chinese int ; -- 语文
    declare _math int ;    -- 数学
    declare done int; -- 定义游标
    DECLARE rs_cursor CURSOR FOR SELECT username,chinese,math from userInfo where datediff(createDate, date_day)=;
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=; -- 获取昨天的日期
    if date_day is null then  
     set date_day = date_add(now(),interval - day); -- 日期格式
    end if;
    open rs_cursor; 
    cursor_loop:loop  
     FETCH rs_cursor into _userName, _chinese, _math; -- 取数据    
    if done= then    
    leave cursor_loop;  
     end if;  
     -- 更新表  
     update infoSum set total=_chinese+_math where UserName=_userName; end loop cursor_loop; close rs_cursor;    
    END$$
    DELIMITER ;
  3. Mysql存储过程的使用:
    .定义变量
    
    MySQL中可以使用DECLARE关键字来定义变量。
    (MySQL中还可以使用DECLARE关键字来定义条件或者-
    MySQL中可以使用DECLARE关键字来定义处理程序)
    定义变量的基本语法如下: DECLARE var_name[,...] type [DEFAULT value]
    .为变量赋值 MySQL中可以使用SET关键字来为变量赋值。SET语句的基本语法如下: SET var_name = expr [, var_name = expr] ... MySQL中还可以使用SELECT…INTO语句为变量赋值。其基本语法如下: SELECT col_name[,…] INTO var_name[,…]
    FROM table_name WEHRE condition
    计算两个数之和
    create procedure pr_add (a int,b int)
    begin
    declare c int;
    if a is null then
    set a = ;
    end if;
    if b is null then
    set b = ;
    end if;
    set c = a + b;
    select c as sum;
    end
  4. mysql变量的定义
    MySQL存储过程中,定义变量有两种方式:
    .使用set或select直接赋值,变量名以 @ 开头.
    例如:set @var=;
    可以在一个会话的任何地方声明,作用域是整个会话,称为会话变量。 .以 DECLARE 关键字声明的变量,只能在存储过程中使用,称为存储过程变量,例如:
    DECLARE var1 INT DEFAULT ;
    主要用在存储过程中,或者是给存储传参数中。 两者的区别是:
    在调用存储过程时,以DECLARE声明的变量都会被初始化为 NULL。而会话变量(即@开头的变量)则不会被再初始化,在一个会话内,只须初始化一次,之后在会话内都是对上一次计算的结果,就相当于在是这个会话内的全局变量。 在存储过程中,使用动态语句,预处理时,动态内容必须赋给一个会话变量。
    例:
    set @v_sql= sqltext;
    PREPARE stmt FROM @v_sql;
    EXECUTE stmt;
    DEALLOCATE PREPARE stmt;
  5. mysql存储过程定义区别sqlserver
    三 语法定义
    3.1 注释符区别
    SqlServer的注释符为--和
    MySql的注释符为--和和# 3.2 识别符的区别
    MS SQL识别符是[],[type]表示他区别于关键字,但是MySQL却是 `,也就是按键1左边的那个符号 .3存储过程的区别(未经验证,从网上找的)
    mysql的存储过程中变量的定义去掉@; SQLServer存储过程的AS在MySql中需要用begin .....end替换 Mysql的Execute对应SqlServer的exec; (注意:必须想下面这样调用)
    Set @cnt=’select * from 表名’;
    Prepare str from @cnt;
    Execute str; MySql存储过程调用其他存储过程用call Call 函数名(即SQLServer的存储过程名)(’参数1’,’参数2’,……) select @a=count(*) from VW_Action 在mySql中修改为:select count(*) from VW_Action into @a; MySQL视图的FROM子句不允许存在子查询,因此对于SQL Server中FROM子句带有子查询的视图,需要手工进行迁移。可通过消除FROM子句中的子查询,或将FROM子句中的子查询重构为一个新的视图来进行迁移。
  6. MySql的out对应SQLServer的output,且mysql 的out要放在变量的前面,SQLServer的output放在变量后面:
  7. MySQL视图的FROM子句不允许存在子查询,因此对于SQL Server中FROM子句带有子查询的视图,需要手工进行迁移。可通过消除FROM子句中的子查询,或将FROM子句中的子查询重构为一个新的视图来进行迁移。
  8. 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’,…,…)
  9. 函数和数据类型的区别
    Date 函数
    MySQL Date 函数
    NOW() 返回当前的日期和时间
    CURDATE() 返回当前的日期
    CURTIME() 返回当前的时间
    DATE() 提取日期或日期/时间表达式的日期部分
    EXTRACT() 返回日期/时间按的单独部分
    DATE_ADD() 给日期添加指定的时间间隔
    DATE_SUB() 从日期减去指定的时间间隔
    DATEDIFF() 返回两个日期之间的天数
    DATE_FORMAT() 用不同的格式显示日期/时间 SQL Server Date 函数
    GETDATE() 返回当前日期和时间
    DATEPART() 返回日期/时间的单独部分
    DATEADD() 在日期中添加或减去指定的时间间隔
    DATEDIFF() 返回两个日期之间的时间
    CONVERT() 用不同的格式显示日期/时间 SQL 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 - 格式: 唯一的数字
  10. 日期类型 (201611)上个月和下个月的表达
    .1上一个月的表达方式
    _lastmomth=YEAR(DATE_SUB(CAST(CAST(_Curr_OrderDate*+ AS CHAR) AS DATETIME),INTERVAL MONTH))* + MONTH(DATE_SUB(CAST(CAST( _Curr_OrderDate*+ AS CHAR) AS DATETIME),INTERVAL MONTH));
    .2下一个月的表达方式
    _nextMonth=YEAR(DATE_ADD(CAST(CAST(_Curr_OrderDate*+ AS CHAR) AS DATETIME),INTERVAL MONTH))* + MONTH(DATE_ADD(CAST(CAST( _Curr_OrderDate*+ AS CHAR) AS DATETIME),INTERVAL MONTH));
    或者: SELECT EXTRACT(YEAR_MONTH FROM DATE_ADD(OperationTime,INTERVAL 1 MONTH)) FROM b_log WHERE id=1
    --变量:_Curr_OrderDate格式:--
    对比sqlserver表达方式如下:
     select  @lastmomth=year(DATEADD(m,-1,convert(datetime, cast( @Curr_OrderDate*100+10 as char), 112)))*100 + month(DATEADD(m,-1,convert(datetime, cast( @Curr_OrderDate*100+10 as char), 112)))
     
    select  @nextMonth=year(DATEADD(m,1,convert(datetime, cast( @Curr_OrderDate*100+10 as char), 112)))*100 + month(DATEADD(m,1,convert(datetime, cast( @Curr_OrderDate*100+10 as char), 112))) 取出返回日期单独的部分
    SELECT DATEPART(yyyy,OrderDate) AS OrderYear,
    DATEPART(mm,OrderDate) AS OrderMonth,
    DATEPART(dd,OrderDate) AS OrderDay
    FROM Orders
    WHERE OrderId=1
     

    如果日期格式为2016-06-07表示下个月,可以使用SELECT DATE_ADD('2016-07-06',INTERVAL 1 MONTH);

  11. 删除重复数据

    如果你想删除数据表中的重复数据,你可以使用以下的SQL语句:
    
    mysql> CREATE TABLE tmp SELECT last_name, first_name, sex
    -> FROM person_tbl;
    -> GROUP BY (last_name, first_name);
    mysql> DROP TABLE person_tbl;
    mysql> ALTER TABLE tmp RENAME TO person_tbl;
  12. mysql语句的导入导出
    1.1
    使用 SELECT ... INTO OUTFILE 语句导出数据
    在下面的例子中,生成一个文件,各值用逗号隔开。这种格式可以被许多程序使用。 SELECT a,b,a+b INTO OUTFILE '/tmp/result.text'
    FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"'
    LINES TERMINATED BY '\n'
    FROM test_table;
    1.2
    使用 LOAD DATA 导入数据
    以下实例中将从当前目录中读取文件 dump.txt ,将该文件中的数据插入到当前数据库的 mytbl 表中。 mysql> LOAD DATA LOCAL INFILE 'dump.txt' INTO TABLE mytbl;
  13. mysql查询今天、昨天、7天、近30天、本月、上一月 数据
    今天
    
    select * from 表名 where to_days(时间字段名) = to_days(now());
    
    昨天
    
    SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) <= 
    
    7天
    
    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL  DAY) <= date(时间字段名)
    
    近30天
    
    SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL  DAY) <= date(时间字段名)
    
    本月
    
    SELECT * FROM 表名 WHERE DATE_FORMAT( 时间字段名, '%Y%m' ) 
    
       = DATE_FORMAT( CURDATE( ) , '%Y%m' )
    
    上一月
    
    SELECT * FROM 表名 WHERE PERIOD_DIFF( date_format( now( ) , '%Y%m' ) , 
    
       date_format( 时间字段名, '%Y%m' ) ) =
    
    #查询本季度数据
    select * from `ht_invoice_information` where QUARTER(create_date)=QUARTER(now()); #查询上季度数据
    select * from `ht_invoice_information` where QUARTER(create_date) =QUARTER(DATE_SUB(now(),interval QUARTER)); #查询本年数据
    select * from `ht_invoice_information` where YEAR(create_date)=YEAR(NOW()); #查询上年数据
    select * from `ht_invoice_information` where year(create_date)=year(date_sub(now(),interval year)); 查询当前这周的数据
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now()); 查询上周的数据
    SELECT name,submittime FROM enterprise WHERE YEARWEEK(date_format(submittime,'%Y-%m-%d')) = YEARWEEK(now())-; 查询当前月份的数据
    select name,submittime from enterprise where date_format(submittime,'%Y-%m') =date_format(now(),'%Y-%m') 查询距离当前现在6个月的数据
    select name,submittime from enterprise where submittime between date_sub(now(),interval month) and now(); 查询上个月的数据
    select name,submittime from enterprise where date_format(submittime,'%Y-%m') =date_format(DATE_SUB(curdate(), INTERVAL MONTH),'%Y-%m') select * from ` user ` where DATE_FORMAT(pudate, ' %Y%m ' ) = DATE_FORMAT(CURDATE(), ' %Y%m ' ) ; select * from user where WEEKOFYEAR(FROM_UNIXTIME(pudate,'%y-%m-%d')) = WEEKOFYEAR(now()) select * from user where MONTH (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = MONTH (now()) select * from [ user ] where YEAR (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = YEAR (now()) and MONTH (FROM_UNIXTIME(pudate, ' %y-%m-%d ' )) = MONTH (now()) select * from [ user ] where pudate between 上月最后一天 and 下月第一天 where date(regdate) = curdate(); select * from test where year(regdate)=year(now()) and month(regdate)=month(now()) and day(regdate)=day(now()) SELECT date( c_instime ) ,curdate( ) FROM `t_score` WHERE LIMIT ,
  14. 备份的不同
    1.0 SQLSERVER逻辑备份:
    
    BACKUP DATABASE test TO DISK='c:\test.bak'
    BACKUP LOG test TO DISK='c:\test_log.bak' --第一个SQL是完整备份test库,如果加上WITH DIFFERENTIAL就是差异备份
    --第二个SQL是备份test库的日志 2.0 生成脚本的数据库 要选择架构和数据,并且要选择索引,这样就会生成表的数据、定义、索引

    还原

    用mysql命令将school_2014--.sql文件中的备份导入到数据库中
    
    mysql -u root -h 127.0.0.1 -p school<c:\school_2014--.sql

mysql与sqlserver之间的关系转换的更多相关文章

  1. MySql系列表之间的关系

    foreign key 快速理解foreign key   员工信息表有三个字段:工号  姓名  部门 公司有3个部门,但是有1个亿的员工,那意味着部门这个字段需要重复存储,部门名字越长,越浪费 数据 ...

  2. mysql数据库表格之间的关系

    外键 昨日内容回顾: 字段类型 约束条件 创建表的完整语法 create table 表名( 字段名 字段类型[(宽度) 约束条件], 字段名 字段类型[(宽度) 约束条件], 字段名 字段类型[(宽 ...

  3. 关于Apache,Mysql,PHP之间的关系

    声明:以下为作者原创,转载请注明文章来源地址. 通过百度百科我们知道 Apache(全称Apache HTTP Server):是世界使用排名第一的Web服务器软件.可以在大多数计算机操作系统中运行, ...

  4. mysql中相关,无关子查询,表与表之间的关系以及编码和乱码的解决

    ※MySQL中的字符编码(注意,utf8中没有'-',跟Java中不一样)SHOW VARIABLES; //查看系统变量//查询字符编码相关的系统变量SHOW VARIABLES WHERE var ...

  5. MySQL表与表之间的关系详解

    外键 说到表与表之间的关系就不得不说到一个关键词:外键 MySQ中的外键是什么,和表与表之间有什么关联? 外键(foreign key)又叫外连接, 在数据库中发挥着重要的作用 尤其是对于表和表之间的 ...

  6. SQLite与MySQL、SQLServer等异构数据库之间的数据同步

    SQLite DBSync是开源嵌入式数据库SQLite的数据同步引擎,实现了SQLite与SQLite数据库之间以及SQLite与异构数据库(Oracle.MySQL.SQLServer)之间的增量 ...

  7. MySQL数据库:SQL语句基础、库操作、表操作、数据类型、约束条件、表之间的关系

    数据库相关概念: 1. 数据库服务器:运行数据库管理软件的计算机 2. 数据库管理软件:MySQL.Oracle.db2.slqserver 3. 库:文件夹,用来组织文件/表 4. 表:文件(类似于 ...

  8. MySQL 表之间的关系

    表之间的关系 # 定义一张部门员工表 emp id name gander dep_name dep_desc 1 ming male 教学部 教书 2 lilei male 教学部 教书 3 ham ...

  9. mysql 中表与表之间的关系

    如何找出两张表的对应关系 分析步骤: 1.先找出左表的角度去找 ​ 是否左表的多条记录可以对应右表的一条记录,如果是,则证明左表的一个字段foreign key 右表一个字段 (通常是id) 2.再站 ...

随机推荐

  1. JSON入门教程

    尽管有许多宣传关于 XML 如何拥有跨平台,跨语言的优势,然而,除非应用于 Web Services,否则,在普通的 Web 应用中,开发者经常为 XML 的解析伤透了脑筋,无论是服务器端生成或处理 ...

  2. SAP Query工具(一 Overview)

    SAP提供了3种Query工具 1,SAP Query 2,InfoSet (Ad Hoc) Query 3,QuickViewer 一般说Query是指第一种,SAP Query 1,SAP Que ...

  3. wcf 同时支持webhttp 和 引用方式

    wcf 实现参考 http://www.cnblogs.com/mingmingruyuedlut/p/4223116.html 兼容两种方式 1.修改服务端webconfig <system. ...

  4. 手机响应式js轮播基础

    onmousedown --->ontuchstart onmousemove --->ontouchmove onmouseup --->ontouchend ontuchstar ...

  5. linux screen 命令详解

    一.背景 系统管理员经常需要SSH 或者telent 远程登录到Linux 服务器,经常运行一些需要很长时间才能完成的任务,比如系统备份.ftp 传输等等.通常情况下我们都是为每一个这样的任务开一个远 ...

  6. CSS下拉列表错误纠正

    上一篇关于CSS制作下来列表的错误纠正. 在上一篇中,用CSS只做了下拉列表,但是鼠标不放在导航栏上的时候,下拉列表也是出来的.具体错误就是 div ul{ list-style:none; max- ...

  7. IMPORT FROM 表数据导入

    Syntax IMPORT FROM [<file_type>] <file_path> [INTO <table_name>] [WITH <import_ ...

  8. C++ 应用处理异常崩溃(转载)

    有时,在我们的程序运行的时候,会遇到一些崩溃问题,尤其是概率出现的时候,如果能捕获其异常,那么对于我们快速定位bug是很有帮助的 这里借用网上搜寻回来的函数,记录一下: 头文件及库: #include ...

  9. Node聊天程序实例03:chat.js

    作者:vousiu 出处:http://www.cnblogs.com/vousiu 本实例参考自Mike Cantelon等人的<Node.js in Action>一书. chat.j ...

  10. iOS控制器之基类设计

    题记 在进入新公司后.经过这一个月的重构项目,终于把项目做到了个人相对满意的程度(还有一种不满意的叫老板的需求,提过多次意见也没用= =!).在这次重构中按照以前的思路设计出了个人觉得比较适用的一个基 ...