文档库 最新最全的文档下载
当前位置:文档库 › 数据库代码复习

数据库代码复习

数据库代码复习
数据库代码复习

查询表中指定列的信息,改变列的标题

select emp_name as姓名,sex as性别,title as职位from empinfo

过滤掉重复的数据,返回指定列中存在不重复的数据

selectdistinct title from empinfo

selectdistinct sex from empinfo

top n 关键字

selecttop 3 *from empinfo表中前3个的记录

selecttop 30 percent*from empinfo表中前30%的记录

设置查询条件

select*from empinfo where wage>3000 and wage<4000

select*from empinfo where wage between 3000 and 4000 select*from empinfo where emp_name in('张三','李四','王五') 模糊查询

select*from empinfo where idcard like'%ddd%'

select*from empinfo where idcard like'110123_adx_'

%,_为通配符

And为且,一假则假,on为或,一真则真

select*from empinfo where title='部门经理'and sex='女'

条件为部门经理或则是性别为女的记录

select*from empinfo where title='部门经理'or sex='女'

对从查询结果排序

select*from empinfo orderby emp_name

select*from empinfo orderby sex,wage

sql中的排序问题,按姓名排序是根据姓名的什么来排的?

聚合函数

select COUNT(*)as计数数量from empinfo

select avg(wage)as平均工资from empinfo

select SUM(wage)as工资之和from empinfo

select avg(wage)as平均工资from empinfo where sex='男'

对查询结果分组

select sex as性别,MAX(wage)as最高工资

from empinfo

groupby sex

使用all关键字,对于不满足where子句的组和结果集,返回空值select sex as性别,MAX(wage)as最高工资

from empinfo where sex='男'

groupby all sex

where 在分组操作之前应用,having是在之后应用

统计最高工资超过6000的部门及最高工资信息

select dep_id,MAX(wage)as最高工资from empinfo

groupby dep_id

having max(wage)>6000

内连接

表别名.列名指定显示的列

T1,t2为表别名

(等值连接)

select t1.dep_name,t2.emp_name

from departmentst1,empinfot2

where t1.dep_id=t2.dep_id

inner join关键字

select t1.dep_name,t2.emp_name

from departmentst1innerjoin empinfot2

on t1.dep_id=t2.dep_id

on指定内连接中的两个表之间的连接关系

外连接

(主次之分)主表的每一行去匹配从表中的每一列数据

符合条件的数据返回到结果集,不符合条件的列将被填上null值后返回到结果集中左向外连接(左侧为主表)departments

select t1.dep_name,t2.emp_name

from departmentst1leftjoin empinfot2

on t1.dep_id=t2.dep_id

右向外连接(右侧为主表)departments

select t1.dep_name,t2.emp_name

from empinfot2rightjoin departmentst1

on t1.dep_id=t2.dep_id

完整外部连接

select t1.dep_name,t2.emp_name

from empinfot2full join departmentst1

on t1.dep_id=t2.dep_id

is null或者is not null

select t1.dep_name,t2.emp_name

from departmentst1leftjoin empinfot2

on t1.dep_id=t2.dep_id

where t2.emp_name isnull

交叉连接

子查询

使用In

查询和张三在同一个部门的所有员工的姓名,

select emp_name from empinfo where dep_id in

(select dep_id from empinfo where emp_name='张三')

等号连接

显示财务部所有员工信息

select*from empinfo

where dep_id=(select dep_id from departments where dep_name='财务部')

Exists

显示财务部所有员工信息

select*from empinfo

where exists

(select*from departments where dep_id=empinfo.dep_id and dep_name='财务部')

Having

显示部门平均工资大于所有员工平均工资的记录

select departments.dep_name,avg(empinfo.wage)from empinfo,departments where empinfo.dep_id=departments.dep_id

groupby departments.dep_name

having avg(empinfo.wage)>(select avg(wage)from empinfo)

出错

用create view 命令创建视图

use hrsystem

go

createview员工信息简表

as

select e.emp_name,e.sex,e.title,d.dep_name

from empinfoe innerjoin departmentsd

on e.dep_id=d.dep_id

用create view 命令创建视图

use hrsystem

go

createview员工信息简表2

withencryption

as

select e.emp_name,e.sex,e.title,d.dep_name

from empinfoe innerjoin departmentsd

on e.dep_id=d.dep_id

修改视图

增加工资项

use hrsystem

go

alterview员工信息简表

withencryption

as

select e.emp_name,e.sex,e.title,e.wage,d.dep_name

from empinfoe innerjoin departmentsd

on e.dep_id=d.dep_id

go

删除视图

dropview员工信息简表

触发器与普通存储过程的不同之处在于:触发器的执行是由于事件触发的,而普通存储过程是由命令调用执行的。

(DML和DDL)

当数据库服务器中发生数据操作语言(DML)事件时触发。针对insert ,update,delete数据库操作语句

响应数据定义语言(DDL)语句时触发。针对create,alter,drop数据库定义

设计DDL触发器的主要目的

1.禁止修改数据库的结构

2.当修改数据库结构时执行一些特定的操作

3.记录对数据库结构的修改

定义一个事务,插入两条记录

use hrsystem

begintransaction

insertinto empinfo values(101,'test1','男','职员',5000,'110123456789',1) insertinto empinfo values(101,'test2','女','职员',5000,'110123456789',1) committransaction

go

use hrsystem

go

createtrigger insert_empinfo on empinfo

forinsert

as

--从表insert 中获取新插入记录的部门编号

declare@depid int

declare@depname varchar(100)

select@depid=dep_id from inserted

--判断插入的部门编号是否存在

select@depname=dep_name from departments where dep_id=@depid

if@depname isnull

begin

print'指定部门不存在,请选择具体部门'--提示错误信息

rollbacktransaction--回滚操作

end

go

use hrsystem

go

insertinto empinfo values(103,'test1','男','职员',5000,'1101234df89',111)

go

用查询语句创建数据库

createdatabase company

onprimary

(name=company_data,

filename='g:\sql_data\company.mdf',

size=10,

maxsize=unlimited,

filegrowth=10%)

log on

(name=company_log,

filename='g:\sql_log\company.ldf',

size=1,

maxsize=500,

filegrowth=1)

alterdatabase employees

add filegroupdata1

alterdatabase employees

addfile

(name=employee3,

filename='g:\sql_data\employee3.ndf',

size=1,

maxsize=50,

filegrowth=1),

(name=employee4,

filename='g:\sql_data\employee4.ndf',

size=2,

maxsize=50,

filegrowth=10%)

to filegroupdata1

alterdatabase employees

add log file

(name=employeelog3,

filename='g:\sql_data\employeelog3.ldf',

size=1,

maxsize=5, filegrowth=1)

最爱初晴微蓝

相关文档