文档库 最新最全的文档下载
当前位置:文档库 › QSQLite 数据库

QSQLite 数据库

QSQLite 数据库
QSQLite 数据库

这里我们只是演示了一下使用这个框架完成最简单的程序的过程,只起到抛砖引玉的作用。这个框架很复杂,但是功能也很强大,Qt Creator中自带了几个相关的例子(在帮助中查找Graphics View Examples即可),你可以参考一下。因为篇幅问题,我们就只讲这么多,如果以后有机会,我会推出一个相关的专题来讲述这个框架。

分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 3,006 views

Tags: 2D绘图, creator, qt, yafeilinux, 教程

二十一、Qt数据库(一)简介

本文章原创于https://www.wendangku.net/doc/1817904401.html,转载请注明出处。

从今天开始我们学习Qt数据库编程的内容。

先说明:我们以后使用现在最新的基于Qt 4.6.2的Qt Creator 1.3.1 Windows版本,该版本是2010年2月17日发布的。

数据库几乎是每个较大的软件所必须应用的,而在Qt中也使用QtSql模块实现了对数据库的完美支持。我们在Qt Creator的帮助中查找QtSql Module,其内容如下图:

可以看到这个模块是一组类的集合,使用这个模块我们需要加入头文件#include ,而在工程文件中需要加入一行代码:QT += sql

这里每个类的作用在后面都有简单的介绍,你也可以进入其中查看其详细内容。下面我们先简单的说一下QSqlDatabase类和QSqlQuery类。

QSqlDatabase类实现了数据库连接的操作,现在Qt支持的数据库类型有如下几种:

而现在我们使用的免费的Qt只提供了SQLite和ODBC数据库的驱动(我们可以在Qt Creator 安装目录下的qt\plugins\sqldrivers文件夹下查看),而其他数据库的驱动需要我们自己添加。SQLite是一个小巧的嵌入式数据库,关于它的介绍你可以自己在网上查找。

QSqlQuery类用来执行SQL语句。(关于SQL语句:在我的教程中只会出现很简单的SQL语句,你没有相关知识也可以看懂,但是如果想进行深入学习,就需要自己学习相关知识了。)

下面我们就先利用这两个类来实现最简单的数据库程序,其他的类我们会在以后的教程中逐个学习到。

1.新建Qt控制台工程。

2.选择上QtSql模块,这样就会自动往工程文件中添加QT += sql 这行代码了。

3.修改main.cpp中的内容如下。

#include

#include

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”); //添加数据库驱动db.setDatabaseName(“:memory:”); //数据库连接命名

if(!db.open()) //打开数据库

{

return false;

}

QSqlQuery query; //以下执行相关QSL语句

query.exec(“create table student(id int primary key,name varchar)”);

//新建student表,id设置为主键,还有一个name项

query.exec(“insert into student values(1,’xiaogang’)”);

query.exec(“insert into student values(2,’xiaoming’)”);

query.exec(“insert into student values(3,’xiaohong’)”);

//向表中插入3条记录

query.exec(“select id,name from student where id >= 2″);

//查找表中id >=2 的记录的id项和name项的值

while(query.next()) //query.next()指向查找到的第一条记录,然后每次后移一条记录

{

int ele0 = query.value(0).toInt(); //query.value(0)是id的值,将其转换为int型

QString ele1 =query.value(1).toString();

qDebug() << ele0 <

}

return a.exec();

}

我们使用了SQLite数据库,连接名为“:memory:”表示这是建立在内存中的数据库,也就是说该数据库只在程序运行期间有效。如果需要保存该数据库文件,我们可以将它更改为实际的文件路径。

4.最终效果如下。

5.我们可以将主函数更改如下。

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

qDebug() << “Available drivers:”;

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers)

qDebug() << “\t” << driver;

return a.exec();

}

这样运行程序就可以显示现在所有能用的数据库驱动了。

可以看到现在可用的数据库驱动只有三个。

分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 4,062 views Tags: creator, qt, yafeilinux, 教程, 数据库

二十二、Qt数据库(二)添加MySQL数据库驱动插件

本文章原创于https://www.wendangku.net/doc/1817904401.html,转载请注明出处。

在上一节的末尾我们已经看到,现在可用的数据库驱动只有3种,那么怎样使用其他的数据库呢?在Qt中,我们需要自己编译其他数据库驱动的代码,让它们以插件的形式来使用。下面我们就以现在比较流行的MySQL数据库为例,说明一下怎样在Qt Creator中添加数据库驱动插件。

在讲述之前,我们先看一下Qt Creator中数据库的插件到底放在哪里。

我们进入Qt Creator的安装目录,然后进入相对应的文件夹下,比方我这里是

D:\Qt\2010.02.1\qt\plugins\sqldrivers

在这里我们可以看见几个文件,如下图:

根据名字中的关键字,我们可以判断出这就是ODBC数据库和SQLite数据库的驱动插件。下面我们编译好MySQL数据库驱动后,也会在这里出现相对应的文件。

首先:我们查看怎样安装数据库插件。

我们打开Qt Creator,在帮助中搜索SQL Database Drivers关键字。这里列出了编译Qt支持的所有数据库的驱动的方法。

我们下拉到在windows上编译QMYSQL数据库插件的部分,其内容如下:

这里详细介绍了整个编译的过程,其可以分为以下几步:

第一,下载MySQL的安装程序,在安装时选择定制安装,这时选中安装Libs和Include文件。安装位置可以是C:\MySQL 。

注意:安装位置不建议改动,因为下面进行编译的命令中使用了安装路径,如果改动,那么下面也要进行相应改动。

第二,进行编译。我们按照实际情况输入的命令如下。

cd %QTDIR%\src\plugins\sqldrivers\mysql

qmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro

mingw32-make

注意:在上面的命令中qmake之后如果加上“-o Makefile”选项,那么这个插件只能在以release模式编译程序时才能使用,所以我们上面没有加这个选项。

然后:我们按照上面的过程进行相应操作。

1.我们先下载MySQL的安装文件。

我们可以到MySQL的官方主页https://www.wendangku.net/doc/1817904401.html,进行下载最新的MySQL的windows版本,现在具体的下载页面地址为:

