运维之mysql篇------1. 数据库服务概述 、 构建MySQL服务器 、 数据库基本管理 、 MySQL数据类型 、 表结构的调整

01 day

一常识了解:

数据库:DBDataBase

数据库管理系统:DBMSDataBaseMange System

数据库系统 DBS DataBase System

数据模型 : E-R :Entity-Relationship Mode

LAMP    LNMP

选择操作系统: Linux   UNIX   windows    RHEL7      RHEL6

安装提供数据库服务的软件。

数据库服务软件有哪些?

Oracle(甲骨文):Oracle database  ; MySQL/MariaDB

Microsoft(微软)SQL Server  ;Access;  

IBM :DB2

Sybase :Sybase

PostgreSQL :加州大学伯克利分校

关系型数据库软件:

Oracle   DB2 \ SQL SERVER \ MySQL  Saybases postgrepsql  

非关系型数据库软件:

mongodb    redis

=

key=values

哪些是商业软件?

哪些是开源软件?

是否跨平台?

软件包的来源?软件官网下载,

MySQL的特点?

在主机192.168.4.10运行MYSQL数据库服务。

++++++++++++++++++++++

克隆一台RHEL7虚拟机,配置要求如下:

配置固定ip 192.168.4.10

配置YUM

关闭firewalld服务

禁用selinux

二.MySQL环境准备:

关闭iptables 关闭selinux

1.安装MYSQL

rm  -rf   mysql-community-server-min*

rpm -Uvh mysql-community-*.rpm

安装软件包

# yum -y remove mariadb-server mariadb

# rpm -qf /etc/my.cnf

# mv /etc/my.cnf /etc/my.cnf.old

#yum -y install perl-Data-Dumper perl-JSON    #安装依赖包

#tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar  #释放bundle整合包

·  mysql-community-client-5.7.17-1.el7.x86_64.rpm       //MySQL 数据库客户端应用程序和工具

·  mysql-community-common-5.7.17-1.el7.x86_64.rpm   //MySQL 数据库和客户端库共享文件

·  mysql-community-devel-5.7.17-1.el7.x86_64.rpm       //MySQL 数据库客户端应用程序的库和头文件

·  mysql-community-embedded-5.7.17-1.el7.x86_64.rpm        //MySQL嵌入式函数库

·  mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm    //MySQL嵌入式兼容函数库

·  mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm      //文件和库文件作为Mysql的嵌入式库文件

·  mysql-community-libs-5.7.17-1.el7.x86_64.rpm           //MySQL 数据库客户端应用程序的共享库

·  mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm       //MySQL 5.6.31 数据库客户端应用程序的共享兼容库

·  mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm        //mysql最小安装包的调试信息

·  mysql-community-server-5.7.17-1.el7.x86_64.rpm            //非常快速和可靠的 SQL 数据库服务器

·  mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm     //非常快速和可靠的 SQL 数据库服务器(最小化安装)

·  mysql-community-test-5.7.17-1.el7.x86_64.rpm                    //MySQL 数据库服务器的测试套件

 

#rm -rf  mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm  #删除冲突包

#rpm -Uvh mysql-community-*.rpm   #升级安装

# rpm  -qa  | grep  -i mysql     #查看安装是否成功

 

2.启动服务

     systemctl status mysqld

     netstat -utnalp  | grep  :3306

     ps -C mysqld

     systemctl start mysqld

     ls /var/lib/mysql   #数据库默认存放位置

     systemctl enable mysqld

 

3.连接数据库服务器之初始化设置

   #mysql   -hip地址   -u用户名  -p密码

   #grep password /var/log/mysqld.log 

  #mysql -hlocalhost -uroot -p"fj.9xp8trudF"

   mysql> set global validate_password_policy=0;

   mysql> set global validate_password_length=6;

   mysql> alter user root@"localhost" identified by "abc123";   #第一种方法

   mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234567');   #第二种方法

   mysql> show databases;

   mysql> quit

 #mysql -hlocalhost -uroot -pabc123

  mysql>

 

