我的数据库原理及应用学习笔记.docx
- 文档编号:17148348
- 上传时间:2023-07-22
- 格式:DOCX
- 页数:8
- 大小:18.61KB
我的数据库原理及应用学习笔记.docx
《我的数据库原理及应用学习笔记.docx》由会员分享,可在线阅读,更多相关《我的数据库原理及应用学习笔记.docx(8页珍藏版)》请在冰点文库上搜索。
我的数据库原理及应用学习笔记
数据库原理及开发应用
(总结的知识储备)
1.数据库就是储存数据的仓库,专业的解释就是对数据存储和管理的软件和数据本身统称为数据库。
2.大型数据库有Oracle,Sqlsever属于中型数据库,小的太多忽略不计,要知道就上网查。
3.数据库管理系统的主要功能:
数据库定义功能;数据存取功能;数据库运行管理;数据库的建立和维护功能。
4.数据库的三级模式构:
外模式、模式和内模式。
(外模式即是用户模式可以多个,模式只能一个,内模式就是储存模式)。
5.DDL:
数据库模式定义语言DDL(DataDefinitionLanguage)。
6.DML:
数据操作语言(data manipulation language)。
7.DBMS:
数据库管理系统(DatabaseManagementSystem)。
8.DBS:
数据库系统(DatabaseSystem)。
9.DBA:
数据库管理员(DatabaseAdministrator)。
从三方面学习数据库
1.数据库是如何储存数据的?
(主键,外键,唯一键)
2.数据库是如何操作数据的?
(insertupdatedelete)
3.数据库是如何显示数据的?
(select重点)
操作及代码
1.Cratetable语句:
createtablestudent(stu_namenvarchar(30)notnull,stu_numbintnotnull,stu_sexnchar
(1)notnull);
2.主键外键:
stu_numbintprimarykey;(可以在int和primary中间加上constraint约束名称)。
sch_addnvarchar(30)foreignkeyreferencesstudent(stu_numb);
顺带回忆一下主键和外键的定义:
主键:
能够唯一标示一个事物的的字段或者多个字段的组合,叫主键。
(含有主键的表叫做主键表,主键一般是整数不建议用字符串,而且一般用代理主键不要用业务主键,也就是说不要用有业务的字段作为主键,一般就用没有含义的编号当做主键。
)
外键:
如果一个表中的若干个字段来自若干个表的主键或者唯一键,就称这若干个字段为外键。
(含有外键的表叫做外键表,通常都来自主键,因为唯一键可能为null,而且外键不一定来自别的表可能就来自本表)。
自认为总结的超好。
哦哦,还有删除表的时候先删外键表,不然先删主键会报错,原因很简单,外键引用错误。
没完,
主键约束:
不允许重复元素,避免了数据的冗余。
外键约束:
从语法上保证所关联的事物一定存在,而且事物和事物之间的关系是通过外键来体现的。
3.check语句:
stu_markintcheck(stu_mark>=60andstu_mark<=100);
check约束:
保证事物属性的取值在合法的范围内。
4.insert语句:
insertintostudentvalues(‘施宁一’,14,’男’);(必须把所有字段全都输入除非有null的要写null);也可以是:
insertinto(stu_name,stu_sex)values(‘施宁一’,’男’);
5.default语句:
stu_sexnchar
(1)default(‘男’);
default约束:
保证事物的属性一定会有一个值。
6.unique语句:
stu_namenvarchar(30)unique;表示其取值唯一不能重复。
7.update语句:
(书上没写这,网上找的好例子)我们刚刚发现IndianaJones的等级为16,工资为$40,000.00,我们可以通过下面的SQL语句对数据库进行更新(并清除那些烦人的NULL)。
UPDATEEMPLOYEES
SETGRADE=16,SALARY=40000
WHEREFIRST_NAME='Indiana'
ANDLAST_NAME='Jones';
8.delete语句:
(一样是网上的例子,代码大写的效果一样但看着不爽)DELETE语句用来删除已知表中的行。
如同UPDATE语句中一样,所有满足WHERE子句中条件的行都将被删除。
由于SQL中没有UNDO语句或是“你确认删除吗?
”之类的警告,在执行这条语句时千万要小心。
如果决定取消LosAngeles办事处并解雇办事处的所有职员,这一卑鄙的工作可以由以下这条语句来实现:
DELETEFROMEMPLOYEES
WHEREBRANCH_OFFICE='LosAngeles';
如同UPDATE语句中一样,省略WHERE子句将使得操作施加到表中所有的行。
简单的操作及代码总结完了,后面是重点内容和难点部分,主要介绍
查询【select】
1.计算列:
(下面的例子中student是表名,其余的为字段名)
select*fromstudent;(数据库里的注释为--)
--*表示所有的意思。
此语句将表中的所有数据显示。
selectstu_namefromstudent;
selectstu_name,stu_idfromstudent;
selectstu_name,stu_id*10as“学号的十倍”fromstudent;
selectstu_name,stu_id*10as“学号的十倍”,stu_id“学号”fromstudent;
--as可以省略不写,此语句可以经过计算建立新的一列,并且命名。
必须知道的是select123fromstudent;之类的语句结果不会报错,会显示student表的行数,每行都是123这个数据。
注:
在写字段别名时可以用单引号也可以用双引号,但是为了增强可移植性,一般用双引号,因为在Oracle大型数据库中不允许用单引号。
2.distinct【不允许重复的】语句。
selectdistinctstu_namefromstudent;
--将一样的数据都过滤掉,包括null,如果有都只剩下一个。
selectdistinctstu_name,stu_idfromstudent;
--将这两个字段的组合重复的过滤掉了。
但是不能写成
selectstu_id,distinctstu_namefromstudent;用来过滤第二个字段,保留第一个字段。
逻辑上有错误,不可行。
3.between【在某个范围内的查询】语句。
(后面emp是表名,salary是薪水的字段)
select*fromemp
wheresalary>=1500andsalary<=5000
等价于
select*fromemp
wheresalarybetween1500and5000
需要注意的是:
select*fromemp(;)
wheresalary>=1500andsalary<=5000是不可取的,这两个命令是一起的,中间不能打分号。
查找另外一个范围的数据时可以用以下语句:
select*fromemp
wheresalarynotbetween1500and5000
(另外一种是:
select*fromemp
wheresalary<=1500orsalary>=5000
)
4.in【若干个孤立的值】
select*fromempwheresalaryin(1500,3000)
等价于
select*fromempwheresalary=1500orsalary=3000
select*fromempwheresalarynotin(1500,3000)
等价于
select*fromempwheresalary<>1500andsalary<>3000
也作
select*fromempwheresalary!
=1500andsalary!
=3000
--数据库中不等于有两种写法:
!
=和<>推荐使用第二种。
--or取反时记得改为and,呵呵。
5.top【最前面的若干个记录,专属于sqlserver不可移植到其他数据库】
selecttop5*fromemp;
selecttop15percent*fromemp;
--此语句输出的是百分之15的行数的所有字段,如果经计算百分之15是2.1,则输出的是三行。
而且*不能省略,否则报错。
6.null【没有值空值】
零和null不一样,null表示没有值,而零表示一个确定的值。
null不能参与这些运算:
<>!
==
可以参与如下运算:
isisnot
(下面的例子中emp表示表名,而comm表示字段名)
select*fromempwherecommisnull;
--输出的是奖金为空的员工的信息。
select*fromempwherecommisnotnull;
--输出的是奖金不为空的员工信息。
select*fromempwherecomm<>null;
--输出为空error
select*fromempwherecomm!
=null;
--输出为空error
select*fromempwherecomm=null;
--输出为空error
任何类型的数据都允许为null
createtablet1(stu_namenvarchar(30),stu_idint,stu_sexnchar
(1);
insertintot1values(null,null,null);--正确
任何数字与null参与数学运算的结果都是null
(后面例子中empna表示员工名字,empsal表示月薪,empid表示员工号码,comm与上面一样表示年终奖金)
selectempid,empna,empsal*12+commas”年薪”fromemp;
运行结果是最后一个字段都为null,证明了上面的说法。
另外一种正确的写法:
selectempid,empna,empsal*12+isnull(comm.,0)as“年薪”fromemp;
关于函数isnull(comm.,0)的解释:
如果comm的值为null则返回0,如果不是null则返回原本的comm值。
7.orderby【以某个字段排序】
orderbya,b
按a,b都按升序排列。
orderbya,bdesc
a升序,b,降序
orderbyadesc,b
a降序,b升序
orderbyadesc,bdesc
a,b都按降序排列。
--解释:
默认是按照升序排列的,升序是asc可以不写。
(ascending,descending)
8.模糊查询【搜索时经常使用】
格式:
select字段的集合from表名where某个字段的名字like匹配条件(匹配条件通常含有通配符%)
通配符表示任意零个或者多个字符
select*fromempwhereenamelike‘%A%’
--只要含A的ename就输出。
select*fromempwhereenamelike‘A%’
--ename只要首字母为A就输出。
select*fromempwhereenamelike‘%A’
--ename只要以A结尾就输出。
_【下划线】
表示任意单个字符
select*fromempwhereenamelike‘_A%’
--ename只要第二个字母为A就输出。
[a-f]
a到f中的任意单个字符
select*fromempwhereenamelike‘_[a-f]%’
--ename中只要第二个字母是在a到f中的就输出。
[a,f]a或f
[^a-c]
不是a到c中的任意一个字母,看清楚是^不是~自己瞎了别怪我没提醒。
select*fromempwhere部门iplike'_[^发,联]%'
(这个语句是从sqlsever里面复制的,感觉颜色还蛮好看的)
注意:
匹配的条件必须用单引号括起来,不能傻不拉几的用双引号,后面来解释一下要搜索带%_的字段时的方法。
直接把在sqlsever里的复制看:
createtablepeople(namenvarchar(30)notnull,ageint)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据库 原理 应用 学习 笔记