数据库查询语句_第1页
数据库查询语句_第2页
数据库查询语句_第3页
数据库查询语句_第4页
数据库查询语句_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据库操作归纳SqlServer数据库操作语句(步骤):1.新建数据库:createdatabase数据库名称;例:createdatabaseLianXi;use数据库名称;例:useLianXi;2.新建表:createtable表名称(属性名/字段名属性/字段类型identity(1,1)primarykeynotnull,属性名/字段名属性/字段类型notnull,属性名/字段名);属性/字段类型);例:createtableyonghu(uidintidentity(1,1)primarykeynotnull,unamechar(10)notnull,upasschar(10)notnull,genderchar(2),shouruint,birthdaydatetime,notetext);3.查询数据:⑴基本查询:---简单查询 select*from表名称;例:select*fromyonghu;SELECTDISTINCT表中字段名AS字段名别名,YEAR(GETDATE()-YEAR(字段名如生日)AS如年龄FROM表名例:selectdistinctunameas姓名,year(getdate())-year(birthday)as年龄fromyonghu;如下图所示:11m已11m已lectdistinctun:日jtl已as姓名jj^ear(g已tdatei:))-year(ubirthd日y)as年齿令fromjnjnghu;insertintoi^onghu[urLam耳upass5ubirthd宜兀note)valu已e('西荃肺'」?213?'19911工3[11'」'誓啊有携口方式忖款积分卡?)ins已说intoj^unghu〔urLam已耳upass5ubirthda;^note)valuesC土豆'」'321??19921216??十灰复卡香彳申白勺罚崇l是'〕;姓名年龄z207 |菽取当前丟』时间矗21 获取表中行的总数SELECTCOUNT(*)AS总数FROM表名 获取表中行的总数例:selectcount(*)as总数fromyonghu;SELECTAVG(字段名)AS平均值FROM表名 获取平均值例:selectavg(shouru)as平均收入fromyonghu;---带条件查询 条件表达式:可以是单表的条件表达式,又可以是多表之间的条件表达式。比较符:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)例:在用户表中,列出收入在2000元以上的员工记录SELECT*FROMyonghuWHEREshouru>2000;例:在用户表中,查出男用户的平均收入SELECTAVG(shouru)AS平均收入FROMyonghuWHEREgender='男';例:某表如employee表,查询出市场部和销售部的员工名单SELECTd.employee_name,e.employee_nameFROMemployee.eINNERJOINdepartmentdONe.department_id=d.department_idWHEREd.department_nameIN('市场部','销售部')-或-SELECTd.employee_name,e.employee_nameFROMemployee.eINNERJOINdepartmentdONe.department_id=d.department_idWHERE(d.department_name='市场部')OR(d.department_name='销售部')对yonghu表,查出月工资在2000-3000元之间的员工名单SELECT*FROMyonghuWHEREshouruBETWEEN2000AND3000-或-SELECT*FROMyonghuWHEREshouru>=2000ANDshouru<=3000对yonghu表,查出所有姓“张”的员工名单SELECT*FROMyonghuWHEREunameLIKE‘张%'-或-SELECT*FROMyonghuWHERELEFT(uname,1)=‘张'---查询结果处理 排序输出(ORDERBY) ——ASC:(默认)按升序排列;DESC:按降序排列SELECTuid,uname,upass,shouruFROMyonghuORDERBYgender,shouruDESC重定向输出(INTO)INTO子句用于把查询结果放到一个新建的表中例:某表如,对部门表department和员工表employee,查询出市场部所有员工的信息,并将结果存入newtable中。SELECTemployee.*INTOnewtableFROMemployeeINNERJOINdepartmentONemployee.department_id=department.department_idWHEREdepartment.department_name='市场部'输出合并(UNION)合并查询就是使用UNION操作符将来自不同查询的数据组合起来,形成一个具有综合信息的查询结果,UNION操作会自动将重复的数据剔除。必须注意的是,参加合并查询的各子查询使用的表结构应该相同,即各子查询中的数据数目和对应的数据类型都必须相同。例:对某表:如employee表,列出部门编号为D001或D002的所有员工姓名SELECTemployee_name,department_idFROMemployeeWHEREdepartment_id=‘D001'UNIONSELECTemployee_name,department_idFROMemployeeWHERE