三.MYSQL命令:

SQL 结构化查询语言

SQL命令使用规则?

SQL命令的分类?

数据库名的命名规则?

注意事项:

不区分大小写(密码,变量除外)

每条指令以;结束

不支持TAB自动补齐

\c可废弃当前操作指令

 

show  databases;         #查看所有数据库

create   database  库名   #创建库;

drop   database  库名;   #删除库名

use   库名;               #切换到某库

select database();         #查看当前所在库

show   tables;            #显示库里的表

create  database studb;   #创建studb库(student数据库)

use  studb;                #切换到studbs

·    create table studb

    `学号` char(9) NOT NULL,

·    `姓名` varchar(4) NOT NULL,

·    `性别` enum('','') NOT NULL,

·    `手机号` char(11) DEFAULT '',

·    `通信地址` varchar(64) DEFAULT NULL,

·    PRIMARY KEY (`学号`)

·  ) engine=Innodb default charset=utf8   #存储引擎和使其支持中文

show  tables;              #显示库的所有表

desc   studb.stu;           #显示studbstu表结构

Desc查看表结构有什么?

字段名|字段类型|是否为空|是否为主键|默认值|描述信息

insert   into   studb.stu  values("jim",20,"boy"),("tom",19,"boy"),("lucy",16,"girl"),("jack",15,"boy");   #添加stu表数据

select  *  from  studb.stu;    #显示stu表内容

delete  from 库名.表名;         #删除库名

drop   table   库名.表名;        #删除指定的数据库中的表  

drop   database 数据库名       #删除指定的数据库

操作思路:

存储数据

1  连接数据库服务器  

#mysql   -hlocalhost  -uroot  -pabc123

mysql>

2  创建数据库 create  database  库名;

3  建表

use 库名;

create  table  表名(

字段名  类型(宽度),

字段名  类型(宽度),

字段名  类型(宽度),

.....

);

4  插入表记录

insert  into   库名.表  values(字段值列表)(字段值列表);

查看记录  select   *  from  库名.;

6  断开连接  quit

 

四.mysql 数据类型:

 数值类型 :整数和浮点 例如:体重,身高,成绩,工资

 字符类型 :           例如:姓名、工作单位、通信地址

 日期时间类型          例如;出生日期,注册时间

 枚举类型              例如:兴趣爱好,性别

 

1.数值类型:

Unsigned 使字段保存整数

数值不够宽度,左边填空格补位

关键字zerofill0代替空格补位

数值超出范围报错

 

mysql> create  table t1 ( id  tinyint);

mysql> create  table t2 ( id  tinyint  unsigned);

mysql> create  table t3 ( id  int unsigned);

mysql> dest  t1  ;  desc  t2  ; desc  t3;

 

浮点型    2.78   23.66  定义格式:float(总宽度,小数位数)

单精度  4个字节   float

双精度  8个字节   double

整数.小数

字段名   类型(m,n

m  总位数

n   小数位数

 

pay    float(5,2)

xxx.xx

999.99

-999.99

mysql>create table t4(

age tinyint  unsigned, 

pay   float(5,2) 

);

mysql> desc  t4;

 

2.字符类型:

普通文本  abc

char  255   定长

varchar  65532  变长

                              xxx.mp3

大文件类型: 视频 音频  图片

text

blob

c:\lxgq/music1/xxx.mp3

create table t7( 

name  char(5), 

email  varchar(10), 

age tinyint 

); 

 t1          t2

name        name

varchar(4)     char(4)

    jerry           jerry

     lucy     lucy

      jim          jim 

      ab          ab  

      a               a

cpu

    

3.日期时间类型 

year  年   YYYY         例如:2017   出生年份

date 日期 YYYYMMDD    例如:20171017 生日

time 时间  HHMMSS     例如:171848  上班时间

 

日期时间类型  约会时间   注册时间

YYYYMMDDHHMMSS

datetime

timestamp

当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,而DATETIME字段默认赋值为 NULL()

mysql> create table  t16( 

meetting datetime, 

party  timestamp 

);

insert into t16 values(19901218214558,20191224183000);

insert into t16meetting) values(20191224183000);

