数据库基础

1)什么是数据库 数据库的作用 数据库的使用场景
什么是数据库 : 存储数据的仓库。
数据:
数据(data)是事实或观察的结果,是对客观事物的逻辑归纳,
是用于表示客观事物的未经加工的原始素材。
数据可以是连续的值,比如声音、图像,称为模拟数据。也可以是离散的,如符号、文字,称为数字数据。
在计算机系统中,数据以二进制信息单元0,1的形式表示。

数据库的作用:
方便数据的存储和管理。

数据库的使用场景:
有数据产生的地方就有数据库的使用场景。

(2)数据库的发展史
实体的空间 随着计算机的发展(文件系统的发展)
mysql sql server oracle

(3)什么是数据库管理系统
mysql sql server oracle

mysql 如何管理数据库的?
学校:
学号 姓名 性别 年龄 课桌的编号 课桌的质量 课桌的长度
制定关系的方式对数据进行管理
常识+范式:
学生的关系
学号 姓名 性别 年龄
课桌的关系
课桌的编号 课桌的质量 课桌的长度

如何制定关系:
mysql 创建二维表的形式
学号 姓名 年龄 性别
±-----±-------±--------------------±-----+
| SID | Sname | Sage | Ssex |
±-----±-------±--------------------±-----+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-05-20 00:00:00 | 男 |
| 04 | 李云 | 1990-08-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-03-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-07-01 00:00:00 | 女 |
| 08 | 王菊 | 1990-01-20 00:00:00 | 女 |
±-----±-------±--------------------±-----+
行 : 元组
列 : 属性
阈值: 属性取值范围
表:

关系型数据库
非关系型数据库 redis

(4)什么是数据库系统
数据库 + 数据库管理系统 = 数据库系统

(5)如何使用MySQL操作数据库(重点)———— 通过sql语句操作
MySQL: C/S 模型 客户端服务器模型 qq
登录 userName password
服务器:
客户端:cmd

命令 登录 mysql:
mysql -u root -p123456
退出
exit
存储学校相关的数据 :
(1)创建数据库:
create database 数据库名
命名规则:school school_db 不能重名
查看已经创建好的数据库:
show databases;
删除数据库
drop database 数据库名;
(2)use 数据库名;
(3)创建二维表
create table 表名 (
属性名1 数据类型 完整性约束(可以没有的),
属性名2 数据类型 完整性约束,
属性名3 数据类型 完整性约束,

属性名N 数据类型 完整性约束
);
学生数据
stu_id(主键+自增) class_id (班级号) name(唯一) 出生日期
age(默认0) sex(非空) score(小数)考试成绩

约束的是存储的数据

完整性约束 |说明

primary key |表示当前属性为该表的主键,可以区分不同的行记录

foreign key |修饰的属性为该表的外键,表之间关联使用的键

not null | 表示属性不能为空

unique |表示属性的值是唯一的

auto_increment | MYSQL特色,表示属性是自增的,自增类型为整形

default |给属性设定默认值

命名规则:student stu stu_tb

常识+范式:
学生的关系
学号 姓名 性别 年龄
课桌的关系
课桌的编号 课桌的质量 课桌的长度
学生数据
stu_id(主键+自增) class_id (班级号) name(唯一) 出生日期
age(默认0) sex(非空) score(小数)考试成绩
数据类型的选择:
(1)尽量小但要合适
字符串类型:(1)也要符合

char(int) varchar(int)
char(10) varchar(10)
int:最多向里面存储int个字符
varchar:存储数据时
(1)根据插入的数据进行计算 size
(2)开辟size+1个空间然后
(3)将数据存储进去
char 创建表的时候空间就已经开辟好了
存储数据时 直接将数据存储进去。
name 可长可短 varchar(20)
sex 长度固定 char(2)
text 文本类型 文件地址 30 用的少
非文本文件 二进制类型 文件地址 用的少
enum(‘m’,‘w’) 单选
set(‘java’,‘cpp’,‘linux’); 多选

