数据库基础

数据库是数据的汇集,它以一定的组织形式存于存储介质上
DBMS是管理数据库的系统软件,它实现数据库系统的各种功
能。是数据库系统的核心。
DBA:负责数据库的规划、设计、协调、维护和管理等工作
应用程序指以数据库为基础的应用程序。
数据库系统的架构可分为:
单机机构
大型主机/终端架构
主从式架构
分散式架构

2 关系型数据库
关系型数据库就是二维表一样的数据库
例图
这里写图片描述
行row:表中的每一行,也称为记录
列column:表中的每一列,称为属性,字段
主键(Primary key):用于惟一确定一个记录的字段
3 联系
联系是数据之间的关联集合,是客观存在的应用语义链 。
实体内部的联系:指组成实体的各属性之间的联系。如职工
实体中,职工号和部门经理号之间有一种关联关系
实体之间的联系:指不同实体之间联系。例学生选课实体和
学生基本信息实体之间
实体之间的联系用菱形框表示

联系的类型
可分为 (1:1)
(1:n)
( m:n )
4
数据三要素
数据三要素包括数据结构,数据的操作,数据的约束条件
数据结构包括两类,一类是与数据类型、内容、性质有关的对象
包括两类,一类是与数据类型、内容、性质有关的对象,比如关系模型中的域、属性和关系等;另一类是与数据之间联系有关的对象,它从数据组织层表达数据记录与字段的结构
数据的操作:
数据提取:在数据集合中提取感兴趣的内容。(SELECT)
数据更新:变更数据库中的数据。(INSERT、DELETE、UPDATE)

5 数据库的正规化分析
设计数据库时需要遵循一些范式,常用的范式有3种
第二范式需要第一范式作为条件
第三范式需要第二范式作为条件
第一范式:每一列都是不可分割的基本数据项,同一列中不能有多个值
第二范式:要求表中的每一行必须被唯一地区分,使用primary key 或者UNIQUE KEY 进行区分
第三范式要求一个数据库表中不包含已在其它表中已包含的非主关键字信息
,非PK的字段间不能有从属关系

数据库的安装方法包含两种
第一种 通过yum源安装
第二种则是二进制安装
首先下载mariadb-10.2.7-linux-x86_64.tar.gz

rpm -qa “mariadb*” 首先需要先判断一下本机是否安装了mariadb如果有则删除了它
yum remove mariadb*

tar xvf mariadb-10.2.7-linux-x86_64.tar.gz -C /usr/local/ 解压指定路径
cd /usr/local/
ln -s mariadb-10.2.7-linux-x86_64/ mysql

useradd -r mysql -s /sbin/nologin -d /app/mysqldb -m 创建用户
cd mysql/
scripts/mysql_install_db –datadir=/app/mysqldb –user=mysql 创建数据库文件

mkdir /etc/mysql
cp support-files/my-huge.cnf /etc/mysql/my.cnf 准备配置文件 配置文件的优先级如下 (/etc/my.cnf –> /etc/mysql/my.cnf –> –default-extra- file=/PATH/TO/CONF_FILE –~/.my.cnf)
后面的文件就会覆盖前面的
vim /etc/mysql/my.cnf
[mysqld]加三行
datadir =/app/mysqldb 指定数据库目录
innodb_file_per_table = ON
skip_name_resolve = ON 禁止主机解析

cp support-files/mysql.server /etc/init.d/mysqld 复制服务文件
chkconfig –add mysqld
chkconfig –list mysqld

vim /etc/profile.d/app.sh 定义变量
export PATH=/usr/local/mysql/bin:$PATH

. /etc/profile.d/app.sh

touch /var/log/mysql.log 为数据库创建日志文件
chown mysql /var/log/mysql.log 修改所有者使得mysql用户能够操作该文件

service mysqld start
为安全着想需要执行以下安全脚本 为数据库设置密码
mysql_secure_installation

之后就可以进入数据库了
mysql -uroot -p123456 -u 为指定登陆账号 -p 位密码
数据库的基础命令
1 show
show databases; 列出数据库列表
这里写图片描述

同理show tables; 列出有哪些表

2 use blog; 进入blog这个库
3 select * from student; 从表student 中读取所有内容
这里写图片描述
select 命令也可以指定显示某些列
例如
select id from student; 显示id 列

desc student;
这里写图片描述

查看student 表的结构
创建数据库命令:CREATE DATABASE|SCHEMA ‘DB_NAME’;
例如 创建blog库 create database blog;
删除数据库
DROP DATABASE|SCHEMA ‘DB_NAME’;
例如
drop database blog; 删除blog数据库
同理的建立表 和删除表也是用create和drop
例如 create table student (id int unsigned not null primary key, name varchar(20) not null); 创建student表
drop table student; 删除表

insert 命令往表中插入值
INSERT [INTO] tbl_name [(col_name,…)] {VALUES | VALUE} (val1,…),(…),…
例如 INSERT INTO student VALUES(1,’tom’),(2,’alice’);
或者 insert into student(id,name)values(‘1’,’luo’),(‘2’,’TOM’);

这里写图片描述

修改命令 alter
ALTER TABLE student RENAME s1; 把student表更名为 s1

ALTER TABLE s1 ADD phone varchar(11) AFTER name; 在名字之后加一 电话列

这里写图片描述
ALTER TABLE s1 MODIFY phone int;
ALTER TABLE s1 CHANGE COLUMN phone mobile char(11); 修改phone 列的名字为mobile
这里写图片描述
ALTER TABLE s1 DROP COLUMN mobile; 把表s1 上的mobile列删除
这里写图片描述

索引是特殊数据结构;定义在查找时作为查找条件的字段
优点:提高查询速度
缺点:占用额外空间,影响插入速度
创建索引必须要有索引名称
创建索引:
CREATE INDEX index_name ON tbl_name
(index_col_name,…);
help CREATE INDEX
删除索引:
DROP INDEX index_name ON tbl_name;
查看索引:
SHOW INDEXES FROM [db_name.]tbl_name;

用户账号
用户账号:’user’@’host’
user: 用户名
host: 允许用户通过哪些主机远程连接mysqld服务
IP、网络地址、主机名、通配符(%和_)

user和host 合在一起才是一个完整的用户账号
创建用户:
CREATE USER ‘username’@’host’ [IDENTIFIED BY ‘password’];
例如 create user ‘user1’@’192.168.%.%’ identified by ‘user1’;
查看当前用户:
SELECT user();
查看用户:
SELECT User,Host,Password FROM user; user表位于mysql这个库中
这里写图片描述

DROP USER ‘username’@’host’; 删除用户
例子 drop user ‘user1’@’192.168.%.%’;

grant 命令授予权限
例如
grant all on blog.* to ‘user3’@’192.168.%.%’ identified by ‘11111’; 授予用户user3对blog这个库具有所有权限
GRANT SELECT,DELETE on testdb.* TO ‘testuser’@’%’IDENTIFIED BY ‘testpass‘; 授予testuser 对test.db ,select 和delecte 权限

.: 所有库的所表
db_name.*: 指定库的所有表
db_name.tb_name: 指定库的指定表

回收授权:
REVOKE priv_type, … ON db_name.tb_name FROM ‘user’@’host

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值