用Navicat实现MS SQL转MySQL

Navicat真的是非常强大,另外还有一个叫mysqlfront的工具早已停止开发,我是在搜索它的时候意外找到了navicat,据说navicat也全面超越了mysqlfront,装了MYSQL的人千万不要错过这个几M的小软件,不废话了,下面开始正文

下面引用文章的原作者:Allen

出现在各种开发论坛上的一个很常见问题是比较MySQL和MS SQL优点和缺点。已产生许多比较,主要是技术性的问题,我个人认为他们是很难比较的,特别是关于他们的性能。

       但MS SQL优于MySQL这是不正确的,反之亦然。这两种产品都可以用来建立稳定和有效的体系。数据库的稳定性和有效性,很大程度取决于您的经验,而不是数据库本身。这两个数据库各有自己的优势,当决定哪种服务器可以使用的时候,它真正取决于您的需要。

       尽管事实上MS SQL和MySQL都有自己的长处,相当数量的企业已将它们的数据库转移向MySQL ,因为利用MySQL的开放,他们不断找到很好的理由。

 

开放源码时代

 

       专有软件仍然有较大部分的市场占有率,开放源码软件正在等待征服市场,并有可能做到。 Netcraft公司报告说,由于Apache是一个最新的web服务器,放在一起做比其他Web服务器会有更多的市场份额。 使用Linux的人数也越来越多;据估计,它是增长最快的操作系统。虽然确切的数字,确实难以确定,大部分研究人员估计,约800至1000万Linux的安装数量。数以百万计的安装,确切数目的用户,甚至可能超过这个数字,因为Linux是一个多用户系统。这个数字是增长约40 % 。这种上升的数字,我们应该承认,开放源码软件的确比封闭的软件有其优势。

 

一个典型的例子-美国航天局

 

       在2000年, NASA的马歇尔空间飞行中心完成了美国航天局的收购MySQL互联网服务的过渡。来自美国航天局代表承认,为联邦机构使用开放源代码软件可能是常规,由于在其庞大的数据储存库上有限的财政预算案, MySQL绝对是最稳健的产品。

       您可能不知道为什么,这开放源代码革命在近几年已经发生了。最明显的有影响力的原因是互联网。互联网使众多的进程成为可能,这是势必会促进开放源代码运动的增长。其中主要的优势是互联网促进了美好的代码和理念的传播。这包括良好开源观念的传播。

 

 

为什么转移到使用开放源码软件?

 

       现在,开放源代码软件令人信服地替代商业软件,由于具有下列优点:

       ● 成本效益

       开放源码软件通常是免费派发,或根据通用公共许可证(License)合理和低廉的价格收取费用的商业机构。成本的节省可用于其他发展和支持。

       ● 透明度

       因为您可以访问的源代码,您可以随时找出代码是如何工作的。它可以无限的调整和改善软件产品。此外,它还使我们对新的硬件产生接口代码成为可能,还能适应不断变化的条件,例如,它完美集成了现有的系统。

       ● 可靠性

       开源软件的普遍提供了良好的可靠性和稳定性。这是由于全球性集团的贡献帮助调试软件。任何错误发现,往往会影响产品在一个更肤浅的水平和需要更少的重新编码。

 

现在就采取行动

 

       如果您想经历开放源码软件的回报,为什么不移转您的MS SQL到MySQL ?转换MS SQL到MySQL可能会很复杂冗长的命令。如果您在黑白命令提示符下感到不舒服,您可以尝试一些市面上出售的MySQL数据库GUI工具。

 

Navicat        Navicat是一个功能强大的MySQL数据库管理和开发工具。它提供了一套强大的工具,帮助您管理本地或远程的MySQL数据库。它也包含导入的特点,允许用户用17个不同的格式导入到MySQL数据库,包括MS Access,以MS Excel , MS Word(RTF ) , HTML格式, XML, txt,CSV格式,DBF等。 

MS SQL 到MySQL的数据迁移

       ● 单击导入向导

       ● 从列表的文件格式可供选择的ODBC 。

       ● 点击浏览按钮来列出可用的ODBC来源。

       ● 在提供程序选项卡,选择” Microsoft OLE DB提供程序为SQL Server ”

       ● 在连接选项卡,输入服务器地址,用户名和密码的连接。之后,输入正确的信息,您将可以看到可用的数据库服务器,从下拉式列表中进行选择。

       ● 之后,确认您的设置,将会看到所选择的数据库的数据表,Navicat导入向导,进入第2步。

       ● Navicat会作出一些推测表的字段类型;您可以随时改变它。请注意,从第2步第6步,导入向导将采取几秒钟的加载,具体取决于您的数据库大小和连接速度。一般情况下,一分钟内它将完成载入。

       ● 单击执行开始导入。

       ● 导入已顺利完成。

       借助Navicat ,从MS SQL到MySQL传输数据是小菜一碟。Navicat ,不仅有助于从MS SQL到MySQL迁移数据,它还有助于生成报表,导出各种文件类型文件和许多其他的基本的数据库管理选项。

结论

       这篇文章我指出了MySQL在开放方面如何是有利的超过MS SQL的。此外,我还说明了用Navicat 将MS SQL数据迁移到MySQL是多么的容易。开放源码有大量的优势,逐渐地被越来越多的人认可。