例:对某表,如对employee表,分别统计男女员工人数SELECTsex,COUNT(sex)as人数FROMemployeeGROUPBYsex如下图所示例:某表,如对employee表,分别统计个部门男女员工的人数SELECTdepartment_id,sex,COUNT(*)AS人数FROMemployeeGROUPBYdepartment_id,sex如下图所示例:某表,如对employee表,查出部门平均工资大于2000元的部门编号SELECTdepartment_id,AVG(wages)AS平均工资FROMemployeeGROUPBYdepartment_idHAVINGAVG(wages)>=2000使用COMPUTE和COMPUTEBY子句汇总:使用compute子句可以在查询的结果集中产生成汇总行的同时,还生成明细行,可以计算子组的汇总值。使用computeby子句可以对结果集数据进行分组统计,即计算分组的汇总值。例:某表,如对employee表中部门编号卧位D001的员工工资,按照其部门编号生成汇总行和明细行SELEcTdepartment_id,wagesFRoMemployeeWHEREdepartment_id=D001'oRDERBYdepartment_idcoMpuTEsum(wages)如下图所示门编号生成分组汇总行和明细行SELECTdepartment_id,wagesFROMemployeeWHEREdepartment_id=‘D001'ORdepartment_id=‘D002'ORDERBYdepartment_idCOMPUTEsum(wages)BYdepartment_id如下图所示⑵嵌套查询:(由里向外处理。子查询的SELECT语句中不能使用ORDERBY子句,ORDERBY子句只能对最终查询结果排序)单值嵌套查询 子查询的返回结果是一个值的嵌套查询例:某表,如对Sales数据库,查询出市场部的所有员工的编号SELECTemployee_idFROMemployeeWHEREdepartment_id=(SELECTdepartment_idFROMdepartmentWHEREdepartment_name二'市场部')多值嵌套查询 子查询的返回结果是一列值的嵌套查询ANY运算符用法:例:某表,如对Sales数据库,列出D001号部门中工资比D002号部门的员工最低工资高的员工和工资SELECTemployee_id,wagesFROMemployeeWHEREdepartment_id=‘D001'ANDwages>ANY(SELECTwagesFROMemployeeWHEREdepartment_id=‘D002')All运算符的用法:例:某表,如对Sales数据库,查询出部门编号为D001的员工,这些员工的工资比部门为D002的员工的最高工资还要高的员工的编号和工资。SELECTemployee_id,wagesFROMemployeeWHEREdepartment_id=‘D001'ANDwages>All(SELECTwagesFROMemployeeWHEREdepartment_id=‘D002')IN运算符的用法:例:某表,如对Sales数据库,列出部门为市场部或销售部的所有员工的编号SELECTemployee_idFROMemployeeWHEREdepartment_idIN(SELECTdepartment_idFROMdepartmentWHEREdepartment_name=‘市场部'ORdepartment_name二'销售部')⑶连接查询:(通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。)例:某表,如对Sales数据库输出所有员工的销售单,要求给出员工编号、姓名、商品编号、商品名和销售数量。SELECTemployee.employee_id,employee.employee_name,goods.goods_id,goods.goods_name,sell_order.order_numFROMemployee,sell_order,goodsWHEREemployee.employee_id=sell_order.employee_idandsell_order.goods_id=goods.goods_id如下图所示empluyee_idemployeen:diTieguuds_idguuds_rL:ifTi12ordHr_rLUiTi1E001钱达理G0001INNR5120.02E001钱达理G0003NECS3005.03E002东方木G0004HF102010.04E002东方木G0005CAHON1B210.05E002东方木G0001IBMR5140.06E003郭文斌G0005CAHON1B221.0内连接等值连接:在连接条件中使用等号(=)运算符比较被连接列的列值,按对应列的共同值将一个表中的记录与另一个表中的记录相连接,包括其中的重复列。例:某表,如Sales数据库中部门表department和员工表employee的等值连接。SELECT*FROMdepartmentINNERJOINemployeeONemployee.department_id=department.department_id不等值连接:在连接条件中用除等于(=)运算符以外的其他比较运算符比较被链接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。例:某表,如Sales数据库,列出销售G00001产品的员工中,销售数量大于编号为E001的员工销售该类产品销售数量的那些员工的编号和销售数量。SELECTa.employee_id,a.order_numFROMsell_orderaINNERJOINsell_orderbONa.order_num>b.order_numANDa.goods_id=b.goods_idWHERE(b.goods_id=‘G00001')AND(b.employee_id=‘E001')自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,它使用

选择列表方式来指出查询结果集合中所包括的列,并删除连接表中的重复列。例:某表,如Sales数据库中部门表department和员工表employee的自然连接。SELECTa.department_name,b.*FROMdepartmentaINNERJOINemployeebONb.department_id=a.department_id外连接:在内连接查询时,返回查询结果集合中的仅是符合查询条件(WHERE搜索条件或HAVING条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个连接表(全外连接)中的所有数据行。a.使用作外连接:左外连接通过左向外连接引用左表的所有行。例:某表,如员工表employee做外连接销售表sell_order.SELECTa.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_dateFROMemployeeaLEFTOUTERJOINsell_orderbONa.employee_id=b.employee_id 如图所示employee_idempli:iyeerL:dJTieguudE_id1eorder_rLijinSHrLd_da1E001钱达理G000120.02005-07-0400:00:00.0002E001钱达理G00035.02005-07-0500:00:00.0003E002东方木G000410.02005-08-0500:00:00.0004E002东方木G000510.□2005-08-0700:00:00.0005E002东方木G000140.02005-10-1000:00:00.0006E003郭文斌G000521.02006-07-2221:33:59.6607E004肖海燕NULLNULLNULLb.使用右外连接:右外连接通过右向外连接引用右表的所有行例:某表,如员工表employee右外连接销售表sell_order。为了说明方便,先在sell_order表中插入一条销售信息。INSERTINTOsell_order(order_id1,goods_id,employee_id,customer_id,transporter_id,order_num,discount,order_date,send_date,arrival_date,cost)VALUES(‘S0006','G0005','C0006','T0002','21','0.5',GETDATE(),GETDATE(),100)SELECTemployee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1FROMemployeeaRIGHTOUTERJOINsell_orderbONa.employee_id=employee_idempluyeH_idemployeen:diTieguudE_id*ordHf_rLUjriEerLd_daorder_idl1E001钱达理G000120.02005-07-0400:00:00.000S000012E001钱达理G00035.02005-07-0500:00:00.000S000023E002东方木G000410.02005-08-0500:00:00.000S000034E002东方木G000510.02005-08-0700:00:00.000S000045E002东方木G000140.02005-10-1000:00:00.000S000056E003郭文斌G000521.02006-07-2221:33:59.660S000067NULLNULLGOODS21.02006-08-02114:58:24.237S00006b.使用全外连接全外连接返回两个表的所有行。不管两个表的行是否满足连接条件,均返回查询结果集。对不满足连接条件的记录,另一个表相对应字段用NULL代替。SELECTa.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1FROMemployeeaFULLOUTERJOINsell_orderbONa.employee_id=b.employee_id如下图所示

employee_idemployee_naiTiegoodsidiiorder_rLiiiTisenddateorderi.dl|1E001犠达理GG00120.0^005-07-0400:00:00.0005000012E001钱达理G0003.5'0:;2005-07-0500:00:00.000SOOOO^3~E002东方木G000410.o'''2005-08-0500:00:00.000S00003'4E002-东方木G000510.0£005-08-0700:00:00.000S000045E002东方术G000140.02005-10-1000:00:00.000^000056EOg;郭文液G0005;2-l.02006-07-g£'21:33:59.660■5000067NULLNULLG0005£1-°!2006-08-02114:58:24;237■S000068E005张明华NULLNUI±NUI±NULL②交叉连接:交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例 : SELECTa.department_id,a.department_name,b.employee_id,b.employee_nameFROMdepartmentaCROSSJOINemployeeb如下图所示dep:=LftmETLt_iddep:=Lftm eemployee_idemplciyee_rL:=uTie1D001销售部E001钱达理.2EOOZ:市场部E001钱达理AD003-经理办E001钱达理4D004仓储部E001钱达理5U001销售部E002东方术6D002.市场部E002东方木7D003经理办E00£东方木8D004仓储部E002东方木24D004仓储部E006李华25D001梢售部EOOT柳叶•26DU02市场部EOOT柳叶■27D003经理办E007柳叶28D004仓储部E007柳叶4.插入数据INSERT[INTO]表名(属性1,属性2,属性3,„)VALUES(属性值1,属性值2,属性值3,„)。注:into可省略。例:INSERTINTOyonghu(uname,upass)VALUES('土豆','321');删除数据DELETE[FROM]表名WHERE条件例:DELETEFROMyonghuWHEREuid=1;例:在DELETE中使用联接或子查询某表操作,如下:—基于Transact-SQL,使用表的联接DELETESell_OrderFROMSell_OrderSOINNERJOINcustomer2CONSO.customer_id=C.customer_idWHEREC.addressLIKE‘东方市%'注:SO,C均为别名--等同于下列命令DELETESell_OrderFROMSell_OrderSO,customer2CWHERESO.customer_id=C.customer

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论