mysql和mssql数据库快速创建表格 五

1select top 0 * into testAAA FROM tbl_User --sqlserver方法一复制表结构 2select * into testAAA FROM tbl_User --sqlserver复制表结构和数据 3INSERT INTO testAAA SELECT * FROM tbl_User --sqlserver复制数据 4 5CREATE TABLE testB SELECT * FROM testa limit 0; mysql复制表结构 6CREATE TABLE testC SELECT * FROM testa mysql复制表结构并复制数据 7INSERT INTO testB SELECT * FROM testa MySQL复制数据 8还有一种方法create table if not exists good LIKE lee 创建像表Lee一样结构的good表 9select ROW_NUMBER()over( partition by officeid order by userid )as id, * from tbl_User sqlserver中表示根据officeid分组 然后根据userid排序 10select ROW_NUMBER()over( order by officeid )as id, * from tbl_User 根据officeid排序

MySQL实现上面两个例子用一下方法

call testrank()  ---分组排序

1create PROCEDURE testrank() 2BEGIN 3set @num=0; 4set @pdept=null; 5SELECT result.empid,result.deptid,result.salary,result.rank 6FROM (SELECT s.empid,s.deptid,s.salary, 7 if(@pdept=s.deptid,@num:=@num+1,@num:=1) as rank, 8 @pdept:=s.deptid 9 FROM heyf_t10 s order by s.deptid asc ,s.salary desc )result ; 10end

排序

call testpaixus()

1create PROCEDURE testpaixus() 2BEGIN 3 set @num = 0 ; 4 select s.empid,s.deptid,s.salary, (@num:=@num+1 )as rank from heyf_t10 s ; 5end

取得前一次MySQL操作所影响的记录行数

mysql_affected_rows() 返回最近一次与 连接句柄 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数.FOUND_ROWS() : select ROW_COUNT() : update delete insert.

FOUND_ROWS() : select

ROW_COUNT() : update delete insert.

MYSQL的函数中,SELECT是另外一个单独的函数 FOUND_ROWS() , UPDATE等是 ROW_COUNT()

--------------------------------------MySQL 的CAST()和CONVERT()函数可用来获取一个类型的值,并产生另一个类型的值。两者具体的语法如下:

1.CAST(value as type);

2. CONVERT(value, type);

就是CAST(xxx AS 类型), CONVERT(xxx,类型)。

可以转换的类型是有限制的。这个类型可以是以下值其中的一个:

二进制,同带binary前缀的效果 : BINARY    

字符型,可带参数 : CHAR()     

日期 : DATE     

时间: TIME     

日期时间型 : DATETIME     

浮点数 : DECIMAL      

整数 : SIGNED     

无符号整数 : UNSIGNED 

  下面举几个例子:

例一

1mysql> SELECT CONVERT('23',SIGNED);

2+----------------------+

3| CONVERT('23',SIGNED) |

4+----------------------+

5|                   23 |

6+----------------------+

71 row in set

例二

1mysql> SELECT CAST('125e342.83' AS signed);

2+------------------------------+

3| CAST('125e342.83' AS signed) |

4+------------------------------+

5|                          125 |

6+------------------------------+

71 row in set

例三

1mysql> SELECT CAST('3.35' AS signed);

2+------------------------+

3| CAST('3.35' AS signed) |

4+------------------------+

5|                      3 |

6+------------------------+

71 row in set

像上面例子一样,将varchar 转为int 用 cast(a as signed),其中a为varchar类型的字符串。

例4

在SQL Server中,下面的代码演示了datetime变量中,仅包含单纯的日期和单纯的时间时,日期存储的十六进制存储表示结果。

01DECLARE @dt datetime

02

03--单纯的日期

04SET @dt='1900-1-2'

05SELECT CAST(@dt as binary(8))

06--结果: 0x0000000100000000

07

08--单纯的时间

09SET @dt='00:00:01'

10SELECT CAST(@dt as binary(8))

11--结果: 0x000000000000012C

MySQL的类型转换和SQL Server一样,就是类型参数有点点不同:CAST(xxx AS 类型) , CONVERT(xxx,类型)。

MySQL prepare****用法

1create PROCEDURE testp19( 2in ids varchar(20) 3) 4BEGIN 5 -- DECLARE strsql VARCHAR (2000); 6 set @strsql=concat('SELECT * from categories where id in (',ids ,')'); 7 prepare str from @strsql; 8 EXECUTE str; 9end 10call testp19('1,3,5') 11prepare strppp from 'SELECT * from categories'; 12EXECUTE strppp;

Mysql ON子句和USING****子句

Mysql 中联接SQL语句中,ON子句的语法格式为:table1.column_name = table2.column_name。

当模式设计对联接表的列采用了相同的命名样式时,就可以使用 USING 语法来简化 ON 语法,格式为:USING(column_name)。

例如:

[sql]

1SELECT f.color, c.is_primary, c.is_dark, c.is_rainbow 2FROM flags f 3INNER JOIN color c ON f.color = c.color 4WHERE f.country = 'China';

等价于

[sql]

1SELECT f.color, c.is_primary, c.is_dark, c.is_rainbow 2FROM flags f 3INNER JOIN color c USING(color) 4WHERE f.country = 'China';

注意datediff 在MySQL于SqlServer中两个参数位置是相反的。

MySQL中  DATE_ADD(now(),INTERVAL 5 day) 与SqlServer中的

select dateadd(day,5,GETDATE()),select (getdate()-1) 效果是一样的

as 与=在mysql中是不同的

这里还是变量定义问题

1update testa set uaddress=(select mytes as ddd from testa where id=37) where id=3 ; 这个是不行的 同一个表 2 3 update testb set uaddress=(select mytes as ddd from testa where id=37) where id=3 ; 这个是可以的两个表 4 5 6create PROCEDURE testp27(in isx int) 7BEGIN 8 DECLARE xxx VARCHAR(20); 9 set xxx=(select mytes as ddd from testa where id=37); 10 update testa set uaddress=xxx where id=isx ; 11end 12drop PROCEDURE testp27 13call testp27(2) 这个可以的
点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )