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. 学习视频更新管理,对于前面数据库视频资料,以及.net资料失效感到抱歉

    首先,对不起,各位网友,我知道也都是好学的的人才会来查找视频,抱歉视频失效了.以后有需要的可以常联系我,有错误定当及时改正.如有延误多多包含. 上一次发的.net学习视频失效了,我决定帮大家多找一些学 ...

  2. CSS下拉列表错误纠正

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

  3. 水平垂直居中div(css3)

    一.在需要居中的元素加上如下C3属性即可: <!doctype html><html lang="en"><head> <meta cha ...

  4. python pyqt4 ide eric安装

    注意事项 关于python,pyqt的版本 笔者安装的是eric,原来电脑安装的是64位的python,32位的pyqt4,导致系统找不到pyqt,后来更换python版本为32搞定,猜测pyqt的版 ...

  5. DBUTIL 调用存储过程例子

    执行存储过程和执行select查询相比,无非就是SQL语句不同.下面是一个用存储过程查记录的例子.根据你的数据库不同和域对象不同,此代码要修改 Java code   ? 1 2 3 4 5 Quer ...

  6. asp.net 时间操作

    /*在dt上加天数*/ DateTime dt = DateTime.Now.AddDays(); /*将指定的天数加到此实例的值上: 即以当前日期为基础的情况下上加上30天.*/ DateTime ...

  7. jq checkbox 的全选并ajax传参

    /全选按钮 $("#all").click(function(){ if(this.checked){ $(":checkbox").prop("ch ...

  8. 使用SQL语句查询每张表的column name

    exec sp_columns tableName 上面这行代码可以查出该表所有的column,改为sp_pkeys,可以查出该表的主键.但是我如果想只查出column name,select COL ...

  9. L2TP协议

    L2TP协议 L2TP(Layer 2 Tunneling Protocol) 第二层隧道协议.该协议是工业标准的Internet隧道协议. L2TP实现的两种方式 LAC (L2TP Access ...

  10. arm指令周期

    1.大部分算术运算和逻辑运算指令都是单周期的,例如加法.减法.位级运算和移位 2.乘法指令根据操作数位数的不同,从2-5个周期都有可能. 3.无条件跳转语句和跳转语句成功跳转,需要重新填充流水线,因此 ...