我地大数据库原理及应用学习笔记_第1页
我地大数据库原理及应用学习笔记_第2页
我地大数据库原理及应用学习笔记_第3页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、2. 数据库是如何操作数据的?(insert update delete)3. 数据库是如何显示数据的?(select 重点 )数据库原理及开发应用(总结的知识储备)1. 数据库就是储存数据的仓库,专业的解释就是对数据存储和管理 的软件和数据本身统称为数据库。2. 大型数据库有 Oracle ,Sql sever 属于中型数据库,小的太多忽 略不计,要知道就上网查。3. 数据库管理系统的主要功能:数据库定义功能;数据存取功能; 数据库运行管理;数据库的建立和维护功能。4. 数据库的三级模式构:外模式、模式和内模式。(外模式即是用 户模式可以多个,模式只能一个,内模式就是储存模式)。5. DDL

2、: 数据库模式定义语言 DDL(Data Definition Language) 。6. DML 数据操作语言(data manipulationIanguage )。7. DBMS:数据库管理系统(Database Management System)。8. DBS数据库系统(Database System )。9. DBA数据库管理员(Database Administrator)。从三方面学习数据库主键,外键,唯一键)1. 数据库是如何储存数据的? 操作及代码1. Crate table 语句: create table student(stu_namenvarchar(30) not

3、 null,stu_numb int not null,stu_sexnchar(1) not null);2. 主键外键: stu_numb int primary key ;(可以在 int 和primary 中间加上 constraint 约束名称 )。sch_add nvarchar(30) foreign key references student (stu_numb);顺带回忆一下主键和外键的定义: 主键:能够唯一标示一个事物的的字段或者多个字段的组合,叫主键。(含有主键的表叫做主键表,主键一般是整数不建议用字符串,而且一般用代理主键不要用业务主键,也就是说不要用有业务的字段作为

4、主键,一般就用 没有含义的编号当做主键。)外键:如果一个表中的若干个字段来自若干个表的主 键或者唯一键,就称这若干个字段为外键。(含有外键的 表叫做外键表, 通常都来自主键, 因为唯一键可能为 null, 而且外键不一定来自别的表可能就来自本表)。自认为总 结的超好。哦哦,还有删除表的时候先删外键表,不然先删主键会报错,原因很简单,外键引用错误。没完,主键约束:不允许重复元素,避免了数据的冗余。外键约束:从语法上保证所关联的事物一定存在, 而且事物和事物之间的关系是通过外键来体现的。3. check 语句 : stu_mark int check(stu_mark>=60 and stu

5、_mark<=100) ;check 约束:保证事物属性的取值在合法的范围内。4. insert 语句: insert into student values( 施宁一', 14,'男'); (必须把所有字段全都输入除非有 null 的要 写 null ) ; 也可以是: insert into (stu_name ,stu_sex) values( 施宁一','男' );5. default 语句: stu_sex nchar(1) default (男' );default 约束:保证事物的属性一定会有一个值。6. unique

6、 语句: stu_name nvarchar(30) unique; 表示其取值唯一不能重复。7. update 语句:(书上没写这,网上找的好例子) 我们刚刚发现Indiana Jones的等级为16,工资为$40,000.00,我们可以通过下面的SQL语句对数据库进行更新(并清除那些烦人的NULL)。UPDATE EMPLOYEESSET GRADE = 16, SALARY = 40000WHERE FIRST_NAME = 'Indiana'AND LAST_NAME = 'Jones'8. delete 语句:(一样是网上的例子, 代码大写的效果一样但

7、看着不爽)DELETED句用来删除已知表中的行。如同 UPDAT语 句中一样,所有满足 WHER子句中条件的行都将被删 除。由 于SQL中没有UNDO语句或是“你确认删除吗?”之类的警告, 在执行这条语句时千万要小心。如果决定取消 Los Angeles 办 事处并解雇办事处的所有职员, 这一卑鄙的工作可以由以下这 条语句来实现:DELETE FROM EMPLOYEESWHERE BRANCH_OFFICE = 'Los Angeles'如同UPDATE句中一样,省略WHER子句将使得操作施加到表中所有的行。简单的操作及代码总结完了, 后面是重点内容和难点部分, 主要介绍查询

8、【 select 】1. 计算列: ( 下面的例子中 student 是表名,其余的为字段名 ) select * from student; ( 数据库里的注释为 -)-* 表示所有的意思。此语句将表中的所有数据显示。select stu_name from student;select stu_name ,stu_id from student;select stu_name ,stu_id * 10 as“学号的十倍” fromstudent;select stu_name ,stu_id * 10 as “学号的十倍” ,stu_id “学号” from student;-as 可以省

9、略不写,此语句可以经过计算建立新的一列,并且命名必须知道的是 select 123 from student;之类的语句结果不会报错,会显示 student 表的行数,每行都是 123 这个数据。注:在写字段别名时可以用单引号也可以用双引号,但是 为了增强可移植性,一般用双引号,因为在 Oracle 大型数据库 中不允许用单引号。2. distinct 【不允许重复的】语句。select distinct stu_name from student;- 将一样的数据都过滤掉,包括 null ,如果有都只剩下一 个。select distinct stu_name ,stu_id from st

10、udent;- 将这两个字段的组合重复的过滤掉了。但是不能写成select stu_id ,distinct stu_name from student ; 用 来过滤第二个字段,保留第一个字段。逻辑上有错误,不 可行。3. between【在某个范围内的查询】语句。(后面emp是表名,salary是薪水的字段)select * from empwhere salary >=1500 and salary <=5000 等价于select * from empwhere salary between 1500 and 5000需要注意的是: select * from emp (;

11、 )where salary >=1500 and salary <=5000 是不可取的, 这两个命令是一起的,中间不能打分号。查找另外一个范围的数据时可以用以下语句:select * from empwhere salary not between 1500 and 5000( 另外一种是 :select * from empwhere salary <=1500 or salary >=5000)4. in 【若干个孤立的值】select * from emp where salary in (1500,3000)等价于select * from emp wher

12、e salary =1500 or salary =3000select * from emp where salary not in (1500,3000)等价于select * from emp where salary <>1500 and salary<>3000也作 select * from emp where salary !=1500 and salary != 3000 - 数据库中不等于有两种写法: != 和 <> 推荐使用第二种。-or取反时记得改为and,呵呵。5. top 【最前面的若干个记录,专属于 sql server 不可移植

13、到 其他数据库】select top 5 * from emp;select top 15 percent * from emp;- 此语句输出的是百分之 15的行数的所有字段 , 如果经计算百 分之 15是 2.1 ,则输出的是三行。 而且 * 不能省略,否则报错。6. null 【没有值 空值】零和 null 不一样, null 表示没有值,而零表示一个确定的值。 null 不能参与这些运算: <> != = 可以参与如下运算: is is not(下面的例子中 emp表示表名,而 comm表示字段名)select * from emp where comm is null;-

14、 输出的是奖金为空的员工的信息。select * from emp where comm is not null;- 输出的是奖金不为空的员工信息。select * from emp where comm <> null;- 输出为空 errorselect * from emp where comm != null;- 输出为空 errorselect * from emp where comm = null;- 输出为空 error 任何类型的数据都允许为 nullcreate table t1 (stu_name nvarchar(30),stu_id int ,stu_se

15、x nchar(1);insert into t1 values(null,null,null);- 正确 任何数字与 null 参与数学运算的结果都是 null(后面例子中 empna表示员工名字,empsal表示月薪,empid表 示员工号码,comn与上面一样表示年终奖金)select empid,empna,empsal * 12 + commas ”年薪” from emp;运行结果是最后一个字段都为 null ,证明了上面的说法。 另外一种正确的写法:select empid,empna,empsal * 12 + isnull(comm.,0) as“年薪” from emp;关

16、于函数isnull(comm.,0)的解释:如果comm的值为null则返回0,如果不是null则返回原本的comn值。7. order by 【以某个字段排序】 order by a,b按 a,b 都按升序排列。order by a,b desca升序,b,降序order by a desc, ba 降序, b 升序order by a desc,b desca,b 都按降序排列。- 解释:默认是按照升序排列的,升序是 asc 可以不写( ascending,descending )8. 模糊查询【搜索时经常使用】格式:select 字段的集合 from 表名 where 某个字段的名字 l

17、ike 匹配条件 (匹配条件通常含有通配符 % ) 通配符表示任意零个或者多个字符select * from emp where ename like %A%'-只要含A的ename就输出。select * from emp where ename likeA%'-ename只要首字母为A就输出。select * from emp where ename like%A'-ename 只要以 A 结尾就输出。_【下划线】表示任意单个字符select * from emp where ename like_A%'-ename 只要第二个字母为 A 就输出。a-fa

18、到 f 中的 任意单个字符select * from emp where ename like_a-f% '-ename 中只要第二个字母是在 a 到 f 中的就输出。a,f a 或 fAa-c不是a到c中的任意一个字母,看清楚是八 不是 自己瞎了别怪我没提醒。select * from emp where 部门 ip like '_A 发,联 %'(这个语句是从 sql sever 里面复制的,感觉颜色还蛮好看的)select注意:匹配的条件必须用单引号括起来,不能傻不拉几的用双引 号,后面来解释一下要搜索带 % _ 的字段时的方法。 直接把在 sql sever 里

19、的复制看:createtablepeople( name nvarchar (30) notinsertintopeoplevalues(' 张三' ,32);insertintopeoplevalues( 'Tom' ,66);insertintopeoplevalues( 'a_b' ,22);insertintopeoplevalues( 'c%d' ,44);insertintopeoplevalues( 'abc_fe' , 56);insertintopeoplevalues( 'Snail&#

20、39; ,18);insertintopeoplevalues(' 施宁一' , 19);insertintopeoplevalues('c%' , 65);insertintopeoplevalues( 'long''s' , 100);* from peopleselectnull, age int )* from people where name like '%/%' escape '/'把含有 %的字段输出了select * from people where namelike '

21、%/_%' escape '/' 把含有 _的字段输出了噢耶9. 聚合函数【多行记录返回至一个值,通常用于统计】函数的分类单行函数-每行返回一个值多行函数-每行返回一个值聚合函数是多行函数 例子:select * from peoplename日首芒1j弓怅三i 322Tom224c%d445abc_ie&6GSnil1&7施宁一19e&53long s1DDselect upper (name from people1J弛三2TOM3A_B4C%D5ABC_FESNAIL7诵宁一8C%3LONGS-单行函数upper ()将每行都返回为大写的字

22、母。select MIN(age) from people-多行函数将多行中最小的值找出来返回了聚合函数的分类:max()mi n()avg()平均值count()求个数count (*)返回表中所有记录的个数select COUNT) from people ;-返回了表people中的记录个数。count (字段名)返回字段中包括重复的记录的个数,但是null不会被当做有效的记录算在个数之内。cou nt (dist inct字段名)-返回了出去重复的记录后的记录个数。注意:-Ok判断下列sql语句是否正确1. select max(sal),min(sal),count(*) from

23、emp;2. select max(sal)“最高薪”,min(sal)“最低薪” ,count(*) “员工人数” from emp;-Ok3. select max(sal),lower(ename) from emp ;-error单行函数和多行函数不能混用10. group by【分组难点】格式:group by字段的集合功能:把表中的记录按照字段分成不同的组。例子:查询不同部门的平均工资并且按照升序排列select dept no , AVGsal) from empgroup by dept no order bydept nodaptno乐列名)12订丁202175 0WDCX3