查看表
show tables;
查看单个表的结构:
show create table 表名;
删除表
drop table 表名;
插入语句
(1)
属性不可缺省方式:
test_user(id int ,name varchar(20),age int)
insert into(into可以不写) 表名 values(属性值1,属性值2,属性值3,属性值4…);
insert test_user values (1,‘zhangSan’,15);
insert test_user values (2,‘liSi’);错
(2)
属性可缺省方式:
insert into(into可以不写) 表名 (属性1,属性2,属性3,属性4…)
values(属性值1,属性值2,属性值3,属性值4…);
insert test_user(id,name) values (2,‘liSi’);
基本查询:
语法:
(1)查看表中的所有元组对应的所有字段:select * from 表名;
(2)查看表中的查看表中的所有元组对应的指定字段 select 属性名1,属性名2, … from 表名;
(3)查询指定的元组:
根据题目中的要求或者项目开发的需求写合适筛选条件
select * from 表名 where 筛选条件;
select 属性名1,属性名2, … from 表名 where 筛选条件;
like
% : 代表任意数量个任意字符
_ : 代表一个任意字符
limit off,len;
off 数据的起始位置
len ; 数据的长度
如果off = 0 则可以省略
order by 属性名 :表示查询出的数据按照这个属性进行排序
名字中间带安的
order by 属性 排序 order by 之后跟哪一个属性就是按照哪一个属性进行排序 (升序排列)
order by 属性 desc 降序排列
order by 属性 asc 升序排列) 默认就是升序排列 所有asc可以不加
根据某个属性排序 order by 属性 默认升序
按照某个属性分组:group by 属性 分组
mysql 中的函数
和java中函数额用法类似
函数名(属性)
属性作为函数的参数

如果所要查询的数据分布在多张表中这时我就要使用联合查询或者子查询。
联合查询(连接查询):把多张表联合(连接)在一起查询出我们想要的数据。
如何联合(连接):这多张表中必须有意义相同的字段。
意义相同的字段 : EX
内连接:
能够把多挣表中意义相同字段相等时的那部分数据查出来。
语法:
(1)select 表1.属性名,… 表3.* from 表1,表2,表3…
where 表1.EX = 表2.EX and 表2.EX = 表3.EX and 表3.EX =表4.EX …;
select a.属性名,… c.* from 表1 a,表2 b,表3 c…
where a.EX = b.EX and b.EX = c.EX and c.EX =d.EX …;
(2) (inner) join 括号表示可以省略
select 表1.属性名,… 表3.* from 表1 (inner)join 表2 on 表1.EX = 表2.EX (inner)join 表3 on
表2.EX = 表3.EX …;
select a.属性名,… c.* from 表1 a (inner) join 表2 b on a.EX = b.EX (inner) join 表3 c on
b.EX = c.EX …;

外连接查询:
– 左连接查询
select 表1.属性名,… 表3.* from 表1 left join 表2 on 表1.EX = 表2.EX left join 表3 on
表2.EX = 表3.EX …;
select a.属性名,…c.* from 表1 a leftjoin 表2 b on a.EX = b.EX left join 表3 c on
b.EX = c.EX …;
– 右连接查询
select 表1.属性名,… 表3.* from 表1 right join 表2 on 表1.EX = 表2.EX right join 表3 on
表2.EX = 表3.EX …;
select a.属性名,… c.* from 表1 a right 表2 b on a.EX = b.EX right join 表3 c on
b.EX = c.EX …;

几种连接合在一起使用
select 表1.属性名,… 表3.* from 表1 right join 表2 on 表1.EX = 表2.EX left join 表3 on
表2.EX = 表3.EX (inner)join 表4 on 表3.EX = 表4.EX …;
select a.属性名,… c.* from 表1 a right 表2 b on a.EX = b.EX left join 表3 c on
b.EX = c.EX join 表4 d on c.EX = d.EX …;

子查询:是将一个查询语句嵌套在另外一个查询语句当中。内层查询的结果可以为外层查询提供查询条件
子查询的语法
select 属性列表 from 表1 where 连接方式 (select 属性列表 from 表2 where 刷选条件);

where之后+ 筛选条件/查询条件
内层查询
外层查询

目的:某一张表中的一部分数据,作为另一个表中的查询条件。
(1)内层这张表中所有的数据先找出来。11 2 33 
(2)

连接方式:in 、not in、exists not exists、 比较运算符、 比较运算符和any/all的结合

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值