目录
一、数据库的基本概念
1. 使用数据库的必要性
2. 数据(Data)
3. 表
4. 数据库
5. 数据库管理系统(DBMS)
6. 数据库管理系统DBMS的优点
7. 使用数据库的必要性总结
8. 访问数据库的流程
二、数据库发展及基本功能
1. 发展阶段
1.1 萌芽阶段:文件系统
1.2 初级阶段:第一代数据库
1.3 中级阶段:第二代数据库
1.4 高级阶段:新一代数据库
2. 基本功能
3. 数据库系统的架构
三、MySQL数据库介绍
1. MySQL数据库是什么?
2. 特点
3. 版本演变
4. 组成
4.1 客户端程序
4.2 服务端程序
四、编译安装mysql数据库
五、mysql 数据库基本信息
1. SQL分类
2. SQL语言规范
3. 数据库对象和命名
4.SQL 语句分类
六、MYSQL的基本操作
1. 数据库开启、关闭、状态
2. 设置mysql密码
3. 登录、登出mysql
4. 查看当前数据库结构
5.查看数据库中包含的表
6. 查看表的结构
5. 查看mysql版本
6. 建立新的数据库
7. 删除指定的数据库
8. 建立表格
9.删除指定数据库
七、管理表中的数据记录
1. 向数据表中插入新的数据记录(insert into)
2. 查询数据表内数据记录(select)
3. 修改、更新数据表中的数据记录(update)
4 在数据表中删除指定的数据记录
八、修改表名和表结构
1. 修改表名(rename)
2.扩展表结构,增加字段(add)
3. 修改字段(列)名,添加唯一键(change)
4. 删除字段(drop)
一、数据库的基本概念
内核作用:调用硬盘资源
1. 使用数据库的必要性
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。
2. 数据(Data)
描述事物的符号记录,包括数字,文字、图形、图像、声音、档案记录等,以“记录”形式按统一的格式进行存储。
3. 表
将不同的记录组织在一起,用来存储具体数据。
4. 数据库
表的集合,是存储数据的仓库。以一定的组合方式存储的相互有关数据集合。
5. 数据库管理系统(DBMS)
数据库管理系统是实现对数据库资源有效组织、 管理和存取的系统软件。
功能:
- 数据库的建立和维护功能:包括建立数据库的结构和数据的录入与转换、数据库的 转储与恢复、数据库的重组与性能监视等功能。
- 数据定义功能:包括定义全局数据结构、局部逻辑数据结构、存储结构、保密模式 及信息格式等功能。保证存储在数据库中的数据正确、有效和相容,以防止不合语 义的错误数据被输入或输出。
- 数据操纵功能:包括数据查询统计和数据更新两个方面。
- 数据库的运行管理功能:这是数据库管理系统的核心部分,包括并发控制、存取控 制、数据库内部维护等功能。
- 通信功能:DBMS 与其他软件系统之间的通信,如 Access 能与其他 Office 组件进行 数据交换。
6. 数据库管理系统DBMS的优点
- 相互关联的数据的集合
- 较少的数据冗余
- 程序与数据相互独立
- 保证数据的安全、可靠
- 最大限度地保证数据的正确性
- 数据可以并发使用并能同时保证一致性
7. 使用数据库的必要性总结
使用数据库可以高效且条理分明地存储数据,使人们能够更加迅速、方便地管理数据。 数据库具有以下特点。
- 可以结构化存储大量的数据信息,方便用户进行有效的检索和访问。
- 可以有效地保持数据信息的一致性、完整性,降低数据冗余。
- 可以满足应用的共享和安全方面的要求。
- 数据库技术是计算机科学的核心技术之一,具有完备的理论基础。对数据库基本概念的掌握,将有助于对数据库的理解。
8. 访问数据库的流程
过程:
首先应用程序把查询SQL语句发给服务器端执行。其次服务器解析请求的SQL语句。最后语句执行。
注意:1.确保SQL语法正确;2.确保SQL语义上的正确性即对象是否存在;3.数据库用户是否具有相应的访问权限。
二、数据库发展及基本功能
1. 发展阶段
1.1 萌芽阶段:文件系统
使用磁盘文件来存储数据
1.2 初级阶段:第一代数据库
出现了网状模型、层次模型的数据库
- 自20世纪60年代起,第一代数据库系统问世
- 是层次模型与网状模型的数据库系统
- 为统一管理和共享数据提供了有力的支撑
1.3 中级阶段:第二代数据库
关系型数据库和结构化查询语言
- 20世纪70年代初,第二代数据库——关系数据库开始出现
- 20世纪80年代初,IBM公司的关系数据库系统DB2问世,开始逐步取代层次与网状模型的数据库,成为行业主流
- 到目前为止,关系数据库系统仍占领数据库应用的主要地位
1.4 高级阶段:新一代数据库
“关系-对象”型数据库
- 自20世纪80年代开始,适应不同领域的新型数据库系统不断涌现
- 面向对象的数据库系统,实用性强、适应面广
- 20世纪90年代后期,形成了多种数据库系统共同支撑应用的局面
- 一些新的元素被添加进主流数据库系统中。例如,Oracle支持的“关系-对象”数据库模型
2. 基本功能
- 数据定义
- 数据处理
- 数据安全
- 数据备份
3. 数据库系统的架构
- 单机架构
- 大型主机/终端架构
- 主从式架构(C/S)
- 分布式架构
三、MySQL数据库介绍
1. MySQL数据库是什么?
一款深受欢迎的开源关系型数据库,Oracle旗下的产品,遵守GPL协议,可以免费使用与修改
2. 特点
- 性能卓越、服务稳定
- 开源、无版权限制、成本低
- 多线程、多用户
- 基于C/S(客户端/服务器)架构
- 安全可靠
3. 版本演变
MySQL:5.1 --> 5.5 --> 5.6 --> 5.7 --->8.0
第一阵营:5.0-5.1阵营,可说是早期产品的延续
第二阵营:5.4-5.7阵营,整合了MySQL AB公司、社区和第三方公司开发的存储引擎,从而提高性能
第三阵营:6.0-7.1阵营,就是MySQL Cluster版本, 为适应新时代对数据库的集群需求而开发
MariaDB:5.1 --> 5.5 --> 10.0--> 10.1 --> 10.2 --> 10.3 --> 10.4 --> 10.5
mysql -V 查看MySQL版本
4. 组成
4.1 客户端程序
- mysql: 交互式的CLI工具
- mysqladmin:基于mysql协议管理mysqld
- mysqlimport:数据导入工具
- MyISAM存储引擎的管理工具:
- myisamchk:检查MyISAM库
- myisampack:打包MyISAM表,只读
4.2 服务端程序
- mysqld_safe
- mysqld
- mysqld_multi 多实例 ,示例:mysqld_multi
四、编译安装mysql数据库
将mysql的压缩包放到opt中
mysql8.0.33安装:
安装过程:
tar -xf mysql-8.0.33-el7-x86_64.tar.gz
mv mysql-8.0.33-el7-x86_64 mysql
mv mysql /usr/local/
#创建程序用户管理
useradd -s /sbin/nologin mysql
#修改mysql目录和配置文件的权限
chown -R mysql:mysql /usr/local/mysql/
chown mysql:mysql /etc/my.cnf
#修改配置文件
vim /etc/my.cnf
[client]
port = 3306
socket=/usr/local/mysql/mysql.sock
[mysqld]
user = mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
port = 3306
character-set-server=utf8
pid-file = /usr/local/mysql/mysqld.pid
socket=/usr/local/mysql/mysql.sock
bind-address = 0.0.0.0
skip-name-resolve
max_connections=2048
default-storage-engine=INNODB
max_allowed_packet=16M
server-id = 1
sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
#设置环境变量,申明/宣告mysql命令便于系统识别
echo "PATH=$PATH:/usr/local/mysql/bin" >> /etc/profile
source /etc/profile
#初始化数据库:
cd /usr/local/mysql/bin/
./mysqld \
--initialize-insecure \
--user=mysql \
--basedir=/usr/local/mysql \
--datadir=/usr/local/mysql/data
#设置系统识别,进行操作:
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
chmod +x /etc/init.d/mysqld
systemctl daemon-reload
systemctl restart mysqld
#初始化数据库密码:
mysqladmin -u root -p password "123456"
直接回车即可
#进入数据库:
mysql -u root -p123456
#创建用户并设置密码:
mysql> CREATE USER 'root'@'%' IDENTIFIED BY '123456';
Query OK, 0 rows affected (0.01 sec)
#赋予远程连接的权限
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%';
Query OK, 0 rows affected (0.00 sec)
#刷新生效
mysql> flush privileges;
Query OK, 0 rows affected (0.01 sec)
#修改加密方式,可以进行远程连接
ALTER USER 'root'@'%' IDENTIFIED WITH mysql_native_password BY '123456';
五、mysql 数据库基本信息
1. SQL分类
- 数据库:database
- 表:table,行:row 列:column
- 索引:index
- 视图:view
- 存储过程:procedure
- 存储函数:function
- 触发器:trigger
- 事件调度器:event scheduler,任务计划
- 用户:user
- 权限:privilege
2. SQL语言规范
- 在数据库系统中,SQL 语句不区分大小写,建议用大写
- SQL语句可单行或多行书写,默认以 " ; " 结尾
- 关键词不能跨多行或简写
- 用空格和TAB 缩进来提高语句的可读性
- 子句通常位于独立行,便于编辑,提高可读性
3. 数据库对象和命名
数据库的组件(对象):
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则:
必须以字母开头,后续可以包括字母,数字和三个特殊字符(# _ $)
不要使用MySQL的保留字,如tabble select show databases
4.SQL 语句分类
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
语句 | 代表的意思 |
---|---|
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
DML | 数据操纵语言,用于对表中的数据进行管理 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
六、MYSQL的基本操作
1. 数据库开启、关闭、状态
systemctl enable mysqld #设置开机自启
systemctl start mysqld #开启
systemctl stop mysqld #关闭
systemctl start mysqld #开启
systemctl status mysqld #查看状态
ss -anpt | grep 3306 #过滤端口验证是否开启
2. 设置mysql密码
#修改密码为123123 开始初始密码为空 回车即可
mysqladmin -u root -p password "设置的密码"
3. 登录、登出mysql
#登录
mysql -u root -p
#授予root用户可以在所有终端远程登录,使用的密码是123123,并对所有数据库和所有表有操作权限
grant all privileges on *.* to 'root'@'%' identified by '123123';
#退出
quit
4. 查看当前数据库结构
show databases; #大小写不区分,分号“;”表示结束
#结束时一定要用 【 ;】
5.查看数据库中包含的表
方法一:在库中查看表
use mysql; #use 数据库名
show tables; #查看表
法二 :在库外查看表
show tables from mysql; #show tables from 数据库名
6. 查看表的结构
use 数据库名;
describe [数据库名.]表名;
可缩写成:desc 表名;
5. 查看mysql版本
mysql -V
6. 建立新的数据库
#建立数据库
create database 数据库名;
7. 删除指定的数据库
drop database 数据库名;
8. 建立表格
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型[,...][,primary key (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例如:
use chengnan;
create table students (id smallint unsigned primary key auto_increment, name varchar(10), age tinyint unsigned,gender enum('M','F') default 'M' );
#unsigned:取消负数
primary key:主键
auto_increment: 自增长
enum('M','F'):多选
default 'M':默认值为 M
9.删除指定数据库
方法一:库内删除
use 数据库名;
drop table 数据表名;
方法二:库外删除
#如不用USE进入库中,则需加上数据库名
drop table 数据库名.数据表名;
七、管理表中的数据记录
1. 向数据表中插入新的数据记录(insert into)
insert into 表名(字段1,字段2[,...]) values(字段1的值,字段2的值,...);
例如:
insert into students(id,name,age,passwd) values(2,'lisi',20,'112233' );
insert into students(id,name,age,passwd) values(2,'jiami',22,PASSWORD('123456'));
#PASSWORD('112233'):查询数据记录时,密码字串以加密形式显示;若不使用PASSWORD(),查询时以明文显示
select * from students;
提前新建数据表(注意长度设置)
use mysql;
create table students (id smallint unsigned primary key auto_increment, name varchar(10),age tinyint unsigned, passwd varchar(48));
2. 查询数据表内数据记录(select)
select 字段名1,字段名2[,...] from 表名 [where 条件表达式];
基本操作:
1. #查询全部数据
select * from 数据表名;
例如:
select * from students;
2. #查询指定数据
例如:
select id,name from students where id=2;
更多操作:
3. #以列表方式竖向显示
select * from 数据表名\G;
例如:
select * from students\G;
4. #只显示头2行
select * from 数据表名 limit 2;
例如:
select * from students limit 2;
5. #显示第3行后的2行
select * from 数据表名 limit 3,2;
例如:
select * from students limit 3,2;
3. 修改、更新数据表中的数据记录(update)
update 表名 set 字段名1=字段值1[,字段名2=字段值2] [where 条件表达式];
例如:
update students set age=19 where id=4;
update students set age=20,passwd='111111' where id=2; #同时修改age和passwd
4 在数据表中删除指定的数据记录
delete from 表名 [where 条件表达式];
例如:
delete from students where id=2;
!!!!注意id并不会顶上去!!!!
八、修改表名和表结构
1. 修改表名(rename)
alter table 旧表名 rename 新表名;
例如:
alter table students rename xuesheng;
2.扩展表结构,增加字段(add)
alter table 表名 add 字段;
例如:
alter table xuesheng add address varchar(50) default 'wait get';
#default 'wait get':表示此字段设置默认值 wait get;可与 NOT NULL 配合使用
3. 修改字段(列)名,添加唯一键(change)
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
例如:
alter table xuesheng change name user_name char(30) unique key;
#CHANGE可修改字段名、数据类型、约束等所有项。
验证:
insert into xuesheng values(6,lili,23,234567,NANKING);
失败,因为设置了唯一键,lili不能重复,改成lulu即可
insert into xuesheng values(6,lulu,23,234567,NANKING);
4. 删除字段(drop)
alter table 表名 drop 字段名;
例如:
#删除表中passwd字段
alter table xuesheng drop passwd;