https://www.wendangku.net/doc/1817904401.html,/downloads/mirror.php?id=383405#mirrors

我们不进行注册,直接点击其下面的

No thanks, just take me to the downloads!

可以在其中选择一个镜像网点进行下载,我使用的是Asia下的最后一个,就是台湾的镜像网点下载的。

下载到的文件名为:mysql-essential-5.1.44-win32 ,其中的win32表明是32位的windows 系统,这一点一定要注意。文件大小为40M左右。

当然你也可以到中文网站上进行下载:https://www.wendangku.net/doc/1817904401.html,/,随便下一个windows的版本就行。

2.安装软件。

我们选择定制安装Custom。

然后选中安装Include文件和Lib文件。

我们将安装路径更改为:C:\MySQL 。

最终的界面如下。

安装完成后,我们不进行任何操作,所以将两个选项都取消。

3.进行编译。

我们在桌面上开始菜单中找到Qt Creator的菜单,然后打开Qt Command Prompt。

然后输入第一条命令cd %QTDIR%\src\plugins\sqldrivers\mysql 后按回车,运行效果如下。

然后输入第二条命令:

qmake “INCLUDEPATH+=C:\MySQL\include” “LIBS+=C:\MySQL\lib\opt\libmysql.lib” mysql.pro

按回车后运行效果如下:

最后输入:mingw32-make ,按下回车后经过几秒的编译,最终效果如下:

整个编译过程中都没有出现错误提示,可以肯定插件已经编译完成了。4.我们再次进入Qt Creator安装目录下存放数据库驱动插件的文件夹。我这里是D:\Qt\2010.02.1\qt\plugins\sqldrivers

其内容如下:

可以看到已经有了和MySQL相关的文件了。

最后:我们编写程序测试插件。

1.我们将上一次的主函数更改如下。

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

QSqlDatabase db = QSqlDatabase::addDatabase(“QMYSQL”); //添加数据库驱动

return a.exec();

}

运行程序,效果如下。

这里提示:QSqlDatabase: QMYSQL driver not loaded。

2.这时我们需要将C:\MySQL\bin目录下的libmySQL.dll文件复制到我们Qt Creator安装目录下的qt\bin目录中。

如下图:

3.这时再运行程序,就没有提示了。

4.我们再将主函数更改一下,测试这时可用的数据库驱动。

int main(int argc, char *argv[])

{

QCoreApplication a(argc, argv);

qDebug() << “Available drivers:”;

QStringList drivers = QSqlDatabase::drivers();

foreach(QString driver, drivers)

qDebug() << “\t” << driver;

return a.exec();

}

运行效果如下:

可以看到,现在已经有了MySQL的数据库驱动了。

我们这里只介绍了MySQL驱动插件在windows下的编译方法,其他数据库和其他平台的编译方法可以按照帮助中的说明进行,我们不再介绍。其实Qt不仅可以编译现成的数据库驱动插件,我们也可以编写自己的数据库驱动插件,当然这是一件相当复杂的事情,我们这里也就不再进行介绍。

关于MySQL的使用,我们的教程里现在不再涉及,

在https://www.wendangku.net/doc/1817904401.html,/doc/refman/5.1/zh/index.html 这里有MySQL的中文参考手册,你可以进行参考。

可以到资源下载页面下载生成的文件。

分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 4,543 views

Tags: creator, qt, yafeilinux, 教程, 数据库

二十三、Qt数据库(三)利用QSqlQuery类执行SQL语句(一)本文章原创于https://www.wendangku.net/doc/1817904401.html,转载请注明出处。

SQL即结构化查询语言,是关系数据库的标准语言。前面已经提到,在Qt中利用QSqlQuery 类实现了执行SQL语句。需要说明,我们这里只是Qt教程,而非专业的数据库教程,所以我们不会对数据库中的一些知识进行深入讲解,下面只是对最常用的几个知识点进行讲解。

我们下面先建立一个工程,然后讲解四个知识点,分别是:

一,操作SQL语句返回的结果集。

二,在SQL语句中使用变量。

三,批处理操作。

四,事务操作。

我们新建Qt4 Gui Application工程,我这里工程名为query ,然后选中QtSql模块,Base class 选QWidget。工程建好后,添加C++ Header File ,命名为connection.h ,更改其内容如下:

#ifndef CONNECTION_H

#define CONNECTION_H

#include

#include

#include

static bool createConnection()

{

QSqlDatabase db = QSqlDatabase::addDatabase(“QSQLITE”);

db.setDatabaseName(“:memory:”);

if (!db.open()) {

QMessageBox::critical(0, qApp->tr(“Cannot open database”),

qApp->tr(“Unable to establish a database connection.”

), QMessageBox::Cancel);

return false;

}

QSqlQuery query;

query.exec(“create table student (id int primary key, ”

“name varchar(20))”);

query.exec(“insert into student values(0, ‘first’)”);

query.exec(“insert into student values(1, ‘second’)”);

query.exec(“insert into student values(2, ‘third’)”);

query.exec(“insert into student values(3, ‘fourth’)”);

query.exec(“insert into student values(4, ‘fifth’)”);

return true;

}

#endif // CONNECTION_H

然后更改main.cpp的内容如下:

#include

#include “widget.h”

#include “connection.h”

int main(int argc, char *argv[])

{

QApplication a(argc, argv);

if (!createConnection())

return 1;

Widget w;

w.show();

return a.exec();

}

可以看到,我们是在主函数中打开数据库的,而数据库连接用一个函数完成,并单独放在一个文件中,这样的做法使得主函数很简洁。我们今后使用数据库时均使用这种方法。我们打开数据库连接后,新建了一个学生表,并在其中插入了几条记录。

表中的一行就叫做一条记录,一列是一个属性。这个表共有5条记录,id和name两个属性。程序中的“id int primary key”表明id属性是主键,也就是说以后添加记录时,必须有id 项。

下面我们打开widget.ui文件,在设计器中向界面上添加一个Push Button ,和一个Spin Box 。将按钮的文本改为“查询”,然后进入其单击事件槽函数,更改如下。

void Widget::on_pushButton_clicked()

{

QSqlQuery query;

query.exec(“select * from student”);

while(query.next())

{

qDebug() << query.value(0).toInt() << query.value(1).toString();

}

}

