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

select top 0 * into testAAA FROM tbl_User --sqlserver方法一复制表结构

select * into testAAA FROM tbl_User --sqlserver复制表结构和数据

INSERT INTO testAAA SELECT * FROM tbl_User --sqlserver复制数据

CREATE TABLE testB SELECT * FROM testa limit 0; mysql复制表结构CREATE TABLE testC SELECT * FROMtesta mysql复制表结构并复制数据INSERT INTO testB SELECT * FROMtesta MySQL复制数据

还有一种方法createtable if not exists good LIKElee 创建像表Lee一样结构的good表select ROW_NUMBER()over( partition by officeid order by userid )as id, * fromtbl_User sqlserver中表示根据officeid分组 然后根据userid排序select ROW_NUMBER()over( order by officeid )as id, * from tbl_User 根据officeid排序

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

call testrank()  ---分组排序

create PROCEDUREtestrank()BEGIN

set @num=0;set @pdept=null;SELECTresult.empid,result.deptid,result.salary,result.rankFROM (SELECTs.empid,s.deptid,s.salary,if(@pdept=s.deptid,@num:=@num+1,@num:=1) asrank,@pdept:=s.deptidFROM heyf_t10 s order by s.deptid asc ,s.salary desc)result ;end

排序

call testpaixus()

create PROCEDUREtestpaixus()BEGIN

set @num = 0;select s.empid,s.deptid,s.salary, (@num:=@num+1 )as rank fromheyf_t10 s ;end

取得前一次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用法

create PROCEDUREtestp19(in ids varchar(20)

)BEGIN

--DECLARE strsql VARCHAR (2000);

set @strsql=concat('SELECT * from categories where id in (',ids ,')');prepare str from @strsql;EXECUTE str;endcall testp19('1,3,5')prepare strppp from 'SELECT * from categories';EXECUTE strppp;

Mysql ON子句和USING子句

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

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

例如:

[sql]

SELECTf.color, c.is_primary, c.is_dark, c.is_rainbowFROMflags fINNER JOIN color c ON f.color =c.colorWHERE f.country = 'China';

等价于

[sql]

SELECTf.color, c.is_primary, c.is_dark, c.is_rainbowFROMflags fINNER JOINcolor c USING(color)WHERE f.country = 'China';

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

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

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

1526caf3ce91ff13bfc73cbe4e5943a4.png

as 与=在mysql中是不同的

这里还是变量定义问题

update testa set uaddress=(select mytes as ddd from testa where id=37) where id=3; 这个是不行的 同一个表update testb set uaddress=(select mytes as ddd from testa where id=37) where id=3; 这个是可以的两个表create PROCEDURE testp27(in isx int)BEGIN

DECLARE xxx VARCHAR(20);set xxx=(select mytes as ddd from testa where id=37);update testa set uaddress=xxx where id=isx ;end

drop PROCEDUREtestp27

call testp27(2) 这个可以的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值