数据库


一、概念


1.什么本地化 什么是持久化
持久化是将程序数据在持久状态和瞬时状态间转换的机制。通俗的讲,就是瞬时数据(比如内存中的数据,是不能永久保存的)持久化为持久数据(比如持久化至数据库中,能够长久保存)。


2.数据库种类
MySQL 中小型项目的数据库 开源 免费使用 项目上线 进行收费 关系型数据库
Oracle 安全性高 可移植性比较差 支持PLSQL 银行项目必用oracle 关系型数据库
SQLServer 中小型项目数据库 各大院校中使用较多 企业中使用的比较少 关系型数据库
DB2 大型项目使用 价格昂贵
PostgreSQL 国内的项目使用较少
Redis
mongoDB


3.关系型数据库
关系型数据库这一系列的行和列被称为表 采用关系模型来组织数据库的数据 mysql oracle sqlserver
特点:8个


4.非关系型数据库
Nosql 不仅仅sql
Redis ---- key和value形式进行存储 存储在内存中 缓存
mongoDB ---- json的形式或者xml文件的形式 存储在硬盘中的


5.Mysql
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。


6.mysql的安装
步骤略 (注意编码字符集的选择)
7.mysql的卸载
7.1 先卸载软件
7.2 需要卸载注册表
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\ControlSet002\services\eventlog\Application\MySQL
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MySQL
7.3 删除 C:\ProgramData\MySQL
7.4 重启计算机


  1. mysql服务
进入服务指令  services.msc
启动服务
net start mysql
关闭服务
net stop mysql
清屏
cls
cd file  进入某个文件夹
cd..  回退上一个文件夹
dir   遍历目录

9.mysql的环境配置
默认在path的路径中引入mysql的安装目录下的bin目录
目录

bin目录下都是mysql的指令
Include中都是c++语言的一些插件
my.ini 是mysql的配置文件 要去修改my.ini 服务一定要重新启动才可以生效。

10.Mysql 指令

从黑窗口下进行对mysql的登录
登录指令 mysql -uroot -p -P3306 -h127.0.0.1

Mysql的退出指令
mysql:exit
mysql:quit

显示当前服务器版本
SELECT VERSION();

显示当前的日期
SELECT NOW();
显示当前用户
SELECT USER();

11.数据库操作
查看数据库 show databases;
创建数据库 create database t1;
CREATE DATABASE IF NOT EXISTS t1;  创建数据库 使用的是create关键字

查看警报信息
SHOW WARNINGS

显示数据库的编码方式:
SHOW CREATE DATABASE t1;

修改数据库使用的是ALTER 关键字
修改数据库的编码字符集
ALTER DATABASE t2 CHARACTER SET = utf8;
删除数据库 DROP DATABASE t2;

以上三种操作方式的语言
DDL数据定义语言(CREATE ALTER DROP)
12 数据类型
数字型 常用类型int

浮点型 double常用

时间类型
常用的
date 1000年1月1日—9999年12月31日
datatime 1000年1月1日00:00:00—9999年12月31日23:59:59

时间里面常用的函数
取年份 year()
取月份 month()
取日期 date()
取小时 hour()
取分钟minute()
取秒数second()

字符型
常用varchar
常用 text ----clob

二进制数据流 图片 音频 视频 对大小有限制 blob

12.数据库表的操作
行---- 记录
列---- 字段
进入到某一个库中  use t1
查看库中的表 show tables
如何证明我们打开了test数据库?
SELECT DATABASE();

创建表  使用create关键字 
CREATE  TABLE tb1(
id int,
Username varchar(20),
Salary float(18,2));

查看表结构
desc tb1;
show columns from tb1

表示该值不能为负数  unsigned

向表中插入记录 Insert
insert into tb1(id,Username,Salary) values(1,’zhangsanfeng’,9000.00);
insert into tb1 values(3,’wangwufeng’,3000.00);
insert into tb1 (Username,Salary)values(’wangwufeng’,3000.00);
注意字段名称要和传入的值要匹配上