我们在widget.cpp中添加头文件:

#include

#include

然后运行程序,单击“查询”按钮,效果如下:

可以看到在输出窗口,表中的所有内容都输出出来了。这表明我们的数据库连接已经成功建立了。

一,操作SQL语句返回的结果集。

在上面的程序中,我们使用query.exec(“select * from student”);来查询出表中所有的内容。其中的SQL语句“select * from student”中“*”号表明查询表中记录的所有属性。而当query.exec(“select * from student”);这条语句执行完后,我们便获得了相应的执行结果,因为获得的结果可能不止一条记录,所以我们称之为结果集。

结果集其实就是查询到的所有记录的集合,而在QSqlQuery类中提供了多个函数来操作这个集合,需要注意这个集合中的记录是从0开始编号的。最常用的有:

seek(int n):query指向结果集的第n条记录。

first():query指向结果集的第一条记录。

last():query指向结果集的最后一条记录。

next():query指向下一条记录,每执行一次该函数,便指向相邻的下一条记录。

previous():query指向上一条记录,每执行一次该函数,便指向相邻的上一条记录。

record():获得现在指向的记录。

value(int n):获得属性的值。其中n表示你查询的第n个属性,比方上面我们使用“select * from student”就相当于“select id, name from student”,那么value(0)返回id属性的值,value(1)返回name属性的值。该函数返回QVariant类型的数据,关于该类型与其他类型的对应关系,可以在帮助中查看QVariant。

at():获得现在query指向的记录在结果集中的编号。

需要说明,当刚执行完query.exec(“select * from student”);这行代码时,query是指向结果集以外的,我们可以利用query.next(),当第一次执行这句代码时,query便指向了结果集的第一条记录。当然我们也可以利用seek(0)函数或者first()函数使query指向结果集的第一条记录。但是为了节省内存开销,推荐的方法是,在query.exec(“select * from student”);这行代码前加上query.setForwardOnly(true);这条代码,此后只能使用next()和seek()函数。

下面将“查询”按钮的槽函数更改如下:

void Widget::on_pushButton_clicked()

{

QSqlQuery query;

query.exec(“select * from student”);

qDebug() << “exec next() :”;

if(query.next())

//开始就先执行一次next()函数,那么query指向结果集的第一条记录{

int rowNum = query.at();

//获取query所指向的记录在结果集中的编号

int columnNum = query.record().count();

//获取每条记录中属性(即列)的个数

int fieldNo = query.record().indexOf(“name”);

//获取”name”属性所在列的编号,列从左向右编号,最左边的编号为0

int id = query.value(0).toInt();

//获取id属性的值,并转换为int型

QString name = query.value(fieldNo).toString();

//获取name属性的值

qDebug() << “rowNum is : ” << rowNum //将结果输出

<< ” id is : ” << id

<< ” name is : ” << name

<< ” columnNum is : ” << columnNum;

}

qDebug() << “exec seek(2) :”;

if(query.seek(2))

//定位到结果集中编号为2的记录,即第三条记录,因为第一条记录的编号为0 {

qDebug() << “rowNum is : ” << query.at()

<< ” id is : ” << query.value(0).toInt()

<< ” name is: ” << query.value(1).toString();

}

qDebug() << “exec last() :”;

if(https://www.wendangku.net/doc/1817904401.html,st())

//定位到结果集中最后一条记录

{

qDebug() << “rowNum is : ” << query.at()

<< ” id is : ” << query.value(0).toInt()

<< ” name is : ” << query.value(1).toString();

}

}

然后在widget.cpp文件中添加头文件。

#include

运行程序,结果如下:

分类:Qt系列教程作者: yafeilinux 日期:四月 30th, 2010. 3,845 views Tags: creator, qt, yafeilinux, 教程, 数据库

二十四、Qt数据库(四)利用QSqlQuery类执行SQL语句(二)本文章原创于https://www.wendangku.net/doc/1817904401.html,转载请注明出处。

接着上一篇教程。

二,在SQL语句中使用变量。

我们先看下面的一个例子,将“查询”按钮的槽函数更改如下:

void Widget::on_pushButton_clicked()

{

QSqlQuery query;

query.prepare(“insert into student (id, name) ”

“values (:id, :name)”);

query.bindValue(0, 5);

query.bindValue(1, “sixth”);

query.exec();

//下面输出最后一条记录

query.exec(“select * from student”);

https://www.wendangku.net/doc/1817904401.html,st();

int id = query.value(0).toInt();

QString name = query.value(1).toString();

qDebug() << id << name;

}

运行效果如下:

可以看到,在student表的最后又添加了一条记录。在上面的程序中,我们先使用了prepare()函数,在其中利用了“:id”和“:name”来代替具体的数据,而后又利用bindValue()函数给id和name两个属性赋值,这称为绑定操作。其中编号0和1分别代表“:id”和“:name”,就是说按照prepare()函数中出现的属性从左到右编号,最左边是0 。这里的“:id”和

“:name”,叫做占位符,这是ODBC数据库的表示方法,还有一种Oracle的表示方法就是全部用“?”号。如下:

query.prepare(“insert into student (id, name) ”

“values (?, ?)”);

query.bindValue(0, 5);

query.bindValue(1, “sixth”);

query.exec();

我们也可以利用addBindValue()函数,这样就可以省去编号,它是按顺序给属性赋值的,如下:

query.prepare(“insert into student (id, name) ”

“values (?, ?)”);

query.addBindValue(5);

query.addBindValue(“sixth”);

query.exec();

当用ODBC的表示方法时,我们也可以将编号用实际的占位符代替,如下:

query.prepare(“insert into student (id, name) ”

“values (:id, :name)”);

query.bindValue(“:id”, 5);

query.bindValue(“:name”, “sixth”);

query.exec();

以上各种形式的表示方式效果是一样的。特别注意,在最后一定要执行exec()函数,所做的操作才能被真正执行。

下面我们就可以利用绑定操作在SQL语句中使用变量了。

void Widget::on_pushButton_clicked()

{

QSqlQuery query;

query.prepare(“select name from student where id = ?”);

int id = ui->spinBox->value(); //从界面获取id的值

query.addBindValue(id); //将id值进行绑定

query.exec();

query.next(); //指向第一条记录

qDebug() << query.value(0).toString();

}

