当前位置:文档之家› PHP+MongoDB可直接使用的数据库操作调用类 – 查询增加删除更新记录

PHP+MongoDB可直接使用的数据库操作调用类 – 查询增加删除更新记录

PHP+MongoDB可直接使用的数据库操作调用类 – 查询增加删除更新记录
PHP+MongoDB可直接使用的数据库操作调用类 – 查询增加删除更新记录

PHP+MongoDB可直接使用的数据库操作调用类–查询增加删除更新记录

/**

* Mongodb数据库配置信息

* hmh

* 2010-11-10

*

*/

class MongodbConfig {

private static$db_configs=array();

public static function getDbConfigs($db_name) {

self::_set_db_configs();

return self::$db_configs[$db_name];

}

private static function_set_db_configs() {

if(empty(self::$db_configs) ) {

self::$db_configs=array(

"blog"=>array(

"dbhost" =>"localhost",

"dbuser" =>'verusr',

"dbpass" =>'159753',

"dbname" =>"version",

"dbprefix" =>"",

"port" =>'27017'

)

);

}

}

}

/**

* Mongodb简单操作

* hmh

* 2010-11-10

*/

class MongodbClass

{

private$db_host;

private$db_user;

private$db_password;

private$db_name;

private$db_prefix;

private$result;

private$db_port='';

private$db="";

private$is_close=true;

private$mongodb_connection="";

//用外部定义的变量初始类,并连接数据库

function__construct($dbconfig){

$this->_init_mongodb($dbconfig);

}

private function_init_mongodb($dbconfig){

$this->_init_db_config($dbconfig);

$this->open();

}

private function_init_db_config($dbconfig){ $this->db_host= $dbconfig['dbhost'];

$this->db_user= $dbconfig['dbuser'];

$this->db_password= $dbconfig['dbpass']; $this->db_port= $dbconfig['port'];

$this->db_name= $dbconfig['dbname'];

$this->db_prefix= $dbconfig['dbprefix']; }

private function open(){

try{

$this->mongodb_connection=new Mongo($this->db_host.':'.$this-> db_port);

}catch(Exception $e){

die('Mongodb Connection Fail');

}

$this->select_db($this->db_name);

$this->is_close=false;

return$this->db;

}

/**

* 插入数据

*@param string $collnections_name 集合名称 |

$collection_name='column'; //默认的集合即sql的from

*@param array $data_array 插入内容 |

$data_array=array('column_exp'=>'xiaocai','column_name'=>'Yourname') ;

* 使用方法 $mongodb->insert($collection_name,$data_array);

*/

public function insert($collnections_name,$data_array){

$this->_auto_connection_mongondb();

$collnection = $this->_select_collection($collnections_name); return$collnection->insert($data_array);

}

/**

* 查询一条记录

*@param string $collnections_name 集合名称 |

$collection_name='column'; //默认的集合即sql的from

*@param array $query 查询的条件array(key=>value) | $sql=array('column_exp'=>'xiaocai'); //即sql的Where

*@param array $filed 需要列表的字段信息

array(filed1,filed2) | $new=array('column_name','_id'); //即sql 的 select后的内容

* 使用方法 $rs = $mongodb->fetch_one($collection_name,$sql,$new);

*

*/

public

function fetch_one($collnections_name,$query,$filed=array()){

$this->_auto_connection_mongondb();

$connnection = $this->db->selectCollection($collnections_name);

$result = $connnection->findOne($query,$filed);

return$result;

}

public function fetch_all($collection_name,$query,$field=array()){ $this->_auto_connection_mongondb();

$result =array();

$collection = $this->_select_collection($collection_name);

$cursor = $collection->find($query,$field);

while($cursor->hasNext()){

$result[] = $cursor->getNext();

}

return$result;

}

/**

* 查询记录集的条数

*@param string $collection_name 集合名称 |

$collection_name='column'; //默认的集合 from

*@param array $query 查询条件 |

$sql=array('column_exp'=>'xiaocai'); //即sql的Where

*@return int

* $rs2 = $mongodb->count($collection_name,$sql);

*/

public function count($collection_name,$query=array()){

$this->_auto_connection_mongondb();

$collection = $this->_select_collection($collection_name);

return$collection->count($query);

}

/**

* 更新数据(注一次只能更新一条记录)

*@param string $collection_name 集合名称|表名

*@param array $query 查询条件array(key=>value) | $where=array('column_exp'=>'update'); //查询条件

*@param array $update_data 要更新的数据 |

* 全部数据更新可以用:

$update_data=array('column_name'=>'col276','column_exp'=>'update');

* 只更新指定列必须用:

$temp_date=array('ALL'=>'11232');

* $update_data=array ('$set'=>$temp_date); 这样弄成子数组否则会把整个列替换掉。

*@return bool

* $mongodb->update_one($collection_name,$where,$update_data);

*

* 附录:

* $inc

* 如果记录的该节点存在,让该节点的数值加N;如果该节点不存在,让该节点值等于N

设结构记录结构为 array('a'=>1,'b'=>'t'),想让a加5,那么:

$coll->update(

array('b'=>'t'),

array('$inc'=>array('a'=>5)),

)

* $set

让某节点等于给定值

设结构记录结构为 array('a'=>1,'b'=>'t'),b为加f,那么:

$coll->update(

array('a'=>1),

array('$set'=>array('b'=>'f')),

)

* $unset

删除某节点

设记录结构为 array('a'=>1,'b'=>'t'),想删除b节点,那么:

$coll->update(

array('a'=>1),

array('$unset'=>'b'),

)

* $push

如果对应节点是个数组,就附加一个新的值上去;不存在,就创建这个数组,并附加一个值在这个数组上;如果该节点不是数组,返回错误。

设记录结构为array('a'=>array(0=>'haha'),'b'=>1),想附加新数据到节点a,那么:

$coll->update(

array('b'=>1),

array('$push'=>array('a'=>'wow')),

)

这样,该记录就会成为:array('a'=>array(0=>'haha',1=>'wow'),'b'=>1)

* $pushAll

与$push类似,只是会一次附加多个数值到某节点

* $addToSet

如果该阶段的数组中没有某值,就添加之

设记录结构为array('a'=>array(0=>'haha'),'b'=>1),如果想附加新的数据到该节点a,那么:

$coll->update(

array('b'=>1),

array('$addToSet'=>array('a'=>'wow')),

)

如果在a节点中已经有了wow,那么就不会再添加新的,如果没有,就会为该节点添加新的item——wow。

* $pop

设该记录为array('a'=>array(0=>'haha',1=>'wow'),'b'=>1)

删除某数组节点的最后一个元素:

$coll->update(

array('b'=>1),

array('$pop=>array('a'=>1)),

)

删除某数组阶段的第一个元素

$coll->update(

array('b'=>1),

array('$pop=>array('a'=>-1)),

)

* $pull

如果该节点是个数组,那么删除其值为value的子项,如果不是数组,会返回一个错误。设该记录为array('a'=>array(0=>'haha',1=>'wow'),'b'=>1),想要删除a中value为haha的子项:

$coll->update(

array('b'=>1),

array('$pull=>array('a'=>'haha')),

)

结果为: array('a'=>array(0=>'wow'),'b'=>1)

* $pullAll

与$pull类似,只是可以删除一组符合条件的记录。

*

*/

public function update_one($collection_name,$query,$update_data){

$collection = $this->_select_collection($collection_name);

$result = $collection->update($query,$update_data);

return$result;

}

/**

* 更新所以满足条件的记录

*@param string $collection_name

*@param array $query

*@param array $update_data

*@return boolea

*/

public function update_all($collection_name,$query,$update_data){ $result =false;

$collection = $this->_select_collection($collection_name);

$count = $collection->count($count);

for($i = 1;$i<=$count;$i++){

$result = $collection->update($query,$update_data);

}

return$result;

}

/**

* 删除记录

*@param string $collection_name 集合名称(相当于关系数据库中的表) *@param array $query 删除条件

*@param array $option 删除的选项详见mongodb开发手册*@return unknown

* $mongodb->delete($collection_name,$update_data);

*/

public

function delete($collection_name,$query,$option=array("justOne"=>fal

se)){

$collection = $this->_select_collection($collection_name);

$result = $collection->remove($query,$option);

return$result;

}

private function_select_collection($collection_name){

$collection = $this->db->selectCollection($collection_name);

return$collection;

}

public function select_db($db_name){

$this->db= $this->mongodb_connection->selectDB($db_name);

//$this->_auth();

}

private function_auth(){

$result =

$this->db->authenticate($this->db_user,$this->db_password);

return$result['ok'];

}

private function_close(){

if(!$this->is_close){

$this->mongodb_connection->close();

$this->is_close=true;

}

}

private function_auto_connection_mongondb(){

if($this->is_close){

$this->open();

}

}

public function__destruct(){

$this->_close();

}

}

