MySQL基本命令操作及数据库基本概念

MySQL基本命令操作及数据库基本概念

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;

  

 

posted @ 2021-08-24 19:04  隐姓埋名4869  阅读(92)  评论(0编辑  收藏  举报