运行程序,效果如下:

我们改变spinBox的数值大小,然后按下“查询”按钮,可以看到对应的结果就出来了。三,批处理操作。

当要进行多条记录的操作时,我们就可以利用绑定进行批处理。看下面的例子。

void Widget::on_pushButton_clicked()

{

QSqlQuery q;

q.prepare(“insert into student values (?, ?)”);

QVariantList ints;

ints << 10 << 11 << 12 << 13;

q.addBindValue(ints);

QVariantList names;

names << “xiaoming” << “xiaoliang” << “xiaogang” <<

QVariant(QVariant::String);

//最后一个是空字符串,应与前面的格式相同

q.addBindValue(names);

if (!q.execBatch()) //进行批处理,如果出错就输出错误

qDebug() << https://www.wendangku.net/doc/1817904401.html,stError();

//下面输出整张表

QSqlQuery query;

query.exec(“select * from student”);

while(query.next())

{

int id = query.value(0).toInt();

QString name = query.value(1).toString();

qDebug() << id << name;

}

}

然后在widget.cpp文件中添加头文件#include

SQL数据库基础知识集合

1、数据库简介: 数据库是专门开发数据管理的软件,或者说专门管理数据的软件就是数据库。 数据库存在的意义就是:减轻开发人员的负担。数据库是一个综合的软件,那么我们不需要队要进行2进制保存数据进行处理了,但是却是要与数据库产生交互,那么命令式SQL,有技巧的,数据库就是万物皆关系(面向对象,万物皆是对象)有所区别。 2、数据库的发展: 一开始的是层次化的数据与网状数据库,后来也发现使用确实很麻烦。 于是到了1970年EF.Cold博士(IBM公司的研究员)开创了关系性的数据库的先驱,发表了关系性数据库的论文,但是由于当时电脑硬件的局限性,大家觉得跑如此大的程序不值得。后来,Oracle(甲骨文)公司的创始人,拉里带领Oracle投入到关系型数据库的研发,并且得到了一个大客户—美国国防部。随即开始世界刮起了关系数据库的旋风,随后各个公司都纷纷推出自己的数据库系统。比如:IBM的DB2 ,还有风靡一时的DBS3。 但是随即出现不兼容的问题,由于最早的时候都没有进行没规范。所以到最后各个数据库巨头统一了操纵数据库的SQL(结构化Struct数据查询语言)变成了标准语言,而关系型数据库也俨然变成大家的宠儿,Oracle也从一个小公司,变成现在的数据库巨头,而我们的微软也推出了SQLServer。当然还有PHPer的最爱mySQL。但是mySQL被SUN,SUN 被Oracle收购,现在有免费版与收费专业版了。所以我们学习SQL语言的时候,先学共同点,再学特异性。各种数据库软件在使用上有一点区别。 3、数据库系统详解: 为适应数据处理的需要而发展起来的一种较为理想的数据处理的核心机构。计算机的高速处理能力和大容量存储器提供了实现数据管理自动化的条件。 数据库系统一般由4个部分组成: 数据库,即存储在磁带、磁盘、光盘或其他外存介质上、按一定结构组织在一起的相关数据的集合。(个体) 数据库管理系统(DBMS)。一组能完成描述、管理、维护子数据库的程序系统。它按照一种公用的和可控制的方法完成插入新数据、修改和检索原有数据的操作。 数据库管理员(DBA)。 用户和应用程序。(微软的称作SSMS) 4、数据库系统的基本要求是: 1、能够保证数据的独立性。数据和程序相互独立有利于加快软件开发速度,节省开发费用。 2、冗余数据少,数据共享程度高。 3、系统的用户接口简单,用户容易掌握,使用方便。 4、能够确保系统运行可靠,出现故障时能迅速排除,能够保护数据不受非受权者访问或破坏,能够防止错误数据的产生,一旦产生也能及时发现。 5、有重新组织数据的能力,能改变数据的存储结构或数据存储位置,以适应用户操作特性的变化,改善由于频繁插入、删除操作造成的数据组织零乱和时空性能变坏的状况。 6、具有可修改性和可扩充性、可维护性。 7、能够充分描述数据间的内在联系。 5、数据库(Database): 由众多的数据、数据表、约束、存储过程、函数、视图、索引构成的一个数据存储与交互单元,是按照数据结构来组织、存储和管理数据的仓库。 6、数据表(table): 数据表,实际上是一个二维表。一般是围绕一个事务、动作记录,或者是一个信息主题作为一个数据表。数据表由行与列构成。 7、列(column、field): 列,其实就是字段。也是决定了信息的基本单元。列,包含有数据类型的设定。 8、行(row、record): 行,实际上就是一条基本信息。一行包含了多列数据的存储的信息。所以一行也有一条记录之称。 9、行业(trade) 一个行业一种需求,没一个需求每一种数据库的设计模式与思想。每个行业的数据设计的重点都是不同的。侧重查询(要求低范式)还是操作(要求搞范式)就是自己选择的问题了。 10、索引(index) 索引是一个单独的、物理的数据库结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引其实就是一个B+树,但是这个索引是N^n层数次方的。目的就是在数据库中划分出一定的区域优化查询。可以提升大量数据的查询速度。索引一般可以分为:基于字段优化查询速度的普通索引、唯一性索引、主键索引、全文索引、单列与多列索引。现在由于数据库系统的不断升级,我们只要设定索引就可以了,不需要特殊的维护。而且数据在查询的时候也会根据查询适当地选择是利用索引查询,还是仅仅是表查询。由于数据库系统的发展,系统内部已经自动帮我们完成对索引的维护。但是在设计的时候要考虑到索引的损耗问题。数据库DB就像是一个字典,索引就是根据指定字段制成的快速指向。由于只是指向数据对象标识,真正的数据是存储在DB中,所以查询速度极快。但是额外的内存与硬盘花销也是一个需要考虑的问题。比如:增加、删除、修改时数据库都要对索引进行维护,但是这样也是为了最后查询的效率的提升,特别适合W行级别的数据查询。而索引可以分为:隐式索引(针对单个字段)、唯一索引(唯一约束)、函数索引(函数(字段))、聚簇索引(主键)、组合索引(最多16个field)与全文索引(text)。一般索引会占用原数据库大小的20%。 11、视图(view) 固化的子查询,将一个子查询起了一个固化的名字,保存在数据库中,方便以后的使用。其实调用大量的Join来进行一个查询一般也是用视图。视图与索引都是为了优化查询的速度与语句。视图是优化语句,索引是优化单查速度。一般是DBA来设定数据库的视图,封装内部数据库的数据关系,范式修改数据容易了,视图让我们查询复杂关系的数据变得容易。 12、触发器(trigger) 触发器(trigger)是个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由个事件来触发,比如当对一个表进行操作(insert,delete,update)时就会激活它执行。触发器经常用于加强数据的完整性约束和业务规则等。触发器可以从DBA_TRIGGERS ,USER_TRIGGERS 数据字典中查到。 13、SQLServer数据类型详解

