数据库建表

数据库建表,第1张

CREATE TABLE [学生] (

[学号] [int] NOT NULL ,

[姓名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,

[性别] [nvarchar] (1) COLLATE Chinese_PRC_CI_AS NULL ,

[系号] [int] NULL ,

[年龄] [int] NULL

) ON [PRIMARY]

CREATE TABLE [系表] (

[系号] [int] NOT NULL ,

[系名] [nvarchar] (10) COLLATE Chinese_PRC_CI_AS NULL ,

[系主任] [nvarchar] (50) COLLATE Chinese_PRC_CI_AS NULL

) ON [PRIMARY]

ALTER TABLE [学生] ADD

CONSTRAINT [PK_学生] PRIMARY KEY CLUSTERED

(

[学号]

) ON [PRIMARY]

ALTER TABLE [系表] ADD

CONSTRAINT [PK_系表] PRIMARY KEY CLUSTERED

(

[系号]

) ON [PRIMARY]

ALTER TABLE [学生] ADD

CONSTRAINT [FK_学生_系表] FOREIGN KEY

(

[系号]

) REFERENCES [系表] (

[系号]

) ON DELETE CASCADE ON UPDATE CASCADE

一、迁移Database

Schema。

首先使用Sybase

Powerdesigner的逆向工程功能,逆向出SQL

Server数据库的物理模型。具体 *** 作是在Powerdesigner中选择“File”,“Reverse

Engine”再选择Database,将DBMS选择为SQL

Server

然后选择数据源,也就是要具体连接到的SQL

Server数据库服务器,然后选择要逆向的数据库名,比如选中“WSS_Content_80”

单击确定即可生成物理模型图,然后单击“Database”菜单下的Change

Current

DBMS修改当前的DBMS,改为MySQL

50,单击确定后即可生成MySQL的物理模型

然后单击“Database”菜单下的“Generate

Database”生成数据库脚本文件

接下来手工修改下生成的脚本的内容。将其中的dbo全部替换成空,将create

user这样的语句删除掉。

如果有些字符在MySQL中是关键字,那么必须使用“`”(键盘上数字1左边那个符合)符合框起来。

加上MySQL所需要的存储引擎比如每个建表语句后跟上:

ENGINE

=

INNODB

CHARACTER

SET

utf8

COLLATE

utf8_general_ci;将生成的脚本在MySQL中去运行一次即可创建数据库。

二、迁移数据内容

数据内容只能通过生成INSERT语句的方式来做。

首先使用SSMS的“生成脚本”功能(在数据库上右键,选择“任务”“生成脚本”选项),可以为SQL

Server数据库中的数据生成插入脚本。

首先选择要迁移数据的表,这里我们全选所有的表

然后单击下一步,选择将脚本保存到新的查询窗口

单击“高级”选项,在高级选项窗口中选择“要编写脚本的数据的类型”为仅限数据

然后“确定”再下一步下一步即可生成INSERT脚本文件

修改生成的脚本文件,主要有以下几项修改:

使用批量替换的方式去掉[

]这是SQL

Server的符合,在MySQL中不用这个。

使用批量替换的方式去掉dbo

有些单词在MySQL中是关键字的,那么需要使用“`”引起来。

关于Datetime类型的数据,需要手工修改下,SQL

Server默认生成的是这样的语句,在MySQL中是没办法解析的:

CAST(0x00009EEF00000000

AS

DateTime)

为每一行添加一个;表示一个插入语句结束。这个分号在SQL

Server中可以不需要,但是在MySQL中是必须的。简单的方法是使用高级的文本编辑器(比如Notepad++),将\r\n替换为;\r\n即可。

中国生物医学文献数服务系统(SinoMed)属于中文参考数据库。根据相关公开信息查询:中国生物医学文献数服务系统(SinoMed)是由中国医学科学院医学信息研究所/图书馆研制,2008年首次上线服务,整合了中国生物医学文献数据库(CBM)、中国生物医学引文数据库(CBMCI)、西文生物医学文献数据库(WBM)、北京协和医学院博硕学位论文库(PUMCD)等。

1、更改服务器的编码方式,在终端输入以下命令:

mysqld--character-set-server=gbk--collation-server=gbk_chinese_ci;

2、更改某个数据库的编码方式

mysql-uroot-p

alterdatabasecharactersetgbkcollategbk_chinese_ci;

3、在创建数据库时指定编码:

mysql-uroot-p 

createdatabasedb_namecharactersetgbkcollategbk_chinese_ci;

4、更改某个表的编码方式

mysql-uroot-pdb_name

altertabletable_nameconvertto charachtersetgbkcollategbk_chinese_ci;

5、在创建表时指定编码方式

mysql-uroot-pdb_name

createtabletable_name()charactersetgbkcollategbk_chinese_ci;

6、更改某行的编码方式

mysql-uroot-pdb_name

altertabletable_namemodifycolumn_namevarchar(20)charactersetgbkcollategbk_chinese_ci;

7、在创建列时指定编码方式:

</pre><prename="code"class="sql">mysql-uroot-pdb_name

createtabletable_name(,col1varchar(20)charactersetgbkcollategbk_chinese_ci,)charactersetutf8collateutf8_general_ci;

利用sql语句进行修改,举例说明:

1、ALTER TABLE `test` DEFAULT CHARACTER SET utf8;该命令用于将表test的编码方式改为utf8;

2、ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 该命令用于将表test中name字段的编码方式改为utf8

数据虽然完全相同,但是的两个数据库实例的COLLATE设置不同,两者不兼容。这种情况通常出现在与临时表进行连接的时候。临时表创建在tempdb数据库里,它默认是继承了SQL Server实例的COLLATE设置。如果你的用户数据库是从另外一台服务器附加上来的话,很可能是另一中COLLATE设置。两者不兼容就会出现这种错误。

解决办法:可以在创建临时表时,为文本字段指定 COLLATE DATABASE_DEFAULT, 从而明确指定从当前用户数据库继承 COLLATE 设置。

这个错误是说明你没有权限创建数据库

在CREATE DATABASE IF NOT EXISTS `mvm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;前面加上--,把创建数据库注释掉

--CREATE DATABASE IF NOT EXISTS `mvm` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

MySQL数据库的导入,有两种方法:

1) 先导出数据库SQL脚本,再导入;

2) 直接拷贝数据库目录和文件。

在不同 *** 作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。

所以一般推荐用SQL脚本形式导入。下面分别介绍两种方法。

2 方法一 SQL脚本形式

*** 作步骤如下:

21 导出SQL脚本

在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump命令行,导出SQL脚本。

211 用phpMyAdmin工具

导出选项中,选择导出“结构”和“数据”,不要添加“DROP DATABASE”和“DROP TABLE”选项。

选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。

将导出的SQL文件保存下来。

212 用mysqldump命令行

命令格式

mysqldump -u用户名 -p 数据库名 > 数据库名sql

范例:

mysqldump -uroot -p abc > abcsql

(导出数据库abc到abcsql文件)

提示输入密码时,输入该数据库用户名的密码。

22 创建空的数据库

通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。

23 将SQL脚本导入执行

同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。

231 用phpMyAdmin工具

从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。

在"SQL"菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。

注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件

比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。

gzip使用方法:

# gzip xxxxxsql

得到

xxxxxsqlgz文件。

提示输入密码时,输入该数据库用户名的密码。

3 直接拷贝

如果数据库比较大,可以考虑用直接拷贝的方法,但不同版本和 *** 作系统之间可能不兼容,要慎用。

31 准备原始文件

用tar打包为一个文件

32 创建空数据库

33 解压

在临时目录中解压,如:

cd /tmp

tar zxf mydbtargz

34 拷贝

将解压后的数据库文件拷贝到相关目录

cd mydb/

cp /var/lib/mysql/mydb/

对于FreeBSD:

cp /var/db/mysql/mydb/

35 权限设置

将拷贝过去的文件的属主改为mysql:mysql,权限改为660

chown mysql:mysql /var/lib/mysql/mydb/

chmod 660 /var/lib/mysql/mydb/

创建存储过程:

CREATE PROCEDURE [dbo][sys_viewTableSpace]

AS

BEGIN

SET NOCOUNT ON;

CREATE TABLE [dbo]#tableinfo(

表名 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

记录数 [int] NULL,

预留空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

使用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

索引占用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL,

未用空间 [varchar](50) COLLATE Chinese_PRC_CI_AS NULL

)

insert into #tableinfo(表名, 记录数, 预留空间, 使用空间, 索引占用空间, 未用空间)

exec sp_MSforeachtable "exec sp_spaceused ''"

select from #tableinfo

order by 记录数 desc

drop table #tableinfo

END

使用的时候直接 :exec sys_viewtablespace

以上就是关于数据库建表全部的内容,包括:数据库建表、如何快速将SQL数据库迁移到HANA数据库、以下哪个数据库属于中文参考数据库等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/10085495.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存