数据库.docx
- 文档编号:11724278
- 上传时间:2023-03-31
- 格式:DOCX
- 页数:16
- 大小:497.07KB
数据库.docx
《数据库.docx》由会员分享,可在线阅读,更多相关《数据库.docx(16页珍藏版)》请在冰豆网上搜索。
数据库
笔记:
数据库名字.
密码sa
密码sql2005
增删改查
增加
insertinto表名列1,列2,列3
values(值,,,,)对应的
update表名set字段名=表达式
where条件式
5.7
启动
用户名sa
密码sql2005
新建数据库,给数据库起名字aaa什么的
mdf主数据文件只能一个。
必须
ndf普通数据文件多个
ldf日志文件多个,至少一个,可没有
初始大小赠量1M
限定日志文件大小
右键数据库,任务,分离,脱机,收缩。
可以有多个数据库,里面有多张表。
表内行,列。
约束,限定数据形式。
约束:
域完整性:
数据类型,(整型int,实型,文本varchar(10)【最大字符数量,少了可以】char(10)【不能多也不能少】text【无上限】,浮点型float,日期型datetime,二进制)ps:
numeric(18,0)18代表总位数,0代表小数点后面没有位数。
实体完整性
自定义完整性
引用完整性主外关系
被引用数据的表叫主表,eg学生表。
成绩表就是子表。
主外关系在子表中设定
PS:
主键唯一性和稳定性,如果没有列可以作为主键,新建一个标示列,定义int。
标识列在下面修改表示范围,是标识,(是、否)
部门表是主表
商品类型是主表
以此类推
练习,建数据库,建表。
建主键、外键。
在表和列范围中修改关系。
主表和附表弄明白。
空白页面右键,关系。
然后找到外键关系。
添加等。
1、建库
2、建表,确定列名和约束等。
标识列,类型等
3、建立关系,建立主外关联
4、添加数据:
。
原则,先主表后子表
新建查询,然后找到自己的数据库。
然后输入SQL语句。
eg:
insertintobumen(bumenid,bumenname,bumendizhi)
values(20,‘技术部’,‘后汉书’)
文本日期加单引号,英文状态!
数字不用。
null不存值。
'null'英文字母单词。
插入时,值和列的位置对应即可。
插入时,可以省略列名,但下方位置必须不变。
ps:
当新建表student中id学号列为标识列为主键的时候,不能填写,而且语句也不能填写。
insertintostudent
values('问问',20)
主键唯一性,不能插入两条重复的数据。
更新数据
update<表名>set<列名=更新值>
[where<更新条件>]
题目:
--2、插入新员工信息
员工编号、员工姓名、员工职位、入职日期、基本工资、奖金、部门编号
7101,'张三丰','分析员','1981-2-22',1250,500,20
7102,'郭湘','销售人员','1981-2-23',1250,500,30
7103,'张四丰','职员','1981-2-24',1250,500,10
--3、改变员工职位为'职员'为'普通员工'
--4、所有基本工资不足1200的上涨20%
--5、所有部门编号是10的奖金为300
--6、入职日期1982以前部门编号为30的涨工资10%
--7、将双儿开除
--8、将部门标号为20的员工删除
--9、将韦小宝的职位改为总裁助理,基本工资改为原来的50%
--10、将工资最高的人的职务升为总裁
答案:
--3、改变员工职位为'职员'为'普通员工'
updateyuangongsetyuangongzhiwei='普通员工'whereyuangongzhiwei='职员'
--4、所有基本工资不足1200的上涨20%
updateyuangongsetjibengongzi=jibengongji*1.2wherejibengongzi<1200
--5、所有部门编号是10的奖金为300
updateyuangongjiangjin=300wherebumenid=30
--6、入职日期1982以前部门编号为30的涨工资10%
updateyuangongjibengongzi*1.1whereruzhiriqi<'1982-1-1'andbumenid=30
--7、将双儿开除
deletefromyuangongwhereyuangongname='双儿'
--8、将部门标号为20的员工删除
deletefromyuangongwherebumenid=20
--9、将韦小宝的职位改为总裁助理,基本工资改为原来的50%
updateyuangongsetyuangongzhiwei='总裁助理',jibengongzi=jibengongzi*0.5whereyuangongname='韦小宝'
--10、将工资最高的人的职务升为总裁
5-8练习题
--1、查询员工表所有数据
select*fromyuangong
--2、查询总裁的基本工资
selectjibengongzi,yuangongzhiweifromyuangong
whereyuangongzhiwei='总裁'
--3、所有奖金为空的员工
select*fromyuangongwherejiangjinisnull
--4、查询基本工资最高的三个人
selecttop3*fromyuangongorderbyjibengongzidesc
--5、查询技术部的所在地
select*frombumenwherebumenname='技术部'
--6、查询部门编号为30且奖金大于300元的员工信息
select*fromyuangongwherebumenid=30andjiangjin>300
--7、查询部门编号为20的员工中基本工资最高的员工姓名和工资
selecttop1yuangongname,jibengongzifromyuangong
wherebumenid=20orderbyjibengongzidesc
selectyuangongname,jibengongzifromyuangong
wherejibengongzi=(selecttop1jibengongzifromyuangongwherebumenid=20
orderbyjibengongzidesc)
--8、查询位于'嵩山'、'黑木崖'、'南海神宫'的部门信息
select*frombumenwherebumendizhi='技术部'orbumendizhi='销售部'orbumendizhi='学习部'
select*frombumenwherebumendizhiin('技术部','销售部','学习部')
--9、查询入职日期在1981-5-1到1981-12-31之间的所有员工
select*fromyuangong
whereruzhiriqi>='1981-5-1'andrizhiriqi<='1981-12-31'
select*fromyuangong
whereruzhitiqibetween'1981-5-1'and'1981-12-31'
--10、查询所有名字为三个字的员工的员工编号,姓名
selectyuangongID,yuangongNamefromyuangong
whereyuangongNamelike'___'
--11、查询10号部门的所有经理和20号部门的所有职员的详细信息
select*fromyuangong
wherebumenID=10andyuangongzhiwei='经理'or
bumenID=20
--12查询姓名中没有‘王’的员工的详细信息。
select*fromyuangong
whereyuangongNamenotlike'%王%'
13查询员工姓名,将工作年限最长的员工排在最前面
selectyuangongName,ruzhiriqifomyuangong
orderbyruzhiriqi
14查询'任我行'的基本工资5月9
selectjibengongzifromyuangong
whereyuangongname='任我行'
15查询基本工资比任我行多的所有员工的姓名和基本工资类似第七题
selectyuangongname,jibengongzifromyuangong
wherejibengongzi>(selectjibengongzifromyuangong
whereyuangongname='任我行')
16查询各个部门经理的基本工资
Selectjibengongzifromyuangong
Whereyuangongzhiwei=’经理
’
我的:
select*fromyuangong
whereyuangongzhiwei='经理'
17查询东方不败从事相同工作的员工的详细信息
Select*fromyuangongwhereyuangongzhiwei=(selectyuangongzhiweifromyuangongwhereyuangongname=’东方不败’)andyuangongname<>’东方不败’
我的:
selectyuangongid,yuangongnamefromyuangong
whereyuangongzhiwei=(selectyuangongzhiweifromyuangong
whereyuangongname='东方不败')
18查询市场部员工的姓名
Selectyuangongnamefromyuangongwherebumenid=(selectbumenidfrombumenwherebumenname=’市场部’)
我的:
selectbumenid,bumennamefrombumen
wherebumenname=(selectbumenid,yuangongnamefromyuangong
wherebumenid=30)
19查询某些员工的姓名和基本工资
条件是他们的基本工资与部门30中某一个员工的基本工资相同
Selectyuangongname,jibengongzifromyuangongwherejibengongziin(selectjibengongzifromyuangongwherebumenid=30)andbumenid<>30
20查询奖金收入bi基本工资高的员工的详细信息
Select*fromyuangongwherejibengongzi 21查询不同部门的平均基本工资 Ps: Avg(列名)平均值 sum(列名)累加和 max(列名)最大值 min(列名)最小值 count(*)所有行的行数 count(列名)统计在这一列当中非空值的个数 查询语句 select*from表名查询所有数据 select*fromstudent where所在班级='S202' 格式 SELECT<列名> from<表名> where orderby ascdesc排序方式 top4 excesice: select*fromyuangong selectjibengongzi,yuangongzhiweifromyuangong whereyuangongzhiwei='总裁' select*fromyuangong wherejiangjinisnull selecttop3*fromyuangong orderbyjibengongzidesc select*frombumen wherebumenName='技术部' select*fromyuangong wherebumenID=30andjiangjin>300 selectyuangongName,jibengongzifromyuangong wherebumenID=20 orderbyjibengongzidesc 5-8下午 charindex寻找一个指定的字符串在另一个字符创中的起始位置 len返回传递给她的字符串长度 lower把传递给他的字符串转换成小写 upper ltrim清楚字符串左边空格 rtrim right replace替换 selectyuangongnamefromyuangong whereleft(yuangongname,1)=left('任盈盈',1)andyuangongname<>'任盈盈' selectyuangongname,len(yuangongname)fromyuangong 这几节课截图 5-9笔记 Like加通配符 In子查询(单列的数据);可以加多个值 Betweenand Isnull 练习: 21查询不同部门的平均基本工资 Selectavg(jibengongzi),bumenidfromyuangonggroupbybumenid Ps: Avg(列名)平均值 sum(列名)累加和 max(列名)最大值 min(列名)最小值 count(*)所有行的行数 count(列名)统计在这一列当中非空值的个数 selectavg(jibengongzi)fromyuangong求员工表的基本工资平均值 22查询所有基本工资高于平均基本工资(平均基本工资为所有部门员工的基本工资平均数)的销售人员 Selectjibengongzi,yuangongnamefromyuangong Wherejibengongzi>(selectavg(jibengongzi)fromyuangong)andyuangongzhiwei=’销售人员’ 23显示各种职位的最低基本工资 Selectmin(jibengongzi),yuangongzhiweifromyuangong Groupbyyuangongzhiwei 24查询每个部门的人数 Selectcount(*),bumenidfromyuangong Groupbybumenid Orderbycount(*)desc 25查询每个部门入职最早的员工的入职时间和bumenid Selectmin(ruzhiriqi),bumenidfromyuangong Groupbybumenid 26显示所有职员的姓名及其所在部门的名称 内连接查询,外连接查询内连接重要 格式: SelectS.Sname,C.courseld,C.score(给表起别名) From Innerjoin on 完整写法: Selectyuangongname.yuangongname,bumen.bumennamefromyuangong Innerjoinbumenonyuangong.bumenid=bumen.bumenid 简答写法: Selecty.yuangongname,b.bumennamefromyuangongy Innerjoinbumenbony.bumenid=b.bumenid Orderbyb.bumennamedesc 另一种写法: Selecty.yuangongname,b.bumennamefromyuangongy,bumenb.bumenname wherey.bumenid=b.bumenid 27显示所有员工的姓名及、所在部门名称和基本工资 Selecty.yuangongname,b.bumennamefromyuangongy,bumenb.bumenname,y.jibengongzi wherey.bumenid=b.bumenid 28、显示不同部门不同职位的平均基本工资,部门名称,职位 Selectavg(y.jibengongzi),b.bumenname,y.yuangongzhiwei Fromyuangongy,bumenb Wherey.bumenid=b.bumenid Groupbyb.bumenname,y.yuangongzhiwei 29、查询部门平均工资大于员工平均工资(全体员工平均工资)的部门编号和平均工资 Selectb.bumenname,avg(y.jibengongzi)fromyuangongy,bumenb Wherey.bumenid=b.bumenid Groupbyb.bumenname Havingavg(y.jibengongzi)>(selectavg(y.jibengongzi)fromyuangong) 30、查询没有员工的部门名称 【 Selecty.yuangongname,b.bumennamefromyuangongy,bumenb Wherey.bumenid=b.bumenidorderbyb.bumenname Select*frombumen 内连接查询不到! 运用外连接 Selecty.yuangongname,b.bumennamefromyuangongy rightouterjoinbumenbony.bumendi=b.bumenid右外连接from后面是子表 groupbyb.bumenname havingcount(y.yuangongname)>0 Selecty.yuangongname,b.bumennamefrombumenb leftouterjoinyuangongyony.bumendi=b.bumenid左外连接from后面是主表 】 答案: Selecty.yuangongname,b.bumennamefromyuangongy rightouterjoinbumenbony.bumendi=b.bumenid右外连接from后面是子表 groupbyb.bumenname havingcount(y.yuangongid)>0查询出来有NULL 31、查询部门当中每个员工基本工资都大于1200的部门名称 Selectb.bumennamefromyuangongy,bumenb Wherey.bumenid=b.bumenid Groupbyb.bumenname Havingmin(jibengongiz)>=1200 34查询部门中基本工资不小于2000的人数不止1人的部门编号和人数 筛选例子,条件分组筛选排序 Selectcount(*),bumenidfromyuangong Wherejibengongzi>2000 Groupbybumenid Havingcount(*)>1聚合 Orderbycount(*)desc 5-10号上午 约束 数据库设计方面基本常识和规律: 例子: 学生: 学号,姓名,班级,年龄,性别,生日,联系电话,地址,email 成绩: 科目,任课教师,成绩, 三个范式 原子性,传递依赖性, --1查询: 年龄最大的人的住址 --2查询: 所有班级的编号 --3查询: 所有班级的学员人数 --4查询: 所有人信息包括(学号,姓名,年龄,住址) --5查询: 姓名,每人的总成绩 --6查询: 排列所有考了3科以上的人的成绩排行(降序) --7删除学生详细信息表中资料不全(邮箱、qq、地址均没有值)的学生 --8修改't-06'班级名为'y-06' --9添加新班级,班级名字为't-09'
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库