数据库SQL语句

1、select x.商品代号,分类名,数量,品牌 From 商品表现1 x,商品表2 y Where x.商品代号=y.商品代号 (从商品库中查询出每一种商品的商品代号、分类名、数量和品牌等信息。)2、select distinct 产地 From商品表2 (从商品库中查询出所有商品的不同产地。) 3、select distinct 品牌 From 商品表2 (从商品库中查询出所有商品的不同品牌) 4、select count(distinct产地)as产地数From商品表2 (从商品库中查询出所有商品的不同产地的总数。) 5、select x.商品代号,分类名,产地,品牌 From商品表1 x.,商品表2 y Where x,商品代号=y.商品代号and (品牌=‘熊猫’or品牌=‘春兰’) (从商品库中查询出品牌为熊猫或春兰的所有商品的商品代号、分类名、产地和品牌。) 19、select 商品表1.商品代号,单价,数量,产地 From 商品表1,商品表2 Where 商品表达式1.商品代号=商品表达式2.商品代号 (从商品库中查询出每种商品的商品代号、单价、数量和产地。) 20、select count(*) From 商品表1 Where数量》10 (从商品库中查询出数量大于10的商品种数。) 21、select * From商品表1 Where数量between 10 and20 (从商品库中查询出数量在10和20之间的所有商品。) 22、select分类名,max(单价)as最高单价 From商品表1 Group by 分类名 (从商品库中查询出每类(即类名相同)商品的最高单价)23、select分类名,avg(数量)as平均 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的平均数量) 24、select分类名,sum(数量)as总 数量 From商品表1 Group by分类名 (从商品库中查询出每类(即分类名相 同)商品的总数量。) 25、select* From商品表1 Where单价>all(select单价 From商品表1 Where分类名’电视机’) (从商品库中查询出比所有电视机的 单价都高的每种商品) 26、select* From商品表1 Where单价>all(select avg(单价) From商品表1) (从商品库中查询出比所有商品单价 的平均值要高的全部商品) 27、select* From商品表1 Where数量=some(select max(数量) From商品表1) (从商品库中查询出数量最多的一种 商品) 28、select distinct分类名 From商品表1. Group by 分类名having count(*)>1 (从商品库中查询出同一类商品多于一 种的所有分类名) 29、select商品表1.*,产地 From商品表1,商品表2 Where商品表1.商品代号=商品表2.商 品代事情and产地in( Select 产地 From商品表1 x ,商品表2 y Where x.商品代号=y.商品代号 Group by产地having count(*)=1) (从商品库中查询出同一产地的商品 只有一种的所有商品) 30、select*,单价*数量as总价值 From商品表1 Order by总价值desc (从商品库中查询出每种商品的总价 值,并按降序排列出来 6、select 学生。学生号,count(*)as选 课门数 From学生,选课 Where学生.学生号=选课.学生号 Group by 学生。学生号 (从教学库中查询出互个学生选课的 门数。) 7、select distinct x.* From 学生产x,选课y,选课z Where y.学生号=z.学生号and y .课程 号<>z.课程号and x.学生号=y.学生号 (从教学库中查询出至少选修了两门 课程的全部学生。) 8、select * From 学生 Where 学生号in (select 学生号 From 选课 Group by 学生号having coount (*)=1) (从教学库中查询出只选修了一门课 程的全部学生。) 9、select x.学生号,y.学生号,y.课程号 From 选课x,选课y Where x.学生号=@sl and y.学生号=@ s2 and x.课程号=y.课程号 (从教学库中查询出学生号为@s1的学 生和学生号为@s2的学生所选修的共 同课程的课程号。) 10、select x.* From 课程x,选课y Where x.课程号=y.课程号and y .学生 号=@s1 and y.课程号not in( select 课程号 from 选课 where 选课.学生号=@s2) (从教学库中查询出学生号为@S1的学 生所选修、而学生号为@s2的学生没有 选修的全部课程。) 11、select * From 课程 Where not exists( select * from 选课 where 课程.课程号=选课.课程号) (从教学库中查询出所有未被学生选 修的课程。) 12、select * From 课程 Where exists(Select * From 选课 Where 课程.课程号=选课.课程号) (从教学库中查询出所有已被学生选 修的课程。)

SQL银行数据库管理语句(详细版)

create table UserInfo( CustomerId char(20), CustomerName char(50)not null, PID varchar(20)unique, Telephone varchar(20), Address char(50), PRIMARY KEY(CustomerId)) create table CardInfo( cardID char(50)not null, curType varchar(10)not null default'RMB', savingType varchar(10), openDate datetime default getdate(), openMoney int not null, balance int not null, pass char(50)not null default'888888', IsReportLoss char(50)not null default'否', customerID char(20)not null foreign key(customerID)references userinfo(customerID), PRIMARY KEY(CardId)) create table TransInfo( transDate datetime not null default'getdate()', cardID char(50)foreign key(cardID)references cardinfo(cardID), transType char(10)not null, transMoney bigint not null, remark char(20), ID int identity(1,1)not null) Insert into userinfo values('10001','李清','420101************','2071-84216821','湖北武汉'); Insert into userinfo values('10002','玉清','420101************','2071-84216820','湖北武汉'); INSERT INTO CardInfo V ALUES('102128001','RMB','活期',getdate(),'10000','10000','84212121','否','10001'); INSERT INTO CardInfo V ALUES('102128002','RMB','活期',getdate(),'10001','10001','84202020','否','10002');

sql语句大全1

SQL语句大全 --语句功能 --数据操作 SELECT --从数据库表中检索数据行和列INSERT --向数据库表添加新数据行 DELETE --从数据库表中删除数据行 UPDATE --更新数据库表中的数据 --数据定义 CREATE TABLE --创建一个数据库表 DROP TABLE --从数据库中删除表 ALTER TABLE --修改数据库表结构 CREATE VIEW --创建一个视图 DROP VIEW --从数据库中删除视图 CREATE INDEX --为数据库表创建一个索引DROP INDEX --从数据库中删除索引 CREATE PROCEDURE --创建一个存储过程 DROP PROCEDURE --从数据库中删除存储过程CREATE TRIGGER --创建一个触发器 DROP TRIGGER --从数据库中删除触发器CREATE SCHEMA --向数据库添加一个新模式DROP SCHEMA --从数据库中删除一个模式CREATE DOMAIN --创建一个数据值域 ALTER DOMAIN --改变域定义 DROP DOMAIN --从数据库中删除一个域 --数据控制 GRANT --授予用户访问权限 DENY --拒绝用户访问 REVOKE --解除用户访问权限 --事务控制 COMMIT --结束当前事务 ROLLBACK --中止当前事务 SET TRANSACTION --定义当前事务数据访问特征--程序化SQL DECLARE --为查询设定游标 EXPLAN --为查询描述数据访问计划 OPEN --检索查询结果打开一个游标 FETCH --检索一行查询结果 CLOSE --关闭游标 PREPARE --为动态执行准备SQL 语句EXECUTE --动态地执行SQL 语句 DESCRIBE --描述准备好的查询

数据库SQL查询语句大全

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1. dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definition only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tab name(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料!

SQL Server 2008 数据库引擎优化顾问介绍

SQL Server 2008数据库引擎优化顾问介绍 1数据库引擎优化顾问概述 借助MicrosoftSQLServer数据库引擎优化顾问,您不必精通数据库结构或深谙MicrosoftSQLServer,即可选择和建立索引、索引视图和分区的最佳集合。 数据库引擎优化顾问分析一个或多个数据库的工作负荷和物理实现。工作负荷是对要优化的一个或多个数据库执行的一组Transact-SQL语句。在优化数据库时,数据库引擎优化顾问将运用跟踪文件、跟踪表或Transact-SQL脚本作为工作负荷输入。可以在SQL Server Management Studio中运用查询编辑器建立Transact-SQL脚本工作负荷。可以通过运用SQL Server Profiler中的优化模板来建立跟踪文件和跟踪表工作负荷。有关运用SQL Server Profiler建立可用作工作负荷的跟踪的信息,请参阅SQL ServerProfiler简介。 对工作负荷执行分析后,数据库引擎优化顾问会建议您添加、删除、或修改数据库中的物理设计结构。此顾问还可针对应收集哪些统计信息来备份物理设计结构提出建议。物理设计结构包括聚集索引、非聚集索引、索引视图和分区。数据库引擎优化顾问会推选一组物理设计结构,以降低工作负荷的开销(由查询优化器估计)。 数据库引擎优化顾问的优化功能 数据库引擎优化顾问具备下列功能: *通过运用查询优化器分析工作负荷中的查询,推选数据库的最佳索引组合。 *为工作负荷中引用的数据库推选对齐分区或非对齐分区。 *推选工作负荷中引用的数据库的索引视图。 *分析所建议的修改将会产生的影响,包括索引的运用,查询在表之间的分布,以及查询在工作负荷中的性能。 *推选为执行一个小型的疑问查询集而对数据库执行优化的要领。

sql数据库期末考试题及答案

一、单选题(共 10 道试题,共 50 分。)V 1. SQL Server中,保存着每个数据库对象的信息的系统表是()。 A. sysdatabases B. Syscolumns C. Sysobjects D. Syslogs 满分:5 分 2. 在存在下列关键字的SQL语句中,不可能出现Where子句的是()。 A. Update B. Delete C. Insert D. Alter 满分:5 分 3. 在查询语句的Where子句中,如果出现了“age Between 30 and 40”,这个表达式等同于()。 A. age>=30 and age<=40 B. age>=30 or age<=40 C. age>30 and age<40 D. age>30 or age<40 满分:5 分 4. 如果要在一管理职工工资的表中限制工资的输入围,应使用()约束。 A. PDRIMARY KEY B. FOREIGN KEY C. unique D. check 满分:5 分 5. 记录数据库事务操作信息的文件是()。 A. 数据文件 B. 索引文件 C. 辅助数据文件 D. 日志文件 满分:5 分 6. 要查询XSH数据库CP表中产品名含有“冰箱”的产品情况,可用()命令。 A. SELECT * FROM CP WHERE 产品名称LIKE ‘冰箱’ B. SELECT * FROM XSH WHERE 产品名称LIKE ‘冰箱’ C. SELECT * FROM CP WHERE 产品名称LIKE ‘%冰箱%’ D. SELECT * FROM CP WHERE 产品名称=‘冰箱’ 满分:5 分 7. 储蓄所有多个储户,储户能够在多个储蓄所存取款,储蓄所与储户之间是()。 A. 一对一的联系 B. 一对多的联系 C. 多对一的联系 D. 多对多的联系 满分:5 分

数据库图书信息管理数据库SQL语句

实验 SQL语言 一、实验目的 1、理解数据库以及数据表的设计; 2、熟悉SQL Server2005中的数据类型; 3、熟悉使用SQL语句创建和删除模式和索引; 4、掌握使用SQL语句创建、修改和删除数据表; 5、掌握使用SQL语句查询表中的数据; 6、掌握使用SQL语句插入、修改和删除数据表中的数据; 7、掌握使用SQL语句创建、删除、查询和更新视图。 二、实验容 (一)创建数据库和模式 1、通过SQL语句创建图书信息管理数据库,命名为“db_Library”,数据文件和日志文件放在D盘下以自己学号和命名的文件夹中,数据文件的逻辑名为db_Library_data,数据文件的操作系统名为db_Library_data.mdf,文件初始大小为10MB,最大可增加至300MB,增幅为10%;日志文件的逻辑名为db_Library_log,日志文件的操作系统名为db_Library_data.ldf,文件初始大小为5MB,最大可增加至200MB,增幅为2MB。 2、通过SQL语句在该数据库中创建模式L-C。 (二)创建和管理数据表 要求为各数据表的字段选择合适的数据类型及名称;为各数据表设置相应的完整性约束条件。 1、通过SQL语句将以下数据表创建在L-C模式下: 课程信息表(tb_course)——课程编号Course number 、课程名Course name 、先修课The first course 、学分credit 2、通过SQL语句将以下数据表创建在该数据库的默认模式dbo下: 图书类别信息表(tb_booktype)——类别编号Type number 、类别名称Category name 图书信息表(tb_book)——图书编号ISBN 、类别编号Type number、书名title 、作者author、BookPublic、定价BookPrice、库存数Inventory number 读者信息表(tb_reader)——读者编号Reader ID 、、性别、学号Student ID 、班级、系部pastern 借阅信息表(tb_borrow)——图书编号、读者编号、借阅日期Borrowing date 、归还日期Return date 3、通过SQL语句对读者信息表进行修改:删除系部字段、添加所在系字段。 4、通过SQL语句对图书信息表进行修改:将定价的数据类型改为REAL。 5、通过SQL语句删除课程信息表。 (三)创建和删除索引 1、使用SQL语句在图书信息表上创建一个非聚簇索引IX_S_QUANTITY,要求按照该表中库存数字段的降序创建。 2、使用SQL语句在读者信息表上创建一个唯一的非聚簇索引IX_S_NAME,要求按照该表中的字段的升序创建。 3、使用SQL语句删除之前创建的两个索引。 (四)数据库及数据表设计

数据库SQL查询语句大全修订稿

数据库S Q L查询语句 大全 公司标准化编码 [QQX96QT-XQQB89Q8-NQQJ6Q8-MQM9N]

经典SQL查询语句大全 一、基础 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2… from tab_old definitio n only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type

注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明:添加主键:Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col….) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement 删除视图:drop view viewname 10、说明:几个简单的基本的sql语句 选择:select * from table1 where 范围 插入:insert into table1(field1,field2) values(value1,value2) 删除:delete from table1 where 范围 更新:update table1 set field1=value1 where 范围 查找:select * from table1 where field1 like ’%value1%’ ---like的语法很精妙,查资料! 排序:select * from table1 order by field1,field2 [desc] 总数:select count as totalcount from table1 求和:select sum(field1) as sumvalue from table1 平均:select avg(field1) as avgvalue from table1 最大:select max(field1) as maxvalue from table1 最小:select min(field1) as minvalue from table1 11、说明:几个高级查询运算词 A:UNION 运算符

数据库经典SQL语句大全

数据库经典SQL语句大全 篇一:经典SQL语句大全 下列语句部分是Mssql语句,不可以在access中使用。 SQL分类: DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE) DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT) DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK) 首先,简要介绍基础语句: 1、说明:创建数据库 CREATE DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的 device USE master EXEC sp_addumpdevice 'disk','testBack', 'c:mssql7backupMyNwind_1.dat' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表