$mongodbConfig =new MongodbConfig();

$blogDbConfig = $mongodbConfig->getDbConfigs('blog'); $mongodb =new MongodbClass($blogDbConfig);

//print_r($mongodb);

?>

数据库基础操作语句

一、基础 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 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 运算符

简单数据库查询语句

数据查询语言(SELECT语句) 数据操纵语言(INSERT, UPDATE, DELETE语句) 数据定义语言(如CREATE, DROP等语句) 数据控制语言(如COMMIT, ROLLBACK等语句 超详细的SQL语句语法2008-07-11 14:25简单的Transact-SQL查询只包括选择列表、FROM 子句和WHERE子句 一、简单查询 简单的Transact-SQL查询只包括选择列表、FROM子句和WHERE子句。它们分别说明所查询列、查询的表或视图、以及搜索条件等。 例如,下面的语句查询testtable表中姓名为“张三”的nickname字段和email字段。SELECT nickname,email FROM testtable WHERE name='张三' (一) 选择列表 选择列表(select_list)指出所查询列 它可以是一组列名列表、星号、表达式、变量(包括局部变量和全局变量)等构成。 1、选择所有列 例如,下面语句显示testtable表中所有列的数据: SELECT * FROM testtable 2、选择部分列并指定它们的显示次序 查询结果集合中数据的排列顺序与选择列表中所指定的列名排列顺序相同。 例如: SELECT nickname,email FROM testtable 3、更改列标题 在选择列表中,可重新指定列标题。定义格式为: 列标题=列名 列名列标题 如果指定的列标题不是标准的标识符格式时,应使用引号定界符,例如,下列语句使用汉字显示列标题: SELECT 昵称=nickname,电子邮件=email FROM testtable 4、删除重复行 SELECT语句中使用ALL或DISTINCT选项来显示表中符合条件的所有行或删除其中重复的数据行, 默认为ALL。使用DISTINCT选项时,对于所有重复的数据行在SELECT返回的结果集合中只保留一行。 5、限制返回的行数 使用TOP n [PERCENT]选项限制返回的数据行数,TOP n说明返回n行, 而TOP n PERCENT时,说明n是表示一百分数,指定返回的行数等于总行数的百分之几。例如: SELECT TOP 2 *FROM testtable SELECT TOP 20 PERCENT * FROM testtable 9、说明:in 的使用方法 select * from table1 where a [not] in (‘值1’,’值2’,’值4’,

MySQL数据库高级查询和多表查询二

机试测试试卷 (MySQL数据库应用与开发) 注意:考试结束试卷必须交Array 回,不交回试卷者成绩无效题目:MySQL 数据库高级查询和多表查询 一、语言和环境 A、实现技术 SQL 语句练习 B、环境要求 Mysql5.7+Navicat 二、实验要求 1、创建名为 s_t 的数据库,参数全部使用 UTF-8 实验目的: 通过上机实验验证数据库的多表的高级查询操作。 实验内容:

1、将s_t数据库还原。 2、在s_t数据库中,完成以下多表连接查询的操作。 (1)查询计算机系学生的修课情况,要求列出学生的名字、所修课的课程号和成绩。 (2)查询“信息管理系”修了“计算机文化学”的学生姓名和成绩。 (3)查询所有选修了Java课程的学生情况,列出学生姓名和所在系。 (4)统计每个系的学生的考试平均成绩。 (5)统计计算机系学生每门课程的选课人数、平均成绩、最高成绩和最低成绩。 (6)查询与刘晨在同一个系学习的学生的姓名和所在的系。 (7)查询与“数据结构”在同一个学期开设的课程的课程名和开课学期。 (8)查询至少被两个学生选的课程的课程号。 (9)查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生。 (10)查询没人选的课程的课程名。 (11)查询计算机系没有选课的学生,列出学生姓名和性别。 (12)统计计算机系每个学生的选课门数,包括没有选课的学生。 (13)查询信息管理系选课门数少于3门的学生的学号和选课门数,包括没有选课的学生。查询结果按选课门数递增排序。 (14)查询考试成绩最高的三个成绩,列出学号、课程号和成绩。 (15) 查询Java考试成绩最高的前三名的学生的姓名、所在系和VB考试成绩。 (16)查询选课人数最少的两门课程(不包括没有人选的课程),列出课程号和选课人数。 (17)查询计算机系选课门数超过2门的学生中,考试平均成绩最高的前2名(包括并列的情况)学生的学号、选课门数和平均成绩。 (18)将计算机系的学生信息保存到#ComputerStudent局部临时表中。 (19)将选了Java课程的学生的学号及成绩存入永久表Java_Grade中。 (20)统计每个学期开设的课程总门数,将结果保存到永久表Cno_Count表中 (21)利用例19题生成的新表,查询第2学期开设的课程名、学分和课程总门数。 3、在s_t数据库中,完成以下多表的高级查询操作。 (1)查询选了Java课程的学生的学号、姓名、所在系和成绩,并对所在系进行如下处理:“计算机系”:显示“CS”;“信息管理系”:显示“IM”;“通信工程系”:显示“COM”。(2)查询“C001”课程的考试情况,列出学号和成绩,对成绩进行如下处理:如果成绩大于等于90,则在查询结果中显示“优”;如果成绩在80到89分之间,则在查询结果中显示“良”;如果成绩在70到79分之间,则在查询结果中显示“中”;如果成绩在60到69分之间,则在查询结果中显示“及格”;如果成绩小于60分,则在查询结果中显示“不及格”。 (3)统计每个学生的考试平均成绩,列出学号、考试平均成绩和考试情况,其中考

数据库平时作业题(华理2017)

数据库平时作业 第一章数据库系统引论 1.不属于逻辑数据模型的是( A ) A E-R模型 B 关系模型 C 网状模型 D 层次模型 2、用户看到的现实系统的、描述实际领域的情况的模型是( A ) A E-R模型 B 关系模型 C 逻辑模型 D 物理模型 3、 MS SQL Server是( D )。 A. 数据库 B. 数据库系统 C. 数据处理系统 D. 数据库管理系统 4、下面没有反映数据库优点的是( A )。 A. 数据面向应用程序 B. 数据冗余度低 C. 数据独立性高 D.数据共享性高 5、表示数据库的概念模型一般使用( C )。 A. 用户活动图 B. 数据流图 C. E-R图 D. 流程图 6、数据库(DB)、数据库系统(DBS)和数据库管理系统(DBMS)三者之间的关系是( A )。 A. DBS包括DB和DBMS B. DBMS包括DB和DBS C. DB包括DBMS和DBS D. DBS就是DB,也就是DBMS 7、数据库系统包括数据库、数据库管理系统、数据库管理员和各种应用四个部分。 8、用逻辑数据模型描述的模式有:外模式、内模式。 9、数据管理技术经历了人工管理、文件系统和数据库系统三个发展阶段。 10、概念模式是用逻辑数据模型对一个单位的数据的描述。 第二章数据模型 1.不属于关系数据模型中的概念是( B ) A .主键 B 系 C 关系 D 属性

2.有关系:R(A,B,C)PK=A S(D,A) PK=D,FK=A,参照于R的属性A。关系R和S的元组如图1所示。 指出图1关系S中违反关系完整性规则的元组是( C ) A (1,2) B (2,null) C (3,3) D (4,1) 3.有一个关系:学生(学号,姓名,系别),规定学号的值域是8个数字组成的字符串,这一规则属于( C ) A 实体完整性约束 B 引用完整性约束 C 一般性完整性约束 D 关键字完整性约束 4. 在关系运算中,化费时间可能最长的运算是( C )。 A. 投影 B. 选择 C. 笛卡尔乘积 D. 加 5. 从关系中挑选满足条件的记录的运算称为( A )。 A. 选择运算 B. 投影运算 C. 联接运算 D.笛卡尔运算 6. 同一关系模型的任两个元组值( A )。 A. 不能全同 B. 可全同 C. 必须全同 D. 以上都不是 7. 已知关系R如图1所示,可以作为R主键的属性组是( B )。 图1 A. ABC B. ABD C. ACD D. BCD

MYSQL数据库基本操作命令

MYSQL数据库基本操作命令 用户名和密码:123456 创建一个名称为mydb1的数据库。 create database mydb1; 查看所有数据库 show databases; 创建一个使用utf-8字符集的mydb2数据库。 create database mydb2 character set utf8; 创建一个使用utf-8字符集,并带校对规则的mydb3数据库。 create database mydb3 character set utf8 collate utf8_general_ci; 显示库的创建信息 show create database mydb3; 删除前面创建的mydb1数据库 drop database mydb1; 查看服务器中的数据库,并把其中某一个库的字符集修改为gb2312; alter database mydb2 character set gb2312; show create database mydb2; 备份库 1、准备库的数据 create database mydb1; use mydb1; create table test ( id int ); insert into test(id) values(1); select * from test; 2、删除库:drop database mydb1; 3、 4.1 创建库:create database mydb1; 4.2 \. test.sql (通过执行脚本文件实现) 5、

创建一个员工表 use mydb1; 进入库 create table employee ( id int, name varchar(20), gender varchar(4), birthday date, entry_date date, job varchar(40), salary double, resume text )character set utf8 collate utf8_general_ci; 查看库中所有表 show tables; 查看表的创建细节 show create table employee; 查看表的结构 desc employee; 在上面员工表的基本上增加一个image列。 alter table employee add image blob; 修改job列,使其长度为60。 alter table employee modify job varchar(60); 删除sex列。 alter table employee drop gender; 表名改为user。 rename table employee to user; 修改表的字符集 alter table user character set gb2312; show create table user; 列名name修改为username alter table user change column name username varchar(20); 使用insert语句向表中插入一个员工的信息。 insert into employee(id,username,birthday,entry_date,job,salary,resume)

SQLServer数据库的高级操作

(1)批处理 (2) (2)变量 (3) (3)逻辑控制 (5) (4)函数 (7) (4.1)系统函数 (7) (4.2)自定义函数 (13) (5)高级查询 (23) (6)存储过程 (35) (7)游标 (36) (8)触发器 (50) SQL Server 数据库的高级操作 (1) 批处理 (2) 变量 (3) 逻辑控制 (4) 函数 (5) 高级查询 */ (1)批处理 将多条SQL语句作为一个整体去编译,生成一个执行计划,然后,执行! 理解批处理的关键在于"编译",对于由多条语句组成的一个批处理, 如果在编译时,其中,有一条出现语法错误,将会导致编译失败! create table t ( a int,

)

-- 如果多行注释中包含了批处理的标识符go -- 在编译的过程中代码将会被go分割成多个部分来分批编译-- 多行注释的标记将会被分隔而导致编译出错 -- 以下几条语句是三个非常经典的批处理 -- 你猜一下会添加几条记录! /* insert into t values (1,1) go */ insert into t values (2,2) go /* insert into t values (3,3) */ go -- 查询看添加了几条记录 select * from t

truncate table t (2)变量 -- 全局变量 SQL Server中全局变量由系统定义、系统维护,用户一般仅可对其进行读取!-- 查看SQL Server版本 print @@version -- 服务器名称 print @@servername -- 系统错误编号 insert into t values ('a','a') print @@error insert into t values ('a','a') if @@error = 245 print 'Error' -- SQL Server 版本的语言信息 print @@LANGUAGE -- 一周的第一天从星期几算起 print @@datefirst

数据库基本操作习题与答案

第三章数据库基本操作 一、选择题 1. 如果需要给当前表增加一个字段,应使用的命令是________。 A) APPEND B) INSERT C) EDIT D) MODIFY STRU 2. 设表文件及其索引已打开,为了确保指针定位在物理记录号为1的记录上,应该使用命令________。 A) SKIP 1 B) SKIP -1 C) GO 1 D) GO TOP 3. 要显示数据库中当前一条记录的内容,可使用命令________。 A) LIST B) BROWSE C) TYPE D) DISPLAY 4. 在当前表中,查找第2个女同学的记录,应使用命令________。 A) LOCATE FOR 性别="女" B) LOCATE FOR 性别="女" NEXT 2 C) LIST FOR 性别="女" CONTINUE D) LOCATE FOR 性别="女" CONTINUE 5. Visual FoxPro的数据库表之间可建立两种联系,它们是________。 A) 永久联系和临时联系B) 长期联系和短期联系 C) 永久联系和短期联系D) 长期联系和临时联系 6. 数据库表的索引中,字段值不能有重复的索引有________种。 A) 1 B) 2 C) 3 D) 4 7. 建立表间临时关联的命令是________。 A) LET RELATION TO命令 B) JOIN命令 C) SET RELATION TO命令 D) 以上都不是 8. 通过关键字建立表间的临时关联的前提是________。 A) 父表必须索引并打开B) 子表必须索引并打开 C) 两表必须索引并打开D) 两表都不必索引 9. 查询设计器的“筛选”选项卡上,“插入”按钮的作用是________。 A) 用于增加查询输出字段B) 用于增加查询的表 C) 用于增加查询去向D) 用于插入查询输出条件 10. 在多工作区的操作中,如果选择了4,7,8号工作区并打开了相应的数据库,在命令窗口执行命令SELECT 0,其功能是________。 A) 选择4号工作区为当前工作区B) 选择0号工作区为当前工作区 C) 选择7号工作区为当前工作区D) 选择8号工作区为当前工作区 11. 表结构中空值(NULL)的含义是________。 A) 空格B) 尚未确定

