【Mysql】生成Sqlserver创建表语句

sql:

DROP VIEW
IF EXISTS `V_TableToSqlserverText`;

CREATE ALGORITHM = UNDEFINED
DEFINER = `root`@`localhost`
SQL SECURITY DEFINER
VIEW `V_TableToSqlserverText` AS (
  SELECT TABLE_NAME tablename,rownum,sqltext
	FROM(
	SELECT TABLE_NAME,0 rownum,sqltext FROM (
		SELECT c.TABLE_NAME,CONCAT(‘if object_id(‘‘‘,c.TABLE_NAME,‘‘‘,‘‘U‘‘) is not null
drop table [‘,c.TABLE_NAME,‘];
CREATE TABLE ‘,c.TABLE_NAME,‘ (‘) sqltext
		FROM information_schema.`TABLES` c
		WHERE c.TABLE_SCHEMA=‘sevenblog‘
		AND c.TABLE_TYPE =‘BASE TABLE‘
	) startSql
	UNION ALL
	SELECT c.TABLE_NAME,c.ORDINAL_POSITION rownum,
		CONCAT(‘	‘,
			CASE
			WHEN c.ORDINAL_POSITION >1 THEN ‘,‘
			ELSE ‘‘
			END,
			‘[‘,
			c.COLUMN_NAME,
			‘] ‘,
			(
			CASE
				WHEN c.COLUMN_KEY = ‘PRI‘ THEN ‘uniqueidentifier‘
				WHEN c.DATA_TYPE = ‘varchar‘ THEN CONCAT(‘n‘,c.DATA_TYPE,‘(‘,c.CHARACTER_MAXIMUM_LENGTH,‘)‘)
				ELSE c.DATA_TYPE
			END
			),
			‘ ‘,
			CASE
			WHEN c.IS_NULLABLE = ‘NO‘ THEN ‘not null‘
			ELSE ‘null‘
			END,
			‘ ‘,
			(
			CASE
				WHEN LENGTH(c.COLUMN_DEFAULT)>0 THEN CONCAT(‘default ‘,‘(‘,
					(
						CASE
						WHEN c.COLUMN_DEFAULT = ‘CURRENT_TIMESTAMP‘ THEN ‘getdate()‘
						WHEN c.DATA_TYPE =‘varchar‘ THEN CONCAT(‘‘‘‘,c.COLUMN_DEFAULT,‘‘‘‘)
						ELSE CONCAT(c.COLUMN_DEFAULT)
						END
					),‘)‘)
				ELSE ‘‘
			END
			),
			CASE
			WHEN c.COLUMN_KEY = ‘PRI‘ THEN ‘primary key‘
			ELSE ‘‘
			END
		) sqltext
		FROM information_schema.columns c
		JOIN information_schema.`TABLES` b ON c.TABLE_NAME = b.TABLE_NAME
		WHERE b.TABLE_SCHEMA=‘sevenblog‘
		AND b.TABLE_TYPE =‘BASE TABLE‘
		UNION ALL
		SELECT TABLE_NAME,100 rownum,sqltext  from (
			SELECT c.TABLE_NAME,CONCAT(‘);‘) sqltext
			FROM information_schema.`TABLES` c
			WHERE c.TABLE_SCHEMA=‘sevenblog‘
			AND c.TABLE_TYPE =‘BASE TABLE‘
		) endStr
	) tablesql
	ORDER BY tablesql.TABLE_NAME,tablesql.rownum
);

  

结果如下

生成sql

if object_id(‘login_log‘,‘U‘) is not null
drop table [login_log];
CREATE TABLE login_log (
	[Id] uniqueidentifier not null primary key
	,[UserID] int not null
	,[Ipaddress] nvarchar(100) not null
	,[Ipproxy] nvarchar(100) not null
	,[System] nvarchar(100) not null default (‘ ‘)
	,[Option] int null
	,[EnumDataEntityStatus] int not null default (0)
	,[CreateTime] datetime null default (getdate())
	,[LastUpdateTime] datetime null default (getdate())
	,[CreateOperator] nvarchar(50) null
	,[LastUpdateOperator] nvarchar(50) null
);
if object_id(‘users‘,‘U‘) is not null
drop table [users];
CREATE TABLE users (
	[Id] uniqueidentifier not null primary key
	,[Account] nvarchar(255) not null
	,[Password] nvarchar(255) not null
	,[Name] nvarchar(255) not null default (‘ ‘)
	,[Sex] int null
	,[EnumDataEntityStatus] int not null default (0)
	,[BizCode] nvarchar(255) not null default (‘ ‘)
	,[TypeId] int not null default (0)
	,[TypeName] nvarchar(30) null
	,[CreateTime] datetime null default (getdate())
	,[LastUpdateTime] datetime null default (getdate())
	,[CreateOperator] nvarchar(50) null
	,[LastUpdateOperator] nvarchar(50) null
);

  