24、30注意理解:group by a, b, c 的用法 先按a分组,如果a相同,再按b分组,如果b相同,再按c分组最终统计的是最小分组的信息 一定要明白下列语句为什么是错误的: select deptno , avg(sal) as “部门平均工资” ,ename from emp group by deptnoselect deptno,ename from empgroup by deptnoselect deptno, job, sal from emp group by deptno,job 记住:使用 group by 之后 select 中只能出现分组后的整体信息, 不能出现组内的

25、详细信息11. having 【对分组后的信息进行过滤 难点】1. having 通常是对分组之后的记录进一步过滤,所以having 时一般先使用 group up2. 如果没有使用 group up 而使用了 having 则意味着把所有的内容当做一组来处理3.Having 子句出现的字段必须是分组之后组的整体信 息, having 子句不允许出现组内的详细信息。4.Having 子句中不能使用别名,尽管 select 中能使用 别名。5.having 和 where 的异同相同点:都是过滤的作用,都不允许使用别名, 只 允许使用最原始的字段名。不同点:where是对原始数据进行过滤,而having 是对分组之后的数据进行过滤, where 必须在 having 前面,否则运行出错。(没试过)例子:select deptno , avg(sal) “平均工资” , count (*) ”部 门人数” , max(sal) “部门的最高工资”from empwhere sal> 2000- - where是对原始记录的过滤group by deptnohaving avg(sal)>3000-对分组之后的记录的过滤(where 不能出现聚合函数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论