数据库实验报告高级查询

实验三高级查询 1实验目的 (1)掌握SQL的高级查询的使用方法,如分组统计、嵌套查询、集合查询等等。 2实验内容 2.1 掌握SQL高级查询使用方法 (1)分组统计。 (2)嵌套查询,包括IN查询、EXISTS查询。 (3)集合查询。 3实验要求 (1)深入复习教材第三章SQL有关高级查询语句。 (2)根据书上的例子,针对TPCH数据库模式设计分组统计查询、嵌套查询(IN、EXISTS)语句和集合查询语句,每种类型的基本查询至少要设计一个查询,描述清楚查询要求,运行你所设计的查询语句,并截图相应的实验结果,每幅截图并要有较为详细的描述。也可以按照附2所列示例查询做实验。 (3)实验步骤和实验总结中要详细描述实验过程中出现的问题、原因和解决方法。 4实验步骤 4.1 掌握SQL高级查询使用方法 1 不带分组过滤条件的分组统计查询。 统计每个顾客订购金额。 Select sum(totalprice) From orders O,customer C Where O.custkey=C.custkey Group by O.custkey 2 带分组过滤条件的分组统计查询。 查询平均每个订单金额超过1000元的顾客编号及其姓名。 Select C.custkey,https://www.doczj.com/doc/a26780756.html, From orders O,customer C Where O.custkey=C.custkey Group by C.custkey,https://www.doczj.com/doc/a26780756.html, Having A VG (O.totalprice)>1000

