




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库操作归纳SqlServer数据库操作语句(步骤):1. 新建数据库:create database 数据库名称 ; 例:create database LianXi;use 数据库名称 ; 例:use LianXi;2. 新建表:create table 表名称(属性名/字段名 属性/字段类型 identity(1,1) primary key not null,属性名/字段名 属性/字段类型 not null,属性名/字段名 属性/字段类型);例:create table yonghu(uid int identity(1,1) primary key not null,uname c
2、har(10) not null,upass char(10) not null,gender char(2),shouru int,birthday datetime,note text );3. 查询数据 : 基本查询:-简单查询- select * from 表名称; 例:select * from yonghu; SELECT DISTINCT 表中字段名 AS 字段名别名, YEAR(GETDATE()-YEAR(字段名如生日) AS 如年龄FROM 表名例:select distinct uname as 姓名 , year(getdate()-year(birthday) as
3、年龄 from yonghu; 如下图所示: SELECT COUNT(*) AS 总数 FROM 表名 -获取表中行的总数例:select count(*) as 总数 from yonghu;SELECT AVG(字段名) AS 平均值 FROM 表名 -获取平均值例:select avg(shouru) as 平均收入 from yonghu;-带条件查询-条件表达式:可以是单表的条件表达式,又可以是多表之间的条件表达式。比较符:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于) 例:在用户表中,列出
4、收入在2000元以上的员工记录SELECT * FROM yonghu WHERE shouru > 2000; 例:在用户表中,查出男用户的平均收入SELECT AVG(shouru) AS 平均收入 FROM yonghu WHERE gender=男; 例:某表如employee表,查询出市场部和销售部的员工名单SELECT d.employee_name, e.employee_name FROM employee.e INNER JOIN department d ON e.department_id = d.department_id WHERE d.department_n
5、ame IN (市场部,销售部)-或-SELECT d.employee_name, e.employee_name FROM employee.e INNER JOIN department d ON e.department_id = d.department_id WHERE (d.department_name = 市场部) OR (d.department_name = 销售部 ) 对yonghu表,查出月工资在2000-3000元之间的员工名单SELECT * FROM yonghu WHERE shouru BETWEEN 2000 AND 3000-或-SELECT * FRO
6、M yonghu WHERE shouru >= 2000 AND shouru <= 3000 对yonghu 表,查出所有姓“张”的员工名单SELECT * FROM yonghu WHERE uname LIKE 张%-或-SELECT * FROM yonghu WHERE LEFT(uname,1) = 张 -查询结果处理- 排序输出(ORDER BY) -ASC:(默认) 按升序排列;DESC:按降序排列SELECT uid,uname,upass, shouru FROM yonghu ORDER BY gender , shouru DESC 重定向输出(INTO)
7、INTO子句用于把查询结果放到一个新建的表中例:某表如,对部门表department和员工表employee,查询出市场部所有员工的信息,并将结果存入newtable中。SELECT employee.* INTO newtable FROM employee INNER JOIN department ON employee .department_id = department.department_id WHERE department.department_name = 市场部 输出合并(UNION)合并查询就是使用UNION操作符将来自不同查询的数据组合起来,形成一个具有综合信息的查
8、询结果,UNION操作会自动将重复的数据剔除。必须注意的是,参加合并查询的各子查询使用的表结构应该相同,即各子查询中的数据数目和对应的数据类型都必须相同。 例:对某表:如employee表,列出部门编号为D001或D002的所有员工姓名SELECT employee_name,department_id FROM employee WHERE department_id = D001UNION SELECT employee_name,department_id FROM employee WHERE department_id = D002 如下图示 分组统计(GROUP BY)与筛选(HA
9、VING)例:对某表,如对employee表,分别统计男女员工人数SELECT sex,COUNT(sex) as 人数 FROM employee GROUP BY sex 如下图所示例:某表,如对employee表,分别统计个部门男女员工的人数SELECT department_id,sex,COUNT(*) AS 人数 FROM employee GROUP BY department_id,sex 如下图所示例:某表,如对employee表,查出部门平均工资大于2000元的部门编号SELECT department_id,AVG(wages) AS 平均工资FROM employee
10、GROUP BY department_id HAVING AVG(wages)>=2000 使用COMPUTE和COMPUTE BY子句汇总:使用COMPUTE子句可以在查询的结果集中产生成汇总行的同时,还生成明细行,可以计算子组的汇总值。使用COMPUTE BY子句可以对结果集数据进行分组统计,即计算分组的汇总值。例:某表,如对employee表中部门编号卧位D001的员工工资,按照其部门编号生成汇总行和明细行SELECT department _id ,wages FROM employee WHERE department_id = D001ORDER BY department
11、_id COMPUTE sum(wages) 如下图所示例:某表,如对employee表中的部门编号为D001或D002的员工工资,按照其部门编号生成分组汇总行和明细行SELECT department_id,wages FROM employee WHERE department_id = D001OR department_id = D002 ORDER BY department_id COMPUTE sum(wages) BY department_id 如下图所示 嵌套查询:(由里向外处理。子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果
12、排序) 单值嵌套查询-子查询的返回结果是一个值的嵌套查询例:某表,如对Sales数据库,查询出市场部的所有员工的编号SELECT employee_id FROM employee WHERE department_id = (SELECT department_id FROM department WHERE department_name=市场部) 多值嵌套查询-子查询的返回结果是一列值的嵌套查询 a. ANY运算符用法:例:某表,如对Sales数据库,列出D001号部门中工资比D002号部门的员工最低工资高的员工和工资SELECT employee_id,wages FROM emplo
13、yee WHERE department_id = D001AND wages>ANY (SELECT wages FROM employee WHERE department_id = D002)b. All运算符的用法:例:某表,如对Sales数据库,查询出部门编号为D001的员工,这些员工的工资比部门为D002的员工的最高工资还要高的员工的编号和工资。SELECT employee_id,wages FROM employee WHERE department_id =D001AND wages>All(SELECT wages FROM employee WHERE dep
14、artment_id =D002) c. IN运算符的用法:例:某表,如对Sales数据库,列出部门为市场部或销售部的所有员工的编号SELECT employee_id FROM employee WHERE department_id IN (SELECT department_id FROM department WHERE department_name = 市场部 OR department_name=销售部) 连接查询:(通过连接运算符可以实现多个表查询。连接是关系数据库模型的主要特点,也是它区别于其它类型数据库管理系统的一个标志。)例:某表,如对Sales数据库输出所有员工的销售单
15、,要求给出员工编号、姓名、商品编号、商品名和销售数量。SELECTemployee.employee_id,employee.employee_name,goods.goods_id,goods.goods_name,sell_order.order_num FROM employee,sell_order,goods WHERE employee.employee_id = sell_order.employee_id and sell_order.goods_id = goods.goods_id 如下图所示 内连接a. 等值连接:在连接条件中使用等号(=)运算符比较被连接列的列值,按对应
16、列的共同值将一个表中的记录与另一个表中的记录相连接,包括其中的重复列。例:某表,如Sales数据库中部门表department和员工表employee的等值连接。SELECT * FROM department INNER JOIN employee ON employee.department_id = department.department_idb. 不等值连接:在连接条件中用除等于(=)运算符以外的其他比较运算符比较被链接的列的列值。这些运算符包括>、>=、<=、<、!>、!<和<>。例:某表,如Sales数据库,列出销售G00001产
17、品的员工中,销售数量大于编号为E001的员工销售该类产品销售数量的那些员工的编号和销售数量。SELECT a.employee_id,a.order_num FROMsell_order a INNER JOIN sell_order b ON a.order_num> b.order_num AND a.goods_id = b.goods_id WHERE(b.goods_id = G00001)AND (b.employee_id = E001)c. 自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,它使用选择列表方式来指出查询结果集合中所包括的列,并删除连接表中的重复
18、列。例:某表,如Sales数据库中部门表department和员工表employee的自然连接。SELECT a.department_name,b.*FROM department a INNER JOIN employee b ON b.department_id = a.department_id 外连接:在内连接查询时,返回查询结果集合中的仅是符合查询条件(WHERE搜索条件或HAVING条件)和连接条件的行。而采用外连接时,它返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左外连接时)、右表(右外连接时)或两个连接表(全外连接)中的所有数据行。a. 使用作外连接:左外
19、连接通过左向外连接引用左表的所有行。例:某表,如员工表employee做外连接销售表sell_order.SELECTa.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date FROM employee a LEFT OUTER JOIN sell_order b ON a.employee_id = b.employee_id 如图所示b. 使用右外连接:右外连接通过右向外连接引用右表的所有行例:某表,如员工表employee右外连接销售表sell_order。为了说明方便,先在sell_order表中插入一条销售信息。
20、INSERT INTO sell_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)SELECT a.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1 FROM employee a
21、 RIGHT OUTER JOIN sell_order b ON a.employee_id = b.employee_idb. 使用全外连接全外连接返回两个表的所有行。不管两个表的行是否满足连接条件,均返回查询结果集。对不满足连接条件的记录,另一个表相对应字段用NULL代替。SELECT a.employee_id,a.employee_name,b.goods_id,b.order_num,b.send_date,b.order_id1 FROM employee a FULL OUTER JOIN sell_order b ON a.employee_id = b.employee_i
22、d 如下图所示 交叉连接:交叉连接不带WHERE子句,它返回被连接的两个表所有数据行的笛卡尔积,返回到结果集合中的数据行数等于第一个表中符合查询条件的数据行数乘以第二个表中符合查询条件的数据行数。例:SELECT a.department_id,a.department_name,b.employee_id,b.employee_name FROM department a CROSS JOIN employee b 如下图所示 4插入数据INSERT INTO 表名 (属性1,属性2,属性3,) VALUES (属性值1,属性值2,属性值3,) 。注:into 可省略。例:INSERT IN
23、TO yonghu (uname,upass) VALUES ('土豆','321');5. 删除数据DELETE FROM 表名 WHERE 条件例:DELETE FROM yonghu WHERE uid=1;例:在DELETE中使用联接或子查询某表操作,如下:-基于Transact-SQL,使用表的联接DELETE Sell_Order FROM Sell_Order SO INNER JOIN customer2 C ON SO.customer_id = C.customer_id WHERE C.address LIKE 东方市% 注:SO,C均为别名-等同于下列命令DELETE Sell_Order FROM Sell_Order SO,customer2 C WHERE SO.customer_id = C.customer_id AND C.address LIKE 东方市%-基于SQL-92标准,须使用子查询DELETE FROM Sell_Order WHERE customer_id IN (SELECT customer_id FROM customer2 WHERE address LIKE 东方市%)6. 更新数据UPDATE 表名 SET 属性名=属性值,属性名=属
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 材料力学与智能材料性能研究拓展重点基础知识点
- 行政法学精英训练试题及答案
- 行政法学复习资料的使用与反馈:试题及答案
- 时空组学 数据集格式规范 征求意见稿
- 行政管理应用能力试题与答案
- 火灾人亡后续应急预案(3篇)
- 小学生遇到火灾应急预案(3篇)
- 法学概论考试的内容适应性研究试题及答案
- 2025年网络管理员考试心得及试题与答案
- 2025年软考设计师考试经历分享及试题与答案
- MOOC 农学概论-福建农林大学 中国大学慕课答案
- 模拟法庭剧本(五篇)
- 美军浮空器雷达系统现状浅析
- 我的家乡陕西省安康市
- 八角茴香油教学课件
- 教学机房规划方案
- 国家文化安全教育课件
- 可行性研究报告编制服务投标方案
- 山东省汽车维修工时定额(T-SDAMTIA 0001-2023)
- 控制吸烟的政策与法规案例分析
- 国企经理成员岗位聘任协议-(参考模版)
评论
0/150
提交评论