web前端数据库基础知识
第一篇:深入浅出数据库
第一章 MySQL基础
1.1 数据库概述
数据库是一个存放数据的仓库。这个仓库是按照一定的数据结构来组织、存储数据的,我们可以通过数据库提供的多种方法来管理数据库中的数据。
MySQL是一个关系型数据库管理系统,由MySQLAB公司开发,目前属于Oracle旗下产品。
MySQL拥有体积小、速度快、性能高、使用简单等优点,同时,MySQL开放源代码。使其具有使用门槛低的特点。
1.2 MySQL的安装与配置
安装
启动
1. 命令行启动:mysql -u root -p 回车 输入密码
2. 图形化工具启动 输入密码连接
第二章 MySQL管理
2.1 MySQL数据库管理
2.1.1 初始化数据库
命令行进入mysql目录,然后执行“bin\mysqld --initalize”初始化,等待完成
2.1.2 创建数据库
create database 数据库名;
2.1.3 查看数据库
show databases;
2.1.4 删除数据库
drop database 数据库名;
2.2 MySQL数据表管理
2.2.1 创建数据表
##use 数据库名;
##create table 表名(字段名 类型(长度), 字段名 类型(长度));
##实例:
create table 'student' (
'stuId' varchar(4) not null ;
);
2.2.2 查看数据表
show tables;
desc 数据库名.表名; ##查看数据库 中表的结构
2.2.3 修改数据表
1.修改表名
alter table 旧表名 rename 新表名;
2.修改字段名
alter table 表名 change 旧属性名 新属性名 新数据类型;
3.修改字段类型
alter table 表名 modify 属性名 数据类型;
4.添加字段
table 表名 add 属性名 数据类型;
5.删除字段
alter table 表名 drop 属性名;
2.2.4 删除数据表
drop 表名;
2.3 MySQL用户管理
2.3.1 用户的创建与删除
1.创建用户
create user 'username'@'host' identified by 'password';
例如:
create user 'test2'@'192.168.1.2' identified by '123456';
表示在192.168.1.2地址上的数据库创建用户test2,密码123456
create user 'test3'@'%' identified by '';
表示创建用户test3,其可以在任意远程主机无密码登录服务器
2.用户删除
drop user 'username'@'host';
2.3.2 授予与回收用户权限
- 授予用户权限
grant privileges on dbname.tablename to 'username'@'host';
例如:
grant select, insert on mysql.test to 'test1'@'%';
授予test1在所有登录主机均对mysql数据库中的test表拥有select和insert权限
- 回收用户权限
revoke privileges on dbname.tablename from 'username'@'host';
例如:
revoke selsct on * . * from 'test2'@'localhost';
回收用户test2在本地数据库所有数据库所有表中的select权限
2.3.3 设置与更改用户密码
set password for 'username'@'host' = password('newpassword'); set password for 'test1'@'localhost' = password('654321');
第三章 SQL基本语法
3.1 SQL语法简介
SQL语句划分以下几点:
1. DDL语句:数据定义语句
2. DML语句:数据操纵语句
3. DCL语句:数据控制语句
3.2 MySQL基本数据类型
3.2.1 数值类型
tiny int
small int
medium int
int
big int
float(m,d) //m表示数字总位数 d表示小数点后数字的位数
double(m,d)
3.2.2 字符串类型
1. char 与 varchar
2. binary 与 varbinary //存储二进制字符串
3. text 与 blob //以对象类型保存的文本与二进制
4. enum
5. set //集合对象
3.2.3 日期和时间类型
year yyyy 1901~2155
time HH:MM:SS
date YYYY-MM-DD
datetime YYYY-MM-DD HH:MM:SS
timestamp YYYY-MM-DD HH:MM:SS
3.3 数据插入
insert into 表名 values (值1,值2 ...);
insert into (列1,列2 ...) values (值1,值2 ...);
insert into (列1,列2 ...) values (值1,值2 ...),(值1,值2 ...),(值1,值2 ...); //一次性插入多组值
3.4 数据修改
update 表名 set 列名 = 新值 where 列名 = 某值;
updete 表1 列1,表2 列2 set 表1.列1=新值,表2.列1=新值;
3.5 数据删除
delete 表1, 表2, ... from 表1, 表2, ... where 条件;
3.6 数据查询
3.6.1 常规查询
select 字段 from 表名 where 条件; // * 可以代表全部
3.6.2 条件查询
select 字段 from 表名 where 条件;
条件可以是 between and 或者...in ...
3.6.3 联合查询
select 条件 from 表1
union
select 条件 from 表2;
3.6.4 不重复查询
select distinct 字段 from 表名;
3.6.5 模糊查询
select 字段 from 表名 where 字段 like 值;
1. %的使用
用来匹配0个或者多个字符,可以匹配任意类型和长度的字符,对长度没有限制。
2. “_”的使用
用来匹配任意单个字符,常用来限制表达式的字符长度
3.6.6 排序查询
select 字段 from 表名 where 条件 order by field1 desc/asc, field2 desc/asc, ......; //desc表示降序 asc表示升序
3.6.7 限制查询
select 字段 limit 起始偏移量,行数;
3.6.8 聚合
select 字段 op_name from 表名 where 条件 group by filed1, filed2, ...with rollup having 条件;
select deptono,count(1) from emp group by deptno having count(1)>1; //统计人数大于1的部门
3.6.9 连接
在select语句中,如果from字句引用了 多个表源或视图,则可以使用join关键字指示指定的连接操作应在指定的表源或视图之间执行。
-
内连接
-
左连接和右连接
3.7 事务
3.7.1 事务概念
是一组由SQL语句组成的业务逻辑,
这组sql语句要么全执行,要么全不执行,不存在部分执行的情况。
也就是说,只有事务内的所有SQL语句都成功执行,
整个事务才算成功,否则就算失败。
3.7.2 事务的四大特性
1. 原子性
2. 一致性
3. 隔离性
4. 持久性
3.7.3 事务提交
MySQL默认情况下,SQL语句是“自动提交”的
查看数据库是否开启自动提交
show variables like 'autocommit';
关闭自动提交
set autocommit = 0;
手动提交
commit;
3.7.4 事务回滚
回滚命令 :
rollback;
第四章 索引、分区与视图
4.1 数据库索引
4.1.1 索引概念
在关系型数据库中,索引是对数据库表中一列或者多列的值进行排序并生成的一个单独的、物理的数据结构,存放在硬盘中。而且,这个值对应一个地址指针,指向记录所在的磁盘位置,从而能够快速的定位到记录。
4.1.2 BTree索引与Hash索引
1. Btree索引
BTree索引是建立在n叉树之上的一种索引方式。
2. Hash索引
Hash索引是基于哈希表实现的,只有精确匹配索引列的查询才有效,对于每一行数据,存储引擎都会对所有的索引列计算一个哈希码
4.1.3 索引的建立与使用
create table index1(id int, name varchar(20), sex boolean, index(id)); //插入普通索引
create table index1(id int, name varchar(20), sex boolean, unique index index_id(id asc)); //插入唯一索引
也可以使用alter table在建立表以后添加索引
alter table 'index' add index index_name('column'); //普通索引
alter table 'index' add primary key ('column'); //主键索引
alter table 'index' add unique ('column'); //唯一索引
alter table 'index' add fulltext ('column'); //全文索引
alter table 'index' add index index_name ('column1','index2','index3'); //多列索引
create unique index index_1 on test (name); //添加唯一索引
drop index id on person; //删除id索引
show index from 表名; //查看索引
4.1.4 唯一索引和联合索引
4.1.5 explain语句
1. id
2. select_type
3. table
4. type
5. possible_keys
6. key
7. key_len
8. ref
9. rows
10. Extra
4.2 数据库分区
4.2.1 分区概述
使用以下命令来确定当前的MySQL是否支持分区
show variables like '%partition%'; //5.6版本以下
show plugins; //5.6以上
- 本文标签: 其他
- 本文链接: https://blog.wangqi2020.top/article/10
- 版权声明: 本文由王祁原创发布,转载请遵循《署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)》许可协议授权