数据库学习入门数据库基础入门.docx
《数据库学习入门数据库基础入门.docx》由会员分享,可在线阅读,更多相关《数据库学习入门数据库基础入门.docx(27页珍藏版)》请在冰豆网上搜索。
数据库学习入门数据库基础入门
数据库学习入门数据库基础入门
数据库学习入门数据库基础入门
-------------------
数据库的作用:
-------------------
数据是数据库中存储的基本对象
包括:
文字、图形、图像、声音
有组织的、可共享的数据集合
------------------
常用的DBMS
------------------
MYSQL〔oracle、Sun
oracle〔oracle
SQL-Server〔Microsoft>
DB2〔IBM
-----------------------------------
..如何学习数据库管理系统
------------------------------------
.程序员
1、标准语言:
SQL〔结构化查询语言
SQL是用于访问数据库的最常用标准化语言,他是由ANSI/ISOSQL标准定义的
SQL的分类
DML:
数据操作语言〔用于检索或者修改数据
DDL:
数据定义语言〔用于定义数据的结构,比如创建、修改或者删除数据库的对象
DCL:
数据控制语言〔用于定义数据库用户的权限
DML:
select:
用于检索数据
insert:
用于增加数据到数据库
update:
用于从数据库中修改现存的数据
delete:
用于从数据库中删除数据
DDL:
createtable//创建表
alter//修改表
droptable//删除表
createindex//创建索引
dropindex//删除索引
createview//创建视图
dropview//删除视图
DCL:
grant//授权
revoke//撤销授权
set//设置
2、不同数据库的独特管理方式
.DBA〔DatabaseAdministrator
1、标准语言:
SQL〔结构化查询语言
2、不同数据库的独特管理方式
3、数据库的调优
4、精通数据库的备份、回复机制
-----------------------------
MYSQL的安装与配置
----------------------------
安装:
选择普通安装类型
.配置
1、选择配置类型:
DetailedConfiguration
2、选择服务器类型:
DeveloperMachine
3、选择数据库的是使用情况:
--多功能数据库〔MultifunctionalDatabase
--只是事务处理数据库〔TransactionalDatabaseOnly
--只是非事务处理数据库〔Non-TransactionalDatabaseOnly
4、InnoDB表空间文件存储的盘符,默认在c:
\
5、数据库并发连接数配置:
Decisionsupport
6、MYSQL服务器端口:
默认:
3306
7、EnableStrictMode:
是否允许严格样式检查:
取消
8、选择字符编码:
手工选择:
gb2312,windows下中文支持
9、服务器默认安装到windows系统服务中,默认服务自启动,选择自动配置环境变量
10、填写数据库管理系统的管理员密码
--在mySQL中数据库管理员的用户名为:
root
11、是否允许使用root用户远程登录数据库
12、测试配置是否正确c:
\>c:
\mysql\bin\mysqlshow
------------------------
MYSQL的登录
------------------------
.开始--运行--cmd
.输入:
mysql-uroot-p,然后输入密码
.或者:
mysql-uroot-p密码
.退出quit或者\q
--不必全在一个行内给出一个命令,较长命令可以输入到多个行中。
mysql通过寻找终止分号而不是输入行的结束来决定语句在哪儿结束
->等待多行命令的下一行
'>等待下一行,等待以单引号开始的字符串结束
如果你决定不想执行正在输入过程中的一个命令,输入\c取消它
能够以大小写输入关键词,结果是等价的
--------------------
基本的SQL语句
--------------------
创建数据库---createdatabaseschool;
查看有哪些数据库--showdatabases;
删除数据库---dropdatabaseschool;
--------------------------
向数据库中存储数据
--------------------------
1、首先进入数据库usedbname;
use类似quit,不需要一个分号,写也无碍
use必须在一个单行上给出
2、查看数据库中的表showtables;
3、在数据库中创建表createtablestudent
〔namevarchar〔20,ageint,sexchar〔2;
4、向表中插入数据---insertintodbnamevalues〔‘张三’,18,‘男’;
5、查看表中所有的数据--select*fromstudent;
只查看姓名和年龄---selectname,agefromstudent;
--------------------
常用的数据类型
--------------------
char〔M固定长度字符
用来表示固定长度字符串,字符串的长度是1-255
VARCHAR〔M可变长度字符
具有灵活性的字符数据类型,范围:
1-255
处理char类型的数据比varchar类型的数据要快,有时会快50%〔char类型存储的数据的长度是声明变量时的固定长度,而不管数据的实际长度,varchar存储的是按数据的实际长度,从而减小了数据文件的大小
int整数有符合的范围:
-2147483648到2147483647,无符号范围:
0到4294967295
--------------------------
其他常用的数据类型
--------------------------
DATE---日期类型,显示‘YYYY-MM-DD’
DATETIME--日期和时间的组合,显示‘YYYY-MM-DDHH:
MM:
SS'
TEXT/BLOB文本和大对象
TEXT可以保存字符串的长度在255-65535字节内。
BLOB是一个能保存二进制数据的大对象,区别是TEXT不区分大小写,而BLOB区分大小写。
SQL语句的导入
1、编写SQL脚本〔.sql
2、导入mysql-uusername-p<***.sql
&练习:
&老师表:
teacher
&姓名,性别,年龄,课程
导出sql脚本---mysqldumpstu-uroot-p>abc.sql
查看表的结构------desctablename
修改表中的数据---updatetablenamesetcolname=valuewhere条件
删除数据-----deletefromteacherwhereage=?
删除表中所有数据---deletefromteacher;
删除表---droptabletablename
根据条件进行过滤查找---select*fromtablenamewhere条件
查找出版社为"清华出版社"的所有书籍---select*frombookswherepub=‘清华出版社’;
查找出库存大于50的所有书籍---select*frombookswherestore>50;
查找出"西游记"的库存量---selecttitle,storefrombookswheretitle=‘西游记’;
SQL运算符
>大于<小于>=大于等于<=小于等于!
=,<>不等于
查看数据库的信息----\s
-------------------
mysql常用函数
-------------------
1、查看数据库版本---selectversin〔;
计算机的时间是存在BIOS〔
2、查看当前数据库的日期----selectcurrent_date〔;
3、查看当前数据库时间----selectnow〔;
4、查看当前连接数据库的用户---selectuser〔;localhost:
代表是本机
createtableuser,birdate,deadatetime>;
insertintouservalues<1,'zhangsan',now<>,now<>>;
or和and查询
or〔满足一个条件
and〔都需要满足
查找学生EQ为80分或90分的学生
select*fromstuwhereEQ=80orEQ=90;
查找学生EQ为90分并且性别为女的学生
select*fromstuwhereEQ=90andsex='女';
in〔x,x返回条件中的记录与or作用相似
select*fromtablenamewhere条件in〔,;
between‘’and‘’返回两者之间的记录
查询年龄在20-30之间的所有学生
select*fromstuwhereagebetween20and30;
like与通配符〔%一起使用,模糊查询
查找出姓张的学生
select*fromstuwherenamelike‘张%’;
查询出使用163邮箱的所有学生
select*fromstuwhereemaillike‘’;
查询出邮箱里面含有a的所有学生
select*fromstuwhereemaillike‘%a%’;
orderby实现排序〔从小到大--asc
将学生的年龄从高到低排列
select*fromstuorderbyagedesc;〔降序
将学生的年龄从低到高排列
select*fromstuorderbyageasc;〔升序
数据默认为升序〔从低到高
select*fromstuorderbyage;
as为查询的列起别名
1、查询所有学生只列出姓名,年龄,性别
selectnameas'姓名',ageas'年龄',sexas'性别'fromstu;
groupby对于查询出的数据结果进行分类〔分组
2、将学生按性别进行分类
select*fromstugroupbysex;
将学生按年龄进行分类
select*fromstugroupbyage;
3、having子查询:
对于where查询出的结果再次进行查询
查找出年龄大于20岁学生,并且在其中找出姓名等于xxx的学生
select*fromstuwhereage>20havingname='xxx'或
select*fromstuwhereage>20andname='xxx'
4、distinct过滤查询的重复型记录,只显示唯一的记录
将学生性别过滤
selectdistinctfromstu;
count查看表中有几条数据
selectcount<*>fromstu;
selectcount>fromstu;
limit限制查询结果的输出数量同时也可以实现数据的分页
查询EQ前三名的学生
select*fromstuorderbyEQdesclimit3;
实现查询记录的分页
select*fromstulimit0,3;
select*fromstulimit3,3;
约束----定义了表级的强制规则、数据的完整性
非空约束〔notnullcreatetabletest;insertintotestvalues<>;
innodb会报错,myISAM会整形默认以0填充
唯一约束〔UNIQUE>不允许列中的数据重复
createtabletest>;
insertintotestvalues<1>;
默认约束createtabletest;insertintotestvalues<>;
主键约束是一个字段或一组字段〔组合键,用于唯一标识表中的记录,它可以确保每个记录是唯一的。
createtabletest>;
insertintotestvaluse<1>;
id主键自增,减
createtabletest;
insertintotestvalues<1,'张安'>;
auto_increment的特点-------自增值当删除某一值时,他不会自动填充,而是继续自增1
createtabletest,primarykey>;
insertintotestvalues<'xxx'>;
创建一个有合理约束的表
createtablepeoplenotnull,ageintnotnull,sexchar<2>notnull,pcodevarchar<50>,telvarchar<50>,emailvarchar<50>,primarykey>;
insertintopeoplevalues<'张三',‘28’,‘男’,'abc@'>;
查询出所有学生的档案信息
select*fromstudent,schoolwherestudent.daih=school.id;或
select*fromstudentasa,schoolasbwherea.daih=b.id;
查询所有学生档案信息只需显示:
学生姓名,年龄。
毕业学校,学校地址
selectstudent.name,student.age,school.name,school.addressfromstudent,schoolwherestudent.daih=school.id;或
selecta.name,a.age,b.name,b.addressfromstudentasa,schoolasbwherea.daih=b.id;
外键约束
如何创建外键
foreignkey:
定义子中的列为外键
references:
标记外键所要参考的父表和列
ondeletecascade:
允许在删除父表的列的同时,删除子表的列//在InnoDB中支持
createdatebasefordb;
usefordb;
创建父表
createtableschool,primarykey>engine=innodb;
insertintoschoolvalues<'紫琅学院'>;
创建子表
createtablestudent,schoolidint,primarykey,foreignkeyreferencesschoolondeletecascade>;
insertintostudentvalues<'张三',1>;
E-R模型
概述:
设计数据库时,通常采用"实体关系模型"--E-R模型
软件开发流程:
需求调研〔设计功能,收集数据
与最终用户进行确定
数据库的设计
控制多余数据
那么在最后,数据库设计者确定表、不同表之间的关系以及每个表之间的关系,通常使用"E-R模型",它将整个系统看作彼此相关的实体组成
实体:
通常用于表示能够被清晰识别的人、地点、事物、对象、事件
实体关系图:
如果需要基于‘E-R’模型建立数据库模型,需要标识实体,实体的属性、以及实体之间的关系。
那么通常用‘E-R’图来表示
实体之间的三种类型:
1:
11:
N或N:
1M:
N
数据库设计员确定的实体被转换为表,而其属性则成为相应表中的字段〔列
如何控制冗余数据:
一般来说通过数据库的范式理论
设计数据库的范式来控制冗余
共有五个范式,一般达到第三范式即可
第一范式:
对于表中的每一行,必须且仅仅有唯一的行值,在一行中的每一列仅有唯一的值并且具有原子性
第二范式:
要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。
主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。
一旦创建,主键无法改变,外键关联一个表的主键。
主外键关联意味着一对多的关系。
第三范式:
要求非主键列互不依赖
第四范式:
禁止主键列和非主键列一对多关系不受约束
第五范式:
将表分割成尽可能小的块,为了排除在表中所有的冗余
MYSQL的聚合函数
1、最大值
找出EQ最高的学生
selectname,eqfromstudentwhereeq=;
SELECTMAXASarticleFROMshop;
2、最小值
找出EQ最低的学生
selectname,min〔EQfromstudent;
count〔//统计查询出的记录总数
3、查询出学生的总条数
selectcount〔namefromstudent;
avg〔//求平均值
4、查询学生EQ的平均值
selectavg〔EQfromstudent;
sum〔//求和
5、查询学生EQ的总和
selectsum〔EQfromstu;
修改字段类型
altertablestudentmodifysexchar〔5;
增加列
altertablestudentaddaddressvarchar〔50;
删除列
altertablestudentdropaddress;
修改列的名称
altertablestudentchangenamenamesvarchar〔20;
修改表的名字
renametablestudenttostu;
MYSQL之表连接
内链接:
又为等值连接,因为他将两个表中的公共字段有相等的值〔记录连接起来,这是最常用的连接。
一个表引用还被称为
查询显示:
订单编号,顾客姓名,物品名称
selectcases.id,user.name,goods.namefromcases,user,goodswherecases.user_id=user.idandcases.goods_id=goods.id;或
selectcases.id,user.name,goods.namefromcasesinnerjoinon;或
selectcases.id,user.name,goods.namefrominnerjoingoodsoncases.goods_id=goods.id;或
selectcases.id,user.name,goods.namefromuserinnerjoinonuser.id=cases.user_id>;
左连接:
显示sql语句中leftjoin左边表中的所有记录,即使在leftjoin右边的表中没有满足连接条件的数据也被显示。
当满足连接条件时,leftjoin右边的表中的相应的记录与leftjoin左边表中的相应记录结合显示。
查询出:
学生的编号,学生姓名,学生学校
selectstudent.name,student.id,school.namefromstudentleftjoinschoolonstudent.school_id=school.id;
右连接:
与左