查询表中的记录
select * from tb1
注意:* 表示所有列
select  id,Username,Salary from tb1;

删除表中的全部记录 delete from tb1
删除表中的某一条记录  delete from tb1 where id=3;
删除id为null值的一条记录 delete from tb1 where id is null;
is not null


修改记录 update
update tb1 set Salary = Salary -1000.00 where id = 1;

以上 增删改查的操作都被叫做DML
DML数据操作语言(SELECT INSERT DELETE UPDATE)

13.数据库约束
13.1什么叫约束
用于修饰对某些列的一些特殊要求
13.2种类
非空约束 not null 用于修饰一个列的值不能为null
主键约束 primary key 每张表中都会有一个主键 用于标识记录|对象的唯一性
唯一约束 UNIQUE KEY 用于修饰某一列的值具有唯一性
默认约束 default 列的值具有默认值
外键约束 Foreign key 前提至少要有两张表以上 两张表通过外键进行关联 使两张表具有一定的关系性 (一对多 多对一 多对多)关系

13.3非空约束
Not null 和 null

create table tb3(
id int primary key ,
username varchar(20) not null,
age int unsigned );

insert into tb3 )values (1,null,20);
Username设置不能为null 所以该记录无法插入进去

13.4primary key 主键约束
表示记录的唯一性 一般以id为主键居多 主键字段不能为null 默认为null值 如果为null值则无法进行插入记录

create table tb5(
id int AUTO_INCREMENT primary key,
username varchar(20) not null,
age int unsigned );

AUTO_INCREMENT 表示的意思是字段自动递增

AUTO_INCREMENT字段必须定义为主键,而主键不一定被定义成AUTO_INCREMENT

13.5唯一约束
唯一约束,可以保证记录的唯一性
唯一约束的字段可以为NULL值
每张数据表可以存在多个唯一约束

create table tb6(
id int AUTO_INCREMENT primary key,
username varchar(20) UNIQUE KEY,
age int unsigned );
13.6默认约束 default
让某一列具有默认的值

13.7外键约束 FOREIGN KEY
用于描述表和表之间的关系
User 表 用户 roleid
Role 表 角色 id
Role_menu menuid roleid
Menu 表 菜单 id
Funs 表 功能 id menuid

一个用户可以对应一个角色
一个角色对应多个用户
用户表对应角色表 多对一的关系
角色表对应用户表 一对多的关系

Roleid这个字段以外键的形式作为User表中字段 关联到 Role表中id字段
主要用于处理 多对一的这种关系

角色表和菜单表之间的关系是什么关系

多对多的关系 处理方式 :
需要建立中间表
Role_menu roleid menuid 均为联合主键来使用,每一个字段均为外键关联相应role表和menu表

Menu表和fun表之间是什么关系

一个fun对应一个菜单
一个Menu对应多个fun

外键的必要条件
1父表和子表必须使用相同的存储引擎,而且禁止使用临时表。
2.数据表的存储引擎只能为InnoDB。
3.外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号位必须相同;而字符的长度则可以不同。
4.外键列和参照列必须创建索引。如果外键列不存在索引的话,参照列无索引时MySQL将自动创建索引。
子表----具有外键列的表,
父表----子表参照的表称为父表。
外键列----曾经加入FOREIGN KEY关键词的那一列
参照列----外键列参照的那一列。

多表查询 两张表 表与表之间用逗号间隔
select * from user,role where user.roleid = role.roleid
等值连接

增加sql的查询速度 可以使用索引 需要给roleid这个字段添加索引

create table school(
scid int primary key auto_increment,
scname varchar(20) not null,
sctel varchar(20));

create table class(
cid int primary key auto_increment,
cname varchar(20) not null,
scid int,
foreign key(scid) references school(scid));

外键约束参照
1.CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行
2.SET NULL :从父表删除或更新行,并设置字标中的外键列为null。如果使用该选项,必须保证子表没有指定 NOT NULL
3.RESTRICT:拒绝对表的删除或更新操作。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值