当前位置:首页 > 数据库查询语句
数据库操作归纳
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 char(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 年龄 from yonghu; 如下图所示:
③ SELECT COUNT(*) AS 总数 FROM 表名 ----------获取表中行的总数
例:select count(*) as 总数 from yonghu;
SELECT AVG(字段名) AS 平均值 FROM 表名 --------获取平均值 例:select avg(shouru) as 平均收入 from yonghu; ---带条件查询----------------------
条件表达式:可以是单表的条件表达式,又可以是多表之间的条件表达式。 比较符:=(等于)、!=(不等于)、>(大于)、<(小于)、>=(大于等于)、<=(小于等于)、<>(不等于)
① 例:在用户表中,列出收入在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_name 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 * FROM 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)
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操作符将来自不同查询的数据组合起来,形成一个具有综合信息的查询结果,UNION操作会自动将重复的数据剔除。必须注意的是,参加合并查询的各子查询使用的表结构应该相同,即各子查询中的数据数目和对应的数据类型都必须相同。
例:对某表:如employee表,列出部门编号为D001或D002的所有员工姓名
SELECT employee_name,department_id FROM employee WHERE department_id = ‘D001’UNION SELECT employee_name,department_id FROM employee WHERE
department_id = ’D002’ 如下图示
④ 分组统计(GROUP BY)与筛选(HAVING)
例:对某表,如对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 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 = ‘D001’ORDER BY department_id COMPUTE sum(wages) 如下图所示
例:某表,如对employee表中的部门编号为D001或D002的员工工资,按照其部
门编号生成分组汇总行和明细行
SELECT department_id,wages FROM employee WHERE department_id = ‘D001’OR department_id = ‘D002’ ORDER BY department_id COMPUTE sum(wages) BY department_id 如下图所示
⑵ 嵌套查询:(由里向外处理。子查询的SELECT语句中不能使用ORDER BY子句,ORDER BY子句只能对最终查询结果排序)
① 单值嵌套查询----子查询的返回结果是一个值的嵌套查询
例:某表,如对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 employee WHERE department_id = ‘D001’AND wages>ANY (SELECT wages FROM employee WHERE department_id = ‘D002’) b. All运算符的用法:例:某表,如对Sales数据库,查询出部门编号为D001的员工,这些员工的工资比部门为D002的员工的最高工资还要高的员工的编号和工资。
SELECT employee_id,wages FROM employee WHERE department_id =‘D001’AND wages>All(SELECT wages FROM employee WHERE department_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数据库输出所有员工的销售单,要求给出员工编号、姓名、商品编号、商品名和销售数量。
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 =
共分享92篇相关文档