1、数据库的基本概念
2、主流数据库介绍
3、关系型非关系型数据库介绍
4、Mysql 安装方法
5、Mysql 基本操作命令
1、数据库的基本概念:
数据库的组成
数据: 描述事物的符号记录
包括数字,文字、图形、图像、声音、档案记录等
以“记录”形式按统一格式进行存储
表: 将不同的记录组织在一起,用来存储具体数据
数据库: 表的集合,是存储数据的仓库
以一定的组织方式存储的相互有关的数据集合
数据库的管理系统(DBMS):
是实现对数据库资源有效组织、管理和存取的系统软件
功能:数据库的建立和维护功能、数据定义功能、数据操控功能、数据库的运行管理功能、通信功能
数据库系统(DBS)
是一个人机系统,由硬件、OS、数据库、DBMS、应用软件和数据库用户组成
用户可以通过DBMS或应用程序操作数据库
2、主流数据库介绍:
MySQL数据库介绍:
一款深受欢迎的开源关系型数据库 Oracle旗下的产品,遵守GPL协议,可以免费使用与修改
特点:
性能卓越、服务稳定
开源、无版权限制、成本低
多线程、多用户
基于C/S(客户端/服务器)架构
安全可靠
主流数据库介绍:
SQL Server (微软公司产品) Oracle (甲骨文公司产品) DB2 (IBM公司产品) MySQL(甲骨文公司收购)
面向Windows操作系统 面向所有主流平台 面向所有主流平台 免费、开源、体积小
简单、易用 安全、完善、操作复杂 大型、安全、完善
3、关系型非关系型数据库介绍:
关系型数据库: 硬盘中读写
a)关系数据库系统是基于关系模型的数据库系统
b)关系数据库的存储结构是二维表格
- 每一行称为一条记录,用来描述一个对象的信息
- 每一行称为一个字段,用来描述对象的一个属性
c)关系模型可用简单的"实体-关系-属性"来表示
实体 :也称为实例,对应现实世界中可区别与其他对象的“事件”或“事物” 如银行客户、银行账户等 关系 :实体集之间的对应关系称为联系,也称为关系 如银行客户和银行账户之间存在“储蓄”的关系 属性 :实体所具有的某一特性,一个实体可以有多个属性 如“银行客户”实体集中的每个实体均具有姓名、住址、电话等属性
非关系型数据库:
存储数据不以关系模型为依据,不需要固定的表格式,内存中读写 键值对
非关系型数据库的优点:
- 数据库可高并发读写
- 对海量数据高效率存储与访问
- 数据库具有高扩展性与高可用性
4、Mysql 安装方法:
将安装包拖至/opt目录下,编一个脚本文件,然后source执行脚本,等脚本执行完成,
即可使用mysql -u root -p点击回车即可进入。 本博主亲测 无修改100% 一键部署。(source 执行 否则会因为环境变量问题 出现报错)。
#!/bin/bash echo -e "\033[31m =====正在验证当前为仅主机还是NAT模式===== \033[0m" ping -c1 -W1 www.baidu.com &> /dev/null if [ $? -eq 0 ];then echo -e "\033[31m 检测当前为NAT模式,为您配置在线yum源 \033[0m" mkdir -p /etc/yum.repos.d/repo.bak mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo &> /dev/null yum clean all &> /dev/null yum list &> /dev/null echo -e "\033[31m 在线源已配置完成 \033[0m" else echo -e "\033[31m 检测当前为仅主机模式,为您配置本地yum源 \033[0m" mount /dev/sr0 /mnt &> /dev/null cd /etc/yum.repos.d/ mkdir -p /etc/yum.repos.d/repo.bak mv -f /etc/yum.repos.d/* /etc/yum.repos.d/repo.bak &> /dev/null echo '[local] name=local baseurl=file:///mnt enabled=1 gpgcheck=0' > /etc/yum.repos.d/local.repo yum clean all &> /dev/null yum makecache &> /dev/null df -h | grep "/mnt" if [ $? -ne 0 ];then echo -e "\033[31m 检测当前为仅主机模式,但光盘未连接! \033[0m" else echo -e "\033[31m 本地yum源已配置完成 \033[0m" fi fi #关闭系统防火墙和安全机制 systemctl stop firewalld systemctl disable firewalld setenforce 0 echo -e "\033[31m 检查安装包是否正确,请耐心等待 \033[0m" ls /opt | egrep "^mysql-boost-5.7.20.tar.gz$" if [ $? -eq 0 ];then echo -e "\033[31m 接下来进入正式配置,请耐心等待 \033[0m" else echo -e "\033[31m 请准备正确安装包mysql-boost-5.7.20.tar.gz \033[0m" exit fi #安装Mysql环境依赖包 yum -y install \ ncurses \ ncurses-devel \ bison \ cmake \ gcc \ gcc-c++ \ make #创建程序用户,便于准确控制访问用户 useradd -M -s /sbin/nologin mysql #编译安装 cd /opt tar xzvf mysql-boost-5.7.20.tar.gz -C /opt cd /opt/mysql-5.7.20/ cmake \ -DCMAKE_INSTALL_PREFIX=/usr/local/mysql \ -DMYSQL_UNIX_ADDR=/usr/local/mysql/mysql.sock \ -DSYSCONFDIR=/etc \ -DSYSTEMD_PID_DIR=/usr/local/mysql \ -DDEFAULT_CHARSET=utf8 \ -DDEFAULT_COLLATION=utf8_general_ci \ -DWITH_EXTRA_CHARSETS=all \ -DWITH_INNOBASE_STORAGE_ENGINE=1 \ -DWITH_ARCHIVE_STORAGE_ENGINE=1 \ -DWITH_BLACKHOLE_STORAGE_ENGINE=1 \ -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 \ -DMYSQL_DATADIR=/usr/local/mysql/data \ -DWITH_BOOST=boost \ -DWITH_SYSTEMD=1 #编译及安装 make && make install #修改mysql 配置文件 echo '[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=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_AUTO_VALUE_ON_ZERO,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,PIPES_AS_CONCAT,ANSI_QUOTES' > /etc/my.cnf #更改mysql安装目录和配置文件的属主属组 chown -R mysql:mysql /usr/local/mysql/ chown mysql:mysql /etc/my.cnf #设置路径环境变量 echo "export PATH=$PATH:/usr/local/mysql/bin:/usr/local/mysql/lib">> /etc/profile source /etc/profile #初始化数据库 cd /usr/local/mysql/bin/ ./mysqld \ --initialize-insecure \ --user=mysql \ --basedir=/usr/local/mysql \ --datadir=/usr/local/mysql/data #添加mysqld系统服务 cp /usr/local/mysql/usr/lib/systemd/system/mysqld.service /usr/lib/systemd/system/ systemctl daemon-reload systemctl start mysqld.service systemctl enable mysqld
5、Mysql 基本操作命令:
常用的数据类型:
int | 整型 |
---|---|
float | 单精度浮点 4字节32位 |
double | 双精度浮点 8字节64位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal (5,2) | 5个有效长度数字,小数点后面有2位 |
查看当前服务器中的数据库:
SHOW DATABASES; #大小写不区分,分号“;”表示结束
查看数据库中包含的表:
USE 数据库名; SHOW TABLES;
查看表的结构(字段):
USE 数据库名; DESCRIBE [数据库名.]表名; 可缩写成:DESC 表名;
SQL语句:
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能。
SQL语言分类:
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
---|---|
DML | 数据操纵语言,用于对表中的数据进行管理 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
a)创建新的数据库:
CREATE DATABASE 数据库名;
b)创建新的表:
CREATE TABLE 表名 (字段1 数据类型,字段2 数据类型[,...][,PRIMARY KEY (主键名)]);
#主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键。
例:create database sanguo; use sanguo; create table CLASS1 (id int not null,name char(10) not null,sex char(1),primary key (id));
c)删除指定数据表:
DROP TABLE [数据库名.]表名; #如不用USE进入库中,则需加上数据库名
d)删除指定的数据库:
DROP DATABASE 数据库名; 例:show databases; drop table SANGUO.chibi; use SANGUO; show tables; drop database SANGUO; show databases;
管理表中的数据记录
a)向数据表中插入新的数据记录:
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...); 例:create database sanguo; use sanguo; create table chibi (id int not null,name char(20) not null,sex char(1) not null,primary key (id)); insert into chibi (id,name,sex) values(1,'zhangsan','男');
b)查询数据记录:
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式]; 例:select * from CLASS2; select name,sex from CLASS2 where id=1;
c)修改、更新数据表中的数据记录:
UPDATE 表名 SET 字段名1=字段值1[,字段名2=字段值2] [WHERE 条件表达式]; 例:insert into CLASS2 (id,name,sex) values(2,'lisi','女'); insert into CLASS2 (id,name,sex) values(3,'wangwu','男'); select * from CLASS2; update CLASS2 set id=4 where name='zhangsan'; select * from CLASS2; update CLASS2 set name='sicong',sex='男' where id=2; select * from CLASS2;
d)在数据表中删除指定的数据记录:
DELETE FROM 表名 [WHERE 条件表达式]; 例:delete from CLASS2 where id=4; select * from CLASS2;
修改表名和表结构
a)修改表名:
ALTER TABLE 旧表名 RENAME 新表名; 例:alter table CLASS2 rename CLASS3; show tables; select * from CLASS3;
b)扩展表结构(增加字段):
ALTER TABLE 表名 ADD address varchar(50) default '地址不详';
#default ‘地址不详’:表示此字段设置默认值 地址不详;可与 NOT NULL 配合使用
例:alter table CLASS3 add address varchar(50) default '地址不详';
c)修改字段(列)名,添加唯一键:
ALTER TABLE 表名 CHANGE 旧列名 新列名 数据类型 [unique key]; 例:alter table CLASS3 change name student_name varchar(20) unique key; select * from CLASS3; insert into CLASS3 (id,student_name,sex) values (1,'zhangsan','男'); select * from chibi; insert into chibi (id,student_name,sex) values (4,'zhangsan','男');
d)删除字段:
ALTER TABLE 表名 DROP 字段名; 例:alter table chibi drop address;