数据库学习入门数据库基础.docx

上传人:b****8 文档编号:28249960 上传时间:2023-07-09 格式:DOCX 页数:28 大小:27.41KB
下载 相关 举报
数据库学习入门数据库基础.docx_第1页
第1页 / 共28页
数据库学习入门数据库基础.docx_第2页
第2页 / 共28页
数据库学习入门数据库基础.docx_第3页
第3页 / 共28页
数据库学习入门数据库基础.docx_第4页
第4页 / 共28页
数据库学习入门数据库基础.docx_第5页
第5页 / 共28页
点击查看更多>>
下载资源
资源描述

数据库学习入门数据库基础.docx

《数据库学习入门数据库基础.docx》由会员分享,可在线阅读,更多相关《数据库学习入门数据库基础.docx(28页珍藏版)》请在冰豆网上搜索。

数据库学习入门数据库基础.docx

数据库学习入门数据库基础

数据库基础入门

  

  --———---—--—--—-——-

  数据库的作用:

  -————---—--———-—---

  数据是数据库中存储的基本对象

  包括:

文字、图形、图像、声音

  有组织的、可共享的数据集合

  ————-—----———-——--

  常用的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(idint,namevarchar(20),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‘3。

com’;

  查询出邮箱里面含有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过滤查询的重复型记录,只显示唯一的记录

  将学生性别过滤

  selectdistinct(sex)fromstu;

  count查看表中有几条数据

  selectcount(*)fromstu;

  selectcount(distinct(sex))fromstu;

  limit限制查询结果的输出数量同时也可以实现数据的分页

  查询EQ前三名的学生

  select*fromstuorderbyEQdesclimit3;

  实现查询记录的分页

  select*fromstulimit0,3;

  select*fromstulimit3,3;

  约束----定义了表级的强制规则、数据的完整性

  非空约束(notnull)createtabletest(idintnotnull);insertintotestvalues();

  innodb会报错,myISAM会整形默认以0填充

  唯一约束(UNIQUE)不允许列中的数据重复

  createtabletest(idint,unique(id));

  insertintotestvalues

(1);

  默认约束(default)createtabletest(idintnotnulldefault'111111');insertintotestvalues();

  主键约束(primarykey)是一个字段或一组字段(组合键),用于唯一标识表中的记录,它可以确保每个记录是唯一的。

  createtabletest(idint,primarykey(id));

  insertintotestvaluse

(1);

  id主键自增,减

  createtabletest(idint,namevarchar(20),primarykey(id));

  insertintotestvalues(1,'张安’);

  auto_increment的特点------—自增值当删除某一值时,他不会自动填充,而是继续自增1

  createtabletest(idintnotnullauto_increment,namevarchar(20),primarykey(id));

  insertintotest(name)values('xxx’);

  创建一个有合理约束的表

  createtablepeople(idintnotnullauto_increment,namevarchar(20)notnull,ageintnotnull,sexchar

(2)notnull,pcodevarchar(50),telvarchar(50),emailvarchar(50),primarykey(id));

  insertintopeople(name,age,sex,email)values('张三’,‘28',‘男',’abc@163。

com’);

  查询出所有学生的档案信息

  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)

  如何创建外键

  foreignkey:

定义子中的列为外键

  references:

标记外键所要参考的父表和列

  ondeletecascade:

允许在删除父表的列的同时,删除子表的列//在InnoDB中支持

  createdatebasefordb;

  usefordb;

  创建父表

  createtableschool(idintnotnullauto_increment,namevarchar(20),primarykey(id))engine=innodb;

  insertintoschool(name)values(’紫琅学院');

  创建子表

  createtablestudent(idintnotnullauto_increment,namevarchar(20),schoolidint,primarykey(id),foreignkey(schoolid)referencesschool(id)ondeletecascade);

  insertintostudent(name,schoolid)values('张三',1);

  E—R模型

  概述:

设计数据库时,通常采用"实体关系模型“——E—R模型

  软件开发流程:

  需求调研(设计功能,收集数据)

  与最终用户进行确定

  数据库的设计

  控制多余数据

  那么在最后,数据库设计者确定表、不同表之间的关系以及每个表之间的关系,通常使用”E-R模型“,它将整个系统看作彼此相关的实体组成

  实体:

通常用于表示能够被清晰识别的人、地点、事物、对象、事件

  实体关系图:

如果需要基于‘E—R’模型建立数据库模型,需要标识实体,实体的属性、以及实体之间的关系。

那么通常用‘E-R’图来表示

  实体之间的三种类型:

1:

11:

N或N:

1M:

N

  数据库设计员确定的实体被转换为表,而其属性则成为相应表中的字段(列)

  如何控制冗余数据:

  一般来说通过数据库的范式理论

  设计数据库的范式来控制冗余

  共有五个范式,一般达到第三范式即可

  第一范式:

对于表中的每一行,必须且仅仅有唯一的行值,在一行中的每一列仅有唯一的值并且具有原子性

  第二范式:

要求非主键列是主键的子集,非主键列活动必须完全依赖整个主键。

主键必须有唯一性的元素,一个主键可以由一个或更多的组成唯一值的列组成。

一旦创建,主键无法改变,外键关联一个表的主键。

主外键关联意味着一对多的关系.

  第三范式:

要求非主键列互不依赖

  第四范式:

禁止主键列和非主键列一对多关系不受约束

  第五范式:

将表分割成尽可能小的块,为了排除在表中所有的冗余

  MYSQL的聚合函数

  1、最大值

  找出EQ最高的学生

  selectname,eqfromstudentwhereeq=(selectmax(EQ)fromstudent);

  SELECTMAX(article)ASarticleFROMshop;

  2、最小值

  找出EQ最低的学生

  selectname,min(EQ)fromstudent;

  count()//统计查询出的记录总数

  3、查询出学生的总条数

  selectcount(name)fromstudent;

  avg()//求平均值

  4、查询学生EQ的平均值

  selectavg(EQ)fromstudent;

  sum()//求和

  5、查询学生EQ的总和

  selectsum(EQ)fromstu;

  修改字段类型

  altertablestudentmodifysexchar(5);

  增加列

  altertablestudentaddaddressvarchar(50);

  删除列

  altertablestudentdropaddress;

  修改列的名称

  altertablestudentchangenamenamesvarchar(20);

  修改表的名字

  renametablestudenttostu;

  MYSQL之表连接

  内链接(innerjoin):

又为等值连接,因为他将两个表中的公共字段有相等的值(记录)连接起来,这是最常用的连接.一个表引用还被称为

  查询显示:

订单编号,顾客姓名,物品名称

  selectcases.id,user.name,goods。

namefromcases,user,goodswherecases。

user_id=user。

idandcases.goods_id=goods。

id;或

  selectcases.id,user.name,goods。

namefromcasesinnerjoin(user,goods)on(user.id=cases。

user_idandgoods.id=cases。

goods_id);或

  selectcases.id,user。

name,goods。

namefrom(casesinnerjoinuseroncases。

user_id=user.id)innerjoingoodsoncases.goods_id=goods。

id;或

  selectcases。

id,user。

name,goods。

namefromuserinnerjoin(casesinnerjoingoodsoncases.goods_id=goods.id)onuser。

id=cases。

user_id);

  左连接:

显示sql语句中leftjoin左边表中的所有记录,即使在leftjoin右边的表中没有满足连接条件的数据也被显示。

当满足连接条件时,leftjoin右边的表中的相应的记录与leftjoin左边表中的相应记录结合显示.

  查询出:

学生的编号,学生姓名,学生学校

  selectstudent。

name,student。

id,school。

namefromstudentleftjoinschoolonstudent。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1