create table tabname(col1 type1 [not null] [primary key],col2 type2 [not null],..) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2? from tab_old definition only 5、说明: 删除新表: tabname 6、说明: 增加一个列:Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型的长度。 7、说明: 添加主键:Alter table tabname add primary key(col) 说明: 删除主键:Alter table tabname drop primary key(col) 8、说明: 创建索引:create [unique] index idxname on tabname(col?.) 删除索引:drop index idxname 注:索引是不可更改的,想更改必须删除重新建。

SQL数据库查询语句范例

推荐一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和Where子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。Select nickname,email FROM testtable Where n ame=’张三’ (一) 选择列表 选择列表(select_list)指出所查询列,它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列例如,下面语句显示testtable表中所有列的数据:Select * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如:Select nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: Select 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 Select语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行,默认为ALL。使用DISTINC T选项时,对于所有重复的数据行在Select返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行,而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: Select TOP 2 *FROM testtable Select TOP 20 PERCENT * FROM testtable (二) FROM子句 FROM子句指定Select语句查询及与查询相关的表或视图。在FROM子句中最多可指定256个表或视图,它们之间用逗号分隔。 在FROM子句同时指定多个表或视图时,如果选择列表中存在同名列,这时应使用对象名限定这些列所属的表或视图。例如在usertable和cityta ble表中同时存在cityid列,在查询两个表中的cityid时应使用下面语句格式加以限定: Select username,citytable.cityid FROM usertable,citytable Where usertable.cityid=citytable.cityid 在FROM子句中可用以下两种格式为表或视图指定别名: 表名 as 别名表名别名

