数据库操作归纳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;如下图所示:③SELECTCOUNT(*)AS总数FROM表名----------获取表中行的总数例:selectcount(*)as总数fromyonghu;SELECTAVG(字段名)AS平均值FROM表名--------获取平均值例:selectavg(shouru)as平均收入fromyonghu;---带条件查询----------------------条件表达式:可以是单表的条件表达式,又可以是多表之间的条件表达式。比较符:=(等于)、!=(不等于)、(大于)、(小于)、=(大于等于)、=(小于等于)、(不等于)①例:在用户表中,列出收入在2000元以上的员工记录SELECT*FROMyonghuWHEREshouru2000;②例:在用户表中,查出男用户的平均收入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_idFROMemployeeWHEREdepartment_id=’D002’如下图示④分组统计(GROUPBY)与筛选(HAVING)例:对某表,如对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)如下图所示例:某表,如对employee表中的部门编号为D001或D002的员工工资,按照其部门编号生成分组汇总行和明细行SELECTdepartment_id,wagesFROMemployeeWHEREdepartment_id=‘D001’ORdepartment_id=‘D002’ORDERBYdepartment_idCOMPUTEsum(wages)BYdepartment_id如下图所示⑵嵌套查询:(由里向外处理。子查询的SELECT语句中不能使用ORDERBY子句,ORDERBY子句只能对最终查询结果排序)①单值嵌套查询----子查询的返回结果是一个值的嵌套查询例:某表,如对Sales数据库,查询出市场部的所有员工的编号SELECTemployee_idFROMemployeeWHEREdepartment_id=(SELECTdepartment_idFROMdepartmentWHEREdepartment_name=’市场部’)②多值嵌套查询----子查询的返回结果是一列值的嵌套查询a.ANY运算符用法:例:某表,如对Sales数据库,列出D001号部门中工资比D002号部门的员工最低工资高的员工和工资SELECTemployee_id,wagesFROMemployeeWHEREdepartment_id=‘D001’ANDwagesANY(SELECTwagesFROMemployeeWHEREdepartment_id=‘D002’)b.All运算符的用法:例:某表,如对Sales数据库,查询出部门编号为D001的员工,这些员工的工资比部门为D002的员工的最高工资还要高的员工的编号和工资。SELECTemployee_id,wagesFROMemployeeWHEREdepartment_id=‘D001’ANDwagesAll(SELECTwagesFROMemployeeWHEREdepartment_id=‘D002’)c.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如下图所示①内连接a.等值连接:在连接条件中使用等号(=)运算符比较被连接列的列值,按对应列的共同值将一个表中的记录与另一个表中的记录相连接,包括其中的重复列。例:某表,如Sales数据库中部门表department和员工表employee的等值连接。SELECT*FROMdepartmentINNERJOINemployeeONemployee.department_id=department.department_idb.不等值连接:在连接条件中用除等于(=)运算符以外的其他比较运算符比较被链接的列的列值。这些运算符包括、=、=、、!、!和。例:某表,如Sales数据库,列出销售G00001产品的员工中,销售数量大于编号为E001的员工销售该类产品销售数量的那些员工的编号和销售数量。SELECTa.employee_id,a.order_numFROMsell_orderaINNERJOINsell_orderbONa.order_numb.order_numANDa.goods_id=b.goods_idWHERE(b.goods_id=‘G00001’)AND(b.employee_id=‘E001’)c.自然连接:在连接条件中使用等于(=)运算符比较被连接列的列值,它使用选择列表方式来指出查询结果集合中所包括的列,并删除连接表中的重复列。例:某表,如Sales数据库中部门表department和员工表employee的自然连接。SELECTa.department_name,b.*FROMdepartmentaINNERJOINemployeebONb.department_id=a.department_id②外连接:在内连接查询时,返回查询结果集合中的仅是符合查询条件(WHERE搜索条件或HAVING条件)和连接条件的