数据库知识点
1. 数据库服务概念介绍
数据库: 主要用于对大量数据信息可以进行有效的分析处理
数据库服务器: MySQL Maridb
数据库: 存储数据分类 用户信息--用户信息库 商品信息---商品 交易信息---支付业务
数据表: 数据表信息
数据字段: 存储具体内容信息,存储信息规范
数据行: 真实每一条合法的数据信息
2. 数据库服务环境安装部署
windows系统中部署数据库: mysql
https://dev.mysql.com/downloads/installer/
PHPstudy 程序包 --- 包含了数据库服务 --- 进行启动开启
方式一: 连接数据库(命令行操作管理)
连接数据库服务: cmd ---> 切换到PHPstudy数据库程序目录中 ---> 连接数据库
mysql.exe -uroot -proot
d:
cd D:\phpstudy\phpstudy_pro\Extensions\MySQL5.7.26\bin
mysql.exe -uroot -proot
方式二: 连接数据库(图形界面操作)
安装连接数据库程序软件: Navicat 安装部署
实现远程连接数据库:
本地建立连接: localhost == 127.0.0.1
Linux系统中部署数据库: mysql
https://dev.mysql.com/downloads/mysql/
准备Linux环境: vmware虚拟软件 --- 加载虚拟主机 --- 启动
部署数据库服务: mariadb --- yum install -y mariadb(操作数据库命令) mariadb-server
启动数据库服务: systemctl startmariadb
方式一: 连接数据库(命令行)
虚拟主机环境 --- mysql -uroot
3. 数据库操作管理知识
1) 操作数据库相关SQL命令
· 创建数据库信息:
语句格式: CREATE DATABASE 数据库名称;
操作命令: CREATE DATABASE PHP;
· 查看数据库信息:
语句格式: show databases;
· 选中指定数据库信息:
语句格式: use 数据库名称;
操作命令: use php;
· 查看库中具有表信息:
语句格式: show tables;
· 删除指定数据库信息:
语句格式: drop database 数据库名称;
操作命令: drop database php;
2) 操作数据表相关SQL命令
· 创建表信息:
语句格式: CREATE TABLE 表名(字段名1 字段类型,字段名2 ....字段名n 字段类型n);
操作命令:
create table rap(name varchar(10),sex char(5),age int(5),hobby char(20));
· 查看表中字段信息:
语句格式: desc 表名称
操作命令: desc rap;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name | varchar(10) | YES | | NULL | |
| sex | char(5) | YES | | NULL | |
| age | int(5) | YES | | NULL | |
| hobby | char(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
· 查看表信息创建方法:
语句格式: SHOW CREATE TABLE 表名称;
操作命令: SHOW CREATE TABLE xueyuan\G;
*************************** 1. row ***************************
Table: rap
Create Table: CREATE TABLE `rap` (
`name` varchar(10) COLLATE utf8_unicode_ci DEFAULT NULL,
`sex` char(5) COLLATE utf8_unicode_ci DEFAULT NULL,
`age` int(5) DEFAULT NULL,
`hobby` char(20) COLLATE utf8_unicode_ci DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
1 row in set (0.00 sec)
· 删除表信息:
语句格式: drop table 名名称;
操作命令: drop table rap;
· 创建表设置引擎信息和默认字符编码信息:
mysql> create table test(
name varchar(15),
sex char(5),
age int(5),
xueli char(10),
jingyan bool,
xinzi float(10,2)
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
3) 操作数据字段相关SQL命令
· 修改字段数据类型信息
语句格式: alter table 表名 modify 字段名 修改后的数据类型;
操作命令: alter table rap modify sex varchar(10);
· 增加表中字段信息:
语句格式: alter table 表名 add column 字段名 字段类型;
操作命令: alter table test add column oldboy date;
· 增加表中字段信息: 可以指定控制字段添加的位置
语句格式: alter table 表名 add 字段名 bool after 在哪个字段后添加;
操作命令: alter table test add oldgirl bool after age;
增加表中字段信息: 将指定字段插入到第一列
语句格式: alter table 表名 add 字段 类型 first;
操作命令: alter table test add oldbaby char first;
· 删除表中字段信息:
语句格式: alter table 表名 drop column 字段名称;
操作命令: alter table test drop column oldbaby;
· 修改字段名称信息:
语句格式: alter table 表名 change 原字段名称 修改后字段名 字段类型;
操作命令: alter table test change xueli edu varchar(15);
· 修改已有字段顺序:
语句格式:
alter table 表名 modify 字段名 类型 first; --- 直接将指定字段移到第一列
alter table test modify 字段名 类型 after 字段名; --- 将字段移动到指定列之后
· 修改数据库中表的名称:
语句格式: alter table 旧表名 rename 新的表名;
操作命令: alter table test rename new_test;
4) 数据库索引操作
索引概念介绍: 可以提升查找指定数据检索效率
索引分类介绍: 普通索引 唯一索引(不能有字段信息重复) 主键索引(字段信息不能为空)
索引创建方法:
普通索引创建: MUL
语法格式: alter table 表 add index(字段);
操作命令: alter table xueyuan add index(name);
唯一索引创建: UNI
语法格式: alter table 表 add UNIQUE(字段)
操作命令: alter table xueyuan add UNIQUE(xueli);
主键索引创建: PRI
语法格式: alter table 表 add PRIMARY KEY(字段)
操作命令: alter table xueyuan add primary key(jingyan);
删除普通索引: alter table xueyuan drop index name;
删除唯一索引: alter table xueyuan drop index xueli;
删除主键索引: alter table xueyuan drop primary key;
5) 增删改查插入数据信息记录
· 增加数据信息:
方式一: 添加数据信息
语法格式: insert into 表名 value(字段01数据,字段02数据,字段03数据,..,字段n数据);
操作命令: insert into xueyuan value("张三","男",23,"本科",0,9000);
方式二: 添加数据信息
语法格式: insert into 表(字段01,字段02,字段03) value(字段数据01,字段数据02,字段数据03);
操作命令: insert into xueyuan(name,sex,jingyan) value("李四","女",1);
· 查看数据信息:
语法格式: select 字段信息/* from 表信息 where 查询字段条件
操作命令: select name,sex,age from xueyuan where age=23 and sex="女" or sex="男";
匹配条件符号信息 >、<、>=、<=、!=
匹配条件逻辑符号 and or
取消重复信息:
语法格式: select distinct 字段 from 表;
6) 表数据信息排序功能
准备环境:
create table chengjibiao(
id int(5),
name char(10),
chengji int(5)
);
insert into chengjibiao value("01","张三",90);
insert into chengjibiao value("02","赵四",80);
insert into chengjibiao value("03","王五",95);
insert into chengjibiao value("04","周明",75);
insert into chengjibiao value("05","高亮",100);
语法格式: select 字段信息/* from 表名称 order by 排序列信息 desc降序/asc升序;
操作命令: select id,name,chengji from chengjibiao order by chengji desc/asc;
7) 限制数据库表输出信息行数
语法格式: select 字段信息/* from 表信息 limit 限制显示行数;
操作命令: select id,name,chengji from chengjibiao limit 3;
PS: 以上SQL查询语句信息字段可以进行整合使用,根据实际需求
8) 数据库数据信息运算方法
sum 求和
count 统计总数
max 最大值
min 最小值
avg 平均值
count统计总数:
语法格式: select count(字段信息) from 表名;
操作命令: select count(chengji) from chengjibiao;
操作命令: select count(chengji) as "班级学院数" from chengjibiao; --- as 设置别名功能
avg平均数值:
语法格式: select avg(字段信息) from 表名;
操作命令: select avg(chengji) from chengjibiao;
sum求和运算:
语法格式: select sum(字段信息) from 表名;
操作命令: select sum(chengji) from chengjibiao;
max取最大值:
语法格式: select max(字段信息) from 表名;
操作命令: select max(chengji) from chengjibiao;
min取最小值:
语法格式: select min(字段信息) from 表名;
操作命令: select min(chengji) from chengjibiao;
9) 修改表中数据信息
语法格式: update 表名 set 修改字段=修改后信息,字段2=值2,字段n=值n where 修改哪一行信息
语法操作: update user set username="李四" where uid=4;
PS: 只要修改表中信息,一定要加上where;
10) 删除数据信息
语法格式: delete from 表信息 where 删除条件;
操作命令: delete from user where username="李四";
11) 清空表信息:
语法格式: TRUNCATE TABLE 表名;
操作命令: TRUNCATE TABLE user;
4. mysql多表查询(联表查询)
准备环境:
CREATE TABLE IF NOT EXISTS user (
uid int(11) NOT NULL,
username varchar(30) NOT NULL,
password char(32) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS order_goods (
oid int(11) NOT NULL,
uid int(11) NOT NULL,
name varchar(50) NOT NULL,
buytime int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
user表添加数据信息:
INSERT INTO user(uid,username,password) values('1','jintian','123456');
INSERT INTO user(uid,username,password) values('2','zhangsha','1234f56');
INSERT INTO user(uid,username,password) values('3','wangwu','1234fs56');
INSERT INTO user(uid,username,password) values('4','lisi','123s456');
INSERT INTO user(uid,username,password) values('5','xiaotian','123d456');
INSERT INTO user(uid,username,password) values('6','wangfei','123f456');
INSERT INTO user(uid,username,password) values('7','oldboy','123w456');
INSERT INTO user(uid,username,password) values('8','oldboyww','123w45ee6');
联表查询语句: select u,第一张表字段信息,o.第二张表字段信息 from 第一张表 标识u,第二张表 标识o where u.字段 = o.字段; 两张表的字段相同
联表查询操作: select u.uid ,u.username as username ,o.oid,o.uid,o.name as shopname from user u,order_goods o where u.uid = o.uid;
5. 数据库权限操作说明:
添加权限信息语法:
grant 权限 on 库.表 to '用户'@'主机' identified by '密码';
白名单 允许哪些主机或者网段可以和数据库服务建立连接
手机微信: 黑名单 禁止通讯连接
手机安全: 白名单 特定信息允许
grant all on php.* to 'oldboy'@'10.0.0.%' identified by 'oldboy123';
作用:
1) 可以让指定用户拥有相应权限来管理数据库 root 皇帝--数据库
2) 可以让远程主机连接数据库进行管理
回收/删除权限:
revoke 权限 on 库.表 from '用户'@'主机';
revoke select,insert on test.* to 'oldboy'@'localhost' identified by '4311';
revoke update,delete on php.user to 'oldgirl'@'192.168.1.%';