01第一讲数据库及Microsoft SQL Server简介

第一讲数据库及Microsoft SQL Server 简介 1.1几大数据库简介 (1)ORACLE 是甲骨文公司的旗舰产品。ORACLE是以高级结构化查询语言(SQL)为基础的大型关系数据库。是目前最流行的客户/服务器(CLIENT/SERVER)体系结构的数据库之一。目前已经发展到11g的版本。从ORACLE7.X以来引入了共享SQL和多线索服务器体系结构。这减少了ORACLE的资源占用,并增强了ORACLE的能力,使之在低档软硬件平台上用较少的资源就可以支持更多的用户,而在高档平台上可以支持成百上千个用户。并具有良好的移植性。 (2)IBM公司的DB2通用数据库为企业提供领先的商业解决方案。Universal 是其最新版本。它与IBM的Web Sphere一起构筑了强大的现代电在商务的平台。(3)Informix数据库,目前也是归属于IBM旗下。在我国的80%的银行和电信产业使用的是Informix数据库,它是以高效安全著称。它一般是在UNIX或Linux 平台下运行,目前的版本是Informix Dynamic Server 2000版本。 (4)Sysbase数据库是Sysbase 公司推出的大型关系数据库。支持多用户并发事务处理。 (5)Interbase是Borland公司发布的,一个个高性能,强大的跨平台数据库系统,对系统要求较低。 1.2 SQL Server 2000概述 SQL Server 2000是微软公司出品的一个大型关系数据库管理系统(RDBMS),它不仅有卓越的性能,而且有先进的管理功能,支持XML语言。它还可以与Windows 2000操作系统整合,充分发挥Windows 2000操作系统的强大功能。 (1) 数据库:我们把一些由行和列组成的二维表格存放在数据库文件当中,这些文档由专门的数据库管理系统负责读取,解析和管理。数据库中数据结构比普通数据文件中的数据结构化程度更高。比如:不存在用户或应用程序必须同时更新的重复数据。可以自行组织数据表与表之间的关系。(2) 关系数据库:在数据库领域中存在着多种的数据组织方式。关系型数据库是效率最高的一种数据库系统,在一个关系数据库中,相同逻辑结构的数据被归类分别存放到单独的表中,这些存放不同数据的表格根据一定的规范,用“关系”连接起来,形成了一个整体。 (3) SQL语言:在关系数据库中可以使用多种不同的数据库语言,但是其中最常用的是SQL(结构化查询语言)。SQL Server 2000支持由美国国家标准协会(ANSI)和国际标准协会(ISO)在1992年公布的SQL标准(Entry Level SQL-92)。SQL Server 2000 支持的SQL版本称为:Transact-SQL。(4) XML:XML(可扩展标记语言)是在Internet上新兴的一种标准格式语言。 大多数SQL语句把运行的结果返回到一个关系结果集中,而SQL Server 2000支持把SQL语句的运行结果直接作为一个XML文档返回。 1.2.1 SQL Server 2000特性