select  * from t16;

 

mysql> create table  t15( 

name char(10),

age  tinyint unsigned, 

pay  float(7,2), 

s_year   year, 

birthday  date, 

up_time  time, 

party   datetime 

);

 

 insert  into   studb.t15  values( "tom",21,18800,1990,20171120,083000,20171024183000  );

select  *  from  studb.t15

 

获取时间的函数: now()  year() date() time()  day()

 

select  year(now());

select  month(now());

select  day(now());

select  time(now());

select  date(now());

insert into t16  values (now(),now());

 

mysql> insert into  t15(name,s_year)

    -> values( "jerry" , year( now() )  );

 

mysql>  select  name,s_year from t15;

 

insert into  t16  values(now(),now());

 

++++++++++++++++++++++++++

在主机192.168.4.20上部署Mysql数据库服务器,设置数据库管理员root用户本机登录密码是123456

创建学生库studb  使用stutab存储学生信息。

++++++++++++++++++

枚举类型

从给定值集合中选择单个值,enum

格式:enum(值1,值2,值N

从给定值集合中选择一个或多个值,set

定义格式:set(1,值2,值3

create  table   studb.t21(

name  char(10),

sex   enum("boy","girl"),

likes   set("film","game","music","it")  

);

insert  into   studb.t21  values("jim","boy","film,game");

insert  into   studb.t21  values ("lucy",2,"it,game");

 

4.约束条件:

Null 允许为空

Not null 不允许为空

Key     索引类型

Default  设置默认值,却省为null

·  mysql> CREATE TABLE family(

·      -> name varchar(16) NOT NULL,

·      -> gender enum('male','femal') DEFAULT 'male',

·      -> birth date NOT NULL,

·      -> job varchar(16) DEFAULT '',

·      -> relation varchar(24) NOT NULL,

·      -> PRIMARY KEY(name)

·      -> );

mysql> DESC family;

create  table   studb.t22(

name  char(10)   not null   ,

sex   enum("boy","girl")  not null,

likes   set("film","game","music","it")  

);

insert  into   studb.t22  values(null,null,null);

insert  into   studb.t22  values("null",null,null);

not  null 

create  table   studb.t23(

name  char(10)   not null  ,

age  tinyint   unsigned  default 21,

sex   enum("boy","girl")  not null  default   "girl",

likes   set("film","game","music","it")  default   "film,game"

);

insert  into   t23(name)values("tom");

select  * from  t23;

 

.修改表结构

mysql>  alter  table   .表   执行动作;

 

1.add添加新字段

add  字段名   类型(宽度)  约束条件;

add  字段名   类型(宽度)  约束条件  after  字段名,

add  字段名   类型(宽度)  约束条件  first

alter  table    studb.t23  add  email  varchar(30)  not  null   default  "[email protected]"  ;

alter  table    studb.t23  

add  stu_id  char(7)   first;

alter  table    studb.t23  

add  birthday  date   after  age , 

add  s_year   year  after  name;

 

2.删除已有字段

drop   字段;

drop   字段,drop   字段;

alter  table  studb.t23  drop  email;

 

3.修改字段类型

modify  字段    类型(宽度)  约束条件;

alter table   studb.t23

modify

sex  enum("boy","girl","no") not null  default "no";

alter table  t22  modify likes set('film','game','music','it') after name;

 

4.修改字段名

change   源字段名  新字段名  类型(宽度)  约束条件;

alter table  studb.t22  change   likes   love   set('film','game','music','it');

 

5.修改表名

alter  table    源表名  rename   新表名;

alter  table     t1  rename   teatab;

+++++++++++++++++++++++++

你可能感兴趣的:(mysql)