3IN嵌套查询。 查询订购了“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where O.orderkey in (select L.orderkey From lineitem L, Where L.partkey in (select P.partkey From part P Where https://www.doczj.com/doc/a26780756.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 4单层EXISTS嵌套查询。 查询没有购买过“海大”制造的“船舶模拟驾驶舱”的顾客。 Select O.custkey From orders O Where not exists (select * From lineitem L Where L.orderkey=O.orderkey and L.partkey in (select P.partkey From part P Where https://www.doczj.com/doc/a26780756.html,=’ 船舶模拟驾驶舱’and p.mfgr=’ 海大’)) 5双层EXISTS嵌套查询。 查询至少购买过顾客“张三”购买过的全部零件的顾客姓名。 Select distinct https://www.doczj.com/doc/a26780756.html, From customer C1,order O1,lineitem L1,part P1 Where C1.custkey=O1.custkey and O1.orderkey=L1.orderkey=P1.partkey and Not exists (select * Where C2.custkey=O2.custkey and O2.orderkey=L2.orderkey=P2.partkey and https://www.doczj.com/doc/a26780756.html,=’ 张三’and Not exists (select * From customer C3,order O3,lineitem L3,part P3 Where C3.custkey=O3.custkey and O3.orderkey=L3.orderkey=P3.partkey and P2.partkey=P3.partkey And C3,name=https://www.doczj.com/doc/a26780756.html,) )

华师在线数据库应用作业及答案

作业 1.第1题 使用( )身份验证方式需要客户端应用程序连接时提供登录时需要的用户标识和密码。 A.Windows身份验证 B.SQL Server 身份验证 C.以超级用户身份登录时 D.其他方式登录时 您的答案:B 2.第2题 表达式'123’+'456’的值是()。 A.123456 B.579 C.'123456’ D.'123456” 您的答案:B

3.第3题 将多个查询结果返回一个结果集合的运算符是( )。 A.JOIN B.UNION C.INTO D.LIKE 您的答案:B 4.第4题 使用T-SQL创建视图时,不能使用的关键字是:( )。 A.ORDER BY B.WHERE https://www.doczj.com/doc/a26780756.html,PUTE D.WITH CHECK OPTION 您的答案:C 5.第5题 系统存储过程在系统安装时就已创建,这些存储过程存放在( )系统数据库中。 A.master

B.tempdb C.model D.msdb 您的答案:A 6.第6题 下面哪种文件无法与SQL Server数据库进行导入和导出操作()。 A.文本文件 B.EXCEL文件 C.Word文件 D.Access文件 您的答案:C 7.第7题 数据库逻辑结构设计阶段的主要功能是:( )。 A.明确用户需求,确定新系统的功能 B.建立数据库的E-R模型 C.将数据库的E-R模型转换为关系模型 D.选择合适的存储结构和存储路径

您的答案:C 8.第8题 在数据库设计过程使用( )可以很好的描述数据处理系统中信息的变换和传递过程。 A.数据流图 B.数据字典 C.E-R图 D.系统流程图 您的答案:A 9.第9题 下列SQL语句中,能够实现参照完整性控制的语句是:( )。 A.FOREIGN KEY B.PRIMARY KEY C.REFERENCES D.FOREIGNKEY和REFERENCES 您的答案:D 10.第10题 T-SQL中的全局变量以( )作前缀。

数据库增删改查基本语句

数据库增删改查基本语句 adoquery1.Fielddefs[1].Name; 字段名 dbgrid1.columns[0].width:=10; dbgrid的字段宽度 adoquery1.Fields[i].DataType=ftString 字段类型 update jb_spzl set kp_item_name=upper(kp_item_name) 修改数据库表中某一列为大写select * from master.dbo.sysobjects ,jm_https://www.doczj.com/doc/a26780756.html,ers 多库查询 adotable1.sort:='字段名称ASC' adotable排序 SQL常用语句一览 sp_password null,'新密码','sa' 修改数据库密码 (1)数据记录筛选: sql="select * from 数据表where 字段名=字段值orderby 字段名[desc] " sql="select * from 数据表where 字段名like '%字段值%' orderby 字段名[desc]" sql="select top10 * from 数据表where 字段名orderby 字段名[desc]" sql="select * from 数据表where 字段名in('值1','值2','值3')" sql="select * from 数据表where 字段名between 值1 and 值2" (2)更新数据记录: sql="update 数据表set 字段名=字段值where 条件表达式" sql="update 数据表set 字段1=值1,字段2=值2……字段n=值n where 条件表达式" (3)删除数据记录: sql="delete from 数据表where 条件表达式" sql="delete from 数据表"(将数据表所有记录删除) (4)添加数据记录: sql="insert into 数据表(字段1,字段2,字段3…) values(值1,值2,值3…)" sql="insert into 目标数据表select * from 源数据表"(把源数据表的记录添加到目标数据表)

JAVA数据库基本操作增删改查(精)

JAVA 数据库基本操作, 增删改查 package mypack; JAVA 数据库基本操作, 增删改查 import java.sql.Connection; import java.sql.ResultSet; import java.util.ArrayList; public class DbOper {//查询多行记录public ArrayList select({Connection conn =null; ResultSet rs =null; try {import java.sql.PreparedStatement; import java.sql.SQLException; PreparedStatement pstmt =null; ArrayList al =new ArrayList(; conn =DbConn.getConn(;pstmt =conn.prepareStatement(“select *from titles ”; rs =pstmt.executeQuery(;while (rs.next({Titles t =new Titles(;t.setTitleid(rs.getString(1;t.setTitle(rs.getString(2;al.add(t;}}catch (SQLExceptione { e.printStackTrace(;}finally {try {//TODO 自动生成catch 块if (rs!=null rs.close(;if (pstmt!=nullpstmt.close(;if (conn!=nullconn.close(;}catch (SQLExceptione { e.printStackTrace(;}}//TODO 自动生成catch 块 return al; }//查询单个对象public Titles selectOne(Stringtitleid{Connection conn =null; ResultSet rs =null; try {PreparedStatement pstmt =null; Titles t =new Titles(;

实验4:数据库的高级查询操作

实验四:数据库的各类数据查询操作 一、实验目的 掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。 二、实验内容和要求 针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。了解和掌握SQL查询语句各个子句的特点和作用,按照SQL程序设计规范写出具体的SQL查询语句,并调试通过。 三、实验步骤 连接查询 1. 查询每个学生及其选修课程的情况: select student.*, sc.* from student, sc where student.sno=sc.sno 比较: 笛卡尔集: select student.*, sc.* from student, sc 自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno 2. 查询每一门课程的间接先行课(只求两层即先行课的先行课): select https://www.doczj.com/doc/a26780756.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.doczj.com/doc/a26780756.html,o 比较: select https://www.doczj.com/doc/a26780756.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=https://www.doczj.com/doc/a26780756.html,o and Second.pcno is not null 3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息: SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno 4. 查询每个学生的学号, 姓名, 选修的课程名和成绩: select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and https://www.doczj.com/doc/a26780756.html,o=https://www.doczj.com/doc/a26780756.html,o 5. 查询平均成绩在80分以上的学生姓名 Select sname from student,sc where student.sno=sc.sno GROUP BY sc.sno HAVING AVG(sc.grade)>80; 高级查询 使用带IN谓词的子查询 1.查询与’刘晨’在同一个系学习的学生的信息: select * from student where sdept in (select sdept from student where sname='刘晨') 比较: select * from student where sdept = (select sdept from student where sname='刘晨') 的异同

数据库大作业设计题目

《数据库原理及技术》大作业大纲 类同卷,网上抄袭,大作业格式不正确一律0分处理 一、课程设计的目的和要求 (1)培养学生运用所学课程《数据库原理及技术》的理论知识和技能,深入理解《数据库原理及技术》课程相关的理论知识,学会分析实际问题的能力。 (2)培养学生掌握用《数据库原理及技术》的知识设计计算机应用课题的思想和方法。 (3)培养学生调查研究、查阅技术文献、资料、手册以及编写技术文献的能力。 (4)通过课程大作业,要求学生在教师的指导下,独立完成大作业要求的相关内容,包括: ①通过调查研究和运用Internet,收集和调查有关资料、最新技术信息。 ②基本掌握撰写小论文的基本步骤和写作方法。 ③根据课题的要求基本理解和掌握E-R图的设计方法和关系模式的转换。 ④根据课题的要求基本理解和掌握数据流图(DFD)和数据字典(DD)的设计方法。 ⑤创建数据库及各种数据库对象。 二、课程设计题目 要求: (1)任选下列一个题目,调查分析一个具体的或模拟的实例; (2)描述该实例的业务信息和管理工作的要求; (3)列出实体、联系; (4)指出实体和联系的属性; (5)画出E-R图; (6)将E-R图转换成关系模式,并注明主码和外码; (7)建立数据字典; (8)创建数据库; (9)根据题目的要求写查询、存储过程、触发器等。 题目: (1)学校图书借阅管理系统 功能要求: ●实现图书信息、类别、出版社等信息的管理; ●实现读者信息、借阅证信息的管理; ●实现图书的借阅、续借、归还管理; ●实现超期罚款管理、收款管理; ●创建触发器,分别实现借书和还书时自动更新图书信息的在册数量;

SQL数据库的基本操作

命令行 1、显示当前数据库服务器中的数据库列表:mysql> SHOW DATABASES; 2、建立数据库:mysql> CREATE DATABASE 库名; 3、建立数据表:mysql> USE 库名;mysql> CREATE TABLE 表名(字段名VARCHAR(20), 字段名CHAR(1)); 4、删除数据库:mysql> DROP DATABASE 库名; 5、删除数据表:mysql> DROP TABLE 表名; 6、将表中记录清空:mysql> DELETE FROM 表名; 7、往表中插入记录:mysql> INSERT INTO 表名VALUES ("hyq","M"); 8、更新表中数据:mysql-> UPDATE 表名SET 字段名1='a',字段名2='b' WHERE 字段名3='c'; 9、用文本方式将数据装入数据表中:mysql> load data local infile "d:/mysql.txt" into table 表名; 10、导入.sql文件命令:mysql> USE 数据库名;mysql> source d:/mysql.sql; 11、命令行修改root密码:mysql> update https://www.doczj.com/doc/a26780756.html,er set password=password('新密码') where user='root';mysql> flush privileges; 12.修改密码的三种方法:mysql>update user set password=password('') where user='joy_pen';mysql>flush privileges;mysql>set password for 'joy_oen'=password('');mysql>grant usage on *.* to 'joy_pen' identified by ''; 1、创建数据库 命令:create database <数据库名> 例如:建立一个名为xhkdb 的数据库mysql> create database xhkdb; 2、显示所有的数据库 命令:show databases (注意:最后有个s)mysql> show databases; 3、删除数据库 命令:drop database <数据库名> 例如:删除名为xhkdb的数据库mysql> drop database xhkdb; 4、连接数据库 命令:use <数据库名> 例如:如果xhkdb数据库存在,尝试存取它:mysql> use xhkdb; 屏幕提示:Database changed 5、当前选择(连接)的数据库mysql> select database(); 6、当前数据库包含的表信息:mysql> show tables; (注意:最后有个s) 三、表操作,操作之前应连接某个数据库 1、建表 命令:create table <表名> ( <字段名1> <类型1> [,..<字段名n> <类型n>]); mysql> create table MyClass( > id int(4) not null primary key auto_increment, > name char(20) not null, > sex int(4) not null default ''0'', > degree double(16,2)); 2、获取表结构 命令:desc 表名,或者show columns from 表名 mysql>DESCRIBE MyClass mysql> desc MyClass;

数据库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 运算符

数据库操作及查询

第三章数据库操作及查询§1刨建数据库表 一、表的分类:库表、自由表。 二、数据库表与自由表的区别 库表:各个表之间有关联 特点:A:长表名和长字段名。 B:每个字可以有提示和注释。 C:可以定义缺省值。 D:字段级的规则和记录级的规则。 自由表: foxbase 表,独立 三、表结构的定义 操作方法:A:表设计器 B:命令create < 表名> 四、表记录的输入 1、追加方式 2、定义结构时同时输入

五、表记录添加 1)、键盘输入 2)、从已有文件中追加 A、INSERT –SQL 命令 命令格式: INSERT INTO 表名[(字段名1[,字段名2,…])] V ALUES(表达式1[,表达式2,…]) 功能:在表尾追加一个新记录,并直接输入记录数据。 说明:表不必事先打开,字段与表达式的类型必须相同。 例如:INSERT INTO TEACHER(BH,XM,XB,JBGZ)V ALUES (“02005”,“张华”,“女”,2021) B、APPEND 命令 格式:APPEND [BLANK] 功能:向表中追加记录 说明:使用BLANK子句能在表尾追加一条空记录。若不选取则进入全屏幕编缉方式。 C、APEND FROM 命令

格式:APPEND FROM <文件名> FIELDS <字段名表> [FOR< 条件>][[TYPE ] DELIMITED[WITH <定界符>/WITH BLANK/WITH TAB]/SDF/XLS]] 功能:在当前的表尾部追加一批记录,这些记录来自于指定的文件。 说明:1、源文件的类型可以为表、系统数据格式文件、定界格文本文件、Excel文件。 2、执行该文件时源表不用打开。 例如:先将表数据导入到EXCEL表中,然后再追加到空表中。 appe from tyty type xls 六、表的打开和关闭 1、表的打开 A: 命令 use B: “文件”——“打开” C:在窗口菜单的“数据工作”期命令来打开 2)、表的关闭 A、命令:

相关主题
文本预览
相关文档 最新文档