SQL2008数据库使用手册

SQL数据库用户使用手册 如何将本地SQL数据库导入到万网主机上,一般分为4个步骤 示例: 第一步:通过SQL脚本生成表结构,可以保证本地数据库中视图、存储过程、以及表的默认值、标识、主键等属性的完整性,避免由于DTS传输引起丢失属性的问题,同时使用查询分析器执行SQL脚本,在服务器端创建表结构; 1)、请您先运行本地的企业管理器 2)、请您点击您本地的数据库点击右健-》选择生成SQL脚本

3)、选择常规-》点击全部显示,选择您想导出的脚本对象 4)、点击选项-》表脚本选项,把您所用到的脚本选中然后点击确定 5)为自己导入的.sql脚本文件命名,并保存在本地

6)、找到刚才我们保存在本地的.sql脚本文件,使用记事本打开 7)、选择编辑-》替换,把程序中所有[dbo]的字符都更改成您万网发信告知您的数据库登

陆名,更换完成后保存关闭记事本 8)、通过万网通知书中的数据库登陆地址、数据库登陆名、和数据库密码,使用企业管理器连接到万网的主机服务器上,然后选择查询分析器

9)、点击打开选择刚才编辑过的.sql脚本,然后点击运行 第二步:在本地创建一个和万网主机相同权限的SQL数据库 1)、完成上面操作后,请您选择数据库点击右键选择新建数据库,由于您在万网申请的是虚拟主机,万网分配的权限都是user的而不是dbo的权限,因此需要您在本地也创建一个与服务器一样的配置,以便正常完成导入操作

2)、在常规-》名称处输入万网开通通知中告知您的数据库库名,然后点击确定。例如:cw01001_db 3)、选择安全性-》新建登陆

数据库基本SQL语句大全

数据库基本SQL语句大全 数据库基本----SQL语句大全 一、基础 1、说明:创建数据库 Create DATABASE database-name 2、说明:删除数据库 drop database dbname 3、说明:备份sql server --- 创建备份数据的device USE master EXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1、d at' --- 开始备份 BACKUP DATABASE pubs TO testBack 4、说明:创建新表 create table tabname(col1 type1 [not null] [primary key],col2 typ e2 [not null],、、) 根据已有的表创建新表: A:create table tab_new like tab_old (使用旧表创建新表) B:create table tab_new as select col1,col2…from tab_old definit ion only 5、说明:删除新表 drop table tabname 6、说明:增加一个列 Alter table tabname add column col type 注:列增加后将不能删除。DB2中列加上后数据类型也不能改变,唯一能改变的就是增加varchar类型的长度。 7、说明:添加主键: Alter table tabname add primary key(col) 说明:删除主键: Alter table tabname drop primary key(col) 8、说明:创建索引:create [unique] index idxname on tabname(col…、) 删除索引:drop index idxname 注:索引就是不可更改的,想更改必须删除重新建。 9、说明:创建视图:create view viewname as select statement

数据库sql查询语句上机练习1_习题_结果(单世民)

习题1 请根据给出的数据库表结构来回答相应问题: DEPT (DEPTNO INT, DNAME VARCHAR(14),LOC VARCHAR(13)); EMP (EMPNO INT,ENAME VARCHAR(10), JOB VARCHAR(9), MGR INT, HIREDATE DATE, SAL FLOAT, COMM FLOAT, DEPTNO INT); BONUS (ENAME VARCHAR(10), JOB VARCHAR(9), SAL INT, COMM INT); SALGRADE ( GRADE INT, LOSAL INT, HISAL INT); 其中表中包含如下数据: DEPT表: EMP表: SALGRADE表:

BONUS表: 无数据 根据上面描述完成下面问题: (注意:注意保存脚本,尤其是DDL和DML,以便进行数据还原) DDL 1. 写出上述表的建表语句。此外,在DEPT上创 建名为”PK_DEPT”的主键约束,在EMP表上 创建名为”PK_EMP”的主键约束以及指向表 DEPT的外键约束”FK_DEPTNO”。 命令: Create table DEPT (DEPTNO INT NOT NULL,DNAME VARCHAR(14),LOC VARCHAR(13)); Alter table DEPT add constraint PK_DEPT PRIMARY KEY (DEPTNO); create table EMP(EMPNO INT NOT NULL,ENAME VARCHAR(10),JOB VARCHAR(9),MGR INT,HIREDATE DATE, SAL FLOAT,COMM FLOAT,DEPTNO INT); alter table EMP add constraint PK_EMP PRIMARY KEY (EMPNO); alter table EMP add constraint FK_DEPTNO foreign key(DEPTNO) references DEPT(DEPTNO);

相关文档