数据库第一次上机作业

传点图上来算是测试一下图片外链和图片的ajax效果~,点击图片就能看到ajax效果了~
数据库第一次上机作业,作业非常简单,上机倒是上得郁闷,具体怎么个郁闷法,明天再写了.应该说今天上午…….
创建关系数据库S_T:

CREATE DATABASE S_T
ON PRIMARY
(name='data',
filename='C:\Documents and Settings\A\桌\mssql\1.mdf',
size=10,
maxsize=20,
filegrowth=2)
log ON
(NAME='DB_log',
fileNAME='C:\Documents and Settings\A\桌\1.log',
SIZE=1,
MAXSIZE=10,
FILEGROWTH=1)

创建学生表student(sno,sname,email,grade);其中sno是学生的主码,具有唯一性约束;grade〈100的约束

USE S_T
CREATE TABLE student
(sno char(9) PRIMARY KEY,
sname char(6),
email char(30),
grade smallint CHECK(grade<100))

创建教师表Teachers(Tno,Tname,email,salary);salary应该大于1500

CREATE TABLE teachers
(tno char(9) PRIMARY KEY,
tname char(6),
email char(30),
salary smallint CHECK(salary>1500))

创建课程表Courses(Cno,Cname,Chour)

CREATE TABLE courses
(cno char(9) PRIMARY KEY,
cname char(20),
chour smallint)

创建课程表STC(ID,Sno,Tno,Cno,sorce);STC表中的Sno,Cno是外码

CREATE TABLE stc
(id char(9) PRIMARY KEY,
sno char(9),
tno char(9),
cno char(9),
sorce int);
FOREIGN KEY cno REFERENCES course(cno);
FOREIGN KEY sno REFERENCES students(sno)

更改students表,增加Ssex属性(类型CHAR,长度2),约束为只能取“男”或“女”

ALTER TABLE student ADD ssex char(2) CHECK(ssex='男' OR ssex='女')

取消grade<100的约束

ALTER TABLE student DROP CK__student__grade__77BFCB91

把STC表中的sorce改为smallint型

ALTER TABLE stc ALTER COLUMN sorce smallint

INSERT
INTO student(sno,sname,email,grade)
VALUES('0415121','李丽','lee@163.com','2004')
INSERT
INTO student(sno,sname,email,grade)
VALUES('0415122','王洋','wy@sina.com','2004')
INSERT
INTO student(sno,sname,email,grade)
VALUES('0415123','刘晨','liucheng@hotmail.net','2004')
INSERT
INTO student(sno,sname,email,grade)
VALUES('0515121','王小晨','wang111@yahoo.com','2005')
INSERT
INTO student(sno,sname,email,grade)
VALUES('0515122','张放','zhangf123@sina.com','2005')
INSERT
INTO student(sno,sname,email,grade)
VALUES('0515123','乔云苹','qyp@163.net','2005')

INSERT
INTO teachers(tno,tname,email,salary)
VALUES('101','李大伟','ldw@ncist.edu.cn','4200')
INSERT
INTO teachers(tno,tname,email,salary)
VALUES('102','刘云','ly@ncist.edu.cn','2500')
INSERT
INTO teachers(tno,tname,email,salary)
VALUES('103','王军','wj666@ncist.edu.cn','1600')
INSERT
INTO teachers(tno,tname,email,salary)
VALUES('104','张红霞','zhx@ncist.edu.cn','2100')

INSERT
INTO courses(cno,cname,chour)
VALUES('B001','高等数学(1)',80)
INSERT
INTO courses(cno,cname,chour)
VALUES('B002','计算机导论',48)
INSERT
INTO courses(cno,cname,chour)
VALUES('B003','C预言设计',64)
INSERT
INTO courses(cno,cname,chour)
VALUES('B004','数据结构',72)
INSERT
INTO courses(cno,cname,chour)
VALUES('B005','数据库系统',56)
INSERT
INTO courses(cno,cname,chour)
VALUES('B006','模糊数学',56)

INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('1','0415121','101','B001','78')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('2','0415121','102','B002','85')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('3','0415121','103','B003','69')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('4','0415121','104','B004','')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('5','0415122','102','B002','98')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('6','0415122','103','B003','89')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('7','0415122','105','B002','91')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('8','0415123','101','B001','65')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('9','0415123','103','B003','56')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('10','0415123','104','B002','')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('11','0515121','102','B002','68')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('12','0515121','104','B004','78')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('13','0515123','101','B001','81')
INSERT
INTO stc(id,sno,tno,cno,sorce)
VALUES('14','0515123','102','B002','60')

查询年级为2005的所有学生的姓名和编号,并按姓名升序排列

SELECT sno,sname FROM student WHERE grade='2005' ORDER BY sname

查询课时为48或64的课程名称

SELECT cname FROM courses WHERE chour IN ('48','64')


查询所有课中含有“数据”的课程编号

SELECT cno FROM courses WHERE cname LIKE '%数据%'


查询所有被选课程的课程号(不重复显示)

SELECT DISTINCT cno FROM stc

查询有不及格课程学生学号

SELECT DISTINCT sno FROM stc WHERE sorce<60 OR sorce IS NULL