原文地址:https://www.cnblogs.com/Seven77yixuan/p/10981223.html

时间: 2024-07-30 02:28:14

【Mysql】生成Sqlserver创建表语句的相关文章

Oracle、Mysql、SqlServer创建表和给表和字段加注释

一.Oracle --创建表 create table test ( id varchar2(200) primary key not null, sort number, name varchar(200) ) --字段加注释 comment on column test.id is 'id'; comment on column test.sort is '序号'; --表加注释 comment on table test is '测试表'  二.Mysql --创建表 create tab

Oracle创建表语句(Create table)语法详解及示例

Oracle创建表语句(Create table)语法详解及示例   创建表(Create table)语法详解1. ORACLE常用的字段类型ORACLE常用的字段类型有VARCHAR2 (size) 可变长度的字符串, 必须规定长度CHAR(size) 固定长度的字符串, 不规定长度默认值为1NUMBER(p,s) 数字型p是位数总长度, s是小数的长度, 可存负数最长38位. 不够位时会四舍五入.DATE 日期和时间类型LOB 超长字符, 最大可达4GCLOB 超长文本字符串BLOB 超长

MySql存储过程动态创建表并插入数据

最近做的一个项目,数据库用的是MySql,对于MySql不是很熟练,只是会简单的应用,毕竟简单的sql语句还是相通的,但是随着项目的深入复杂的sql语句开始慢慢多起来,其中一个小难点就是要根据当天的日期动态创建表,并且向其中插入数据. 具体逻辑可以理解为,先去数据库查询有没有当天的记录表,如果没有则创建表,然后执行当天的日志写入. Mysql的可视化工具我们用的是navicat,相对来说还是比较好用,当然没有sqlserver 那么人性化(很多快捷键不支持,操作累赘).下面我就来说一说用navi

用PowerDesigner生成自定义建表语句

原文:用PowerDesigner生成自定义建表语句 我们经常用PowerDesigner来进行数据库表结构的设计,并且设计出来的表比较直观的看出之间的相互关系,方便理解:但其自动生成的脚本并不一定符合我们实际需求,所以需要经过一定配置后才能真正达到要求,下面用一个简单的案例来学习如何配置PD. 需求: 这里假设数据库代码版本维护是通过sql脚本文件来管理的,构造可重复执行的创建表.添加字段.索引等 用PowerDesigner生成符合自己实际需求的脚本,要求如下 1.建表语句可重复执行 2.表

SQLserver创建表

作者:gw ? ?转载注明出处 ? ? sql语句创建表的格式: ? CREATE TABLE ?<表名>? ?( ? ? ?<列名> ?<数据类型> [列级完整性约束条件] ? [,< 列名> <数据类型> [列级完整性约束条件]-] ? [,<表级完整性约束条件>]? ? ); ? ? --上面就是建立表的格式 如果看不懂的话 建议搜索下正则表达式? ? ? --下面我们就来建立几张表吧! ? ? 1.先建立一个数据库 creat

4-20 mysql 整理 (建表语句和mysql命令)

create  table  [if not exists] 表名(    字段1 数据类型 [约束或索引列表],    字段2 数据类型 [约束或索引列表]) [表选项列表];#虚拟表的概念:将查询出来的结果(一张表) 当做表来操作#讲虚拟表保存起来(放到变量里面)这就是视图#创建用于登录的表  drop table if exists login;  如果存在就删掉新建  create table login(    userid varchar(20) not null primary k

mysql、sqlserver关联表批量修改

一.mysql关联表批量修改 UPDATE sp_sys_dictionaries_category a #根据对应id,把b.username的值赋给a.username LEFT JOIN sp_sys_dictionaries b ON b.cid = a.id SET a.username = b.username 二.sqlserver关联表批量修改 UPDATE a SET a.FLONGYARN = b.ORGID --根据对应id,把b.ORGID的值赋给a.FLONGYARN

myql查询创建表语句SHOW CREATE TABLE table_name

技术背景:刚开始学习MySQL时候,有时偷懒,会用SHOW CREATE TABLE 表名\G来复制表创建语句,可是当运行的时候总会因为"表名和列名上有单引号",提示语法错误不能运行.问题列表:1,为什么会出错呢?2,有什么解决方法?解决问题:1,分析show create table拷贝的语句出错原因1.1 重现过程1.1.1 创建测试表test,并通过show create table test取得表的创建语句,可见表名,列名都用引号包着.mysql> create tabl

mysql导入sqlserver数据库表

原文:https://zhidao.baidu.com/question/1114325744502691499.html 在Navicat for MySQL 管理器中,创建目标数据库(注意:因为是点对点的数据导入,要求sql server 中要导出的数据库名称和要导入到Mysql 中的数据库的名字相同) 点击创建好的目标数据库website点的”表“一项,在右边会出现导入向导选项. 选择SQL Server数据库ODBC,“下一步”,数据链接属性-SQL SERVER ODBC 创建访问SQ