DBA01 - 数据库服务概述 构建MySQL服务器、数据库基本管理 MySQL数据类型

                                                                            DBA   DAY01

常见的数据库服务软件:

                                  类型                                             厂商

Oracle Database

Oracel(甲骨文)
MySQL/MariaDB Oracel(甲骨文)
SQL Server Microsoft(微软)
Access Microsoft(微软)
DB2 IBM
Sybase Sybase
PostgreSQL 加州大学伯克利分校
MySQL的特点:

    跨平台,可移植性好,通过API支持主流编程语言。

一、搭建mysql数据库服务器 192.168.4.51

1装包

    从官网下载RPM包

    https://dev.mysql.com/downloads/mysql/

1.1 删除系统自带mariadb mysql数据库软件
#rpm   -qa  |  grep   -i  mariadb
#systemctl  stop  mariadb
# rpm -e --nodeps mariadb-libs    //解除依赖关系,并删除mariadb-libs包
#rpm   -e  --nodeps   mariadb-server 
#rm  -rf  /etc/my.cnf        //mysql主配置文件
#rm  -rf  /var/lib/mysql    //mysq的工作目录
1.2 安装mysql软件
# tar  -xf  mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar
#  ls  *.rpm
#  rm  -rf   mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm

#  yum   -y   install    perl-JSON      //安装mysq需要的依赖包
#  rpm  -Uvh    mysql-community-*.rpm    (U:是升级) (以前i:是安装)
#  rpm  -qa   | grep  -i   mysql

2.修改配置文件(不需要修改配置文件 按默认配置运行即可)
ls  /etc/my.cnf
3.启动服务
systemctl   start  mysqld

# systemctl   enable  mysqld

4.查看服务进程和端口号
[root@mysql51 mysql]# ps   -C   mysqld
  PID TTY          TIME CMD

 3252 ?        00:00:00 mysqld

[root@mysql51 mysql]# netstat  -utnlp  | grep  mysqld

tcp6       0      0 :::3306                 :::*                    LISTEN      3252/mysqld         

服务名  mysqld
服务的主配置文件  /etc/my.cnf
数据目录  /var/lib/mysql
日志文件   /var/log/mysqld.log

二、数据库服务的基本使用
2.1 使用初始密码在本机连接数据库服务
# grep password /var/log/mysqld.log
# mysql   -hlocalhost   -uroot   -p'hqToPwaqf5,g!><'

2.2 重置本机连接密码
mysql>set global validate_password_policy=0;  只检查密码的长度
mysql>set global validate_password_length=6; 密码长度不能小于6个字符
mysql>alter  user   root@"localhost"  identified by "123456";
mysql>quit

# mysql   -hlocalhost   -uroot   -p123456
mysql>  show   databases;

让密码策略永久生效
#vim  /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
:wq
#systemctl   restart  mysqld

2.3 把数据存储到数据库服务器上的过程?

连接数据库服务器(命令行   API    图形工具)
选择库 (存放数据的文件夹)
选择表 (就是文件)
插入记录  (文件中的行)
断开连接

2.4 sql命令分类? DDL   DML    DTL    DCL

DDL:数据库定义语言 (create、alter、drop)

DML:数据库操作语言 (insert、deleteupdate、select)

DCL:数据库控制语言   (grant、revoke)

DTL:数据库事物语言   (commit、rollback、savepoint)

2.5 sql命令使用规则

2.6 管理数据库的sql命令,及 库名的命名规则
查看  show  databases;
创建  create  database  库名;
切换  use  库名;  
删除  drop   database  库名;   
显示当前所在的库      select  database();
    库名的命名规则:
            --可以使用数字/字母/下划线,但不能使用纯数字
            --区分大小写,具有唯一性
            --不可使用指令关键字、特殊字符

2.7 管理表的 sql命令
查看  mysql> show  tables;
创建  mysql> create  table  gamedb.stuinfo(
    -> name  char(10),
    -> addr  char(20)

    -> ) DEFAULT CHARSET=utf8;

永久设置:

[mysqld]

DEFAULT CHARSET=utf8

查看数据库/数据表默认编码:

mysql> show create database persondb;


mysql> show create table t1;


删除     drop  table    库名.表名   ;  

查看表记录  select   *  from   库名.表名   ;  
查看表结构  desc    库名.表名     ;

2.8  管理记录的sql命令

查看   select   *  from   库名.表名   ; 

插入   insert    into   库名.表名  values(字段值列表);
insert into  gamedb.stuinfo values ("tom","beijing");

insert into  gamedb.stuinfo values ("bob","beijing");

修改  update  库名.表名  set   字段名=值 where  条件;

update  gamedb.stuinfo  set  addr="shanghai" where name="tom";

删除
delete  from   库名.表名;
delete  from  gamedb.stuinfo;
+++++++++++++++++++++++++

三、mysql数据类型

3.1  数值类型   (成绩  年龄   工资  )
每种类型的存储数据的范围都是固定
整数类型 (只能存储整数)
微小整型    小整型         中整型                   大整型    极大整型
tinyint      smallint      MEDIUMINT             INT         bigint
*****unsigned    使用数值类型有符号的范围。(数值类型的参数默认使用有符号的范围)


数值类型的宽度 是显示宽度,能不能存进变量是由字段类型决定。

    int(2)=2561;是可以成功存放的。  int默认显示长度为11。可以修改为int(1)会节省内存。

数值类型:


整数型字段

    --使用UNSIGNED修饰时,对应的字段只保存正数

    --数值不够指定宽度时,在左边填空格补位

    --宽度仅是显示宽度,存数值的大小由类型决定

    --使用关键字ZEROFILL时,填0代替空格补位

    --数值超出范围,报错。

create  database  studb;
use   studb;
create  table   t1(level  smallint,age  tinyint);
insert into  t1  values(1024,19),(9,21);   //插入多条记录用逗号隔开

insert into  t1  values(21.45,9.87);
select   * from  t1;

create  table   t2(
level   int     unsigned, 
age   tinyint   unsigned
);
desc   t2;
insert into  t2  values(-201,  -1);
insert into  t2  values(201,  0);
select  * from t2;


浮点型 (存储小数)
float(M,N)     
double(M,N)

M  设置总位数
N   设置小数位位数

正数.小数          总位数   整数位    小数位
18088.88            7           5             2                           
create  table   t3(
pay   float(5,2)  
);
xxx.xx
999.99
      0.00
-999.99

insert  into  t3  values(124);
insert  into  t3  values(1.24);
insert  into  t3  values(-999.99);
insert  into  t3  values(1000);
select  *  from  t3;

create  table   t4(
pay   double(7,2)  
);
xxxxx.xx
99999.99
-99999.99

3.2  字符类型   (商品名称   籍贯   姓名   生产厂家)
char  (255)   固定长度字符类型,不够指定字符数时在右边用空格补齐
varchar (65532)   变长字符类型

text/blob    大文本类型 (音频文件 视频文件  图片文件)

3.3 日期时间类型 
(注册时间    约会时间   开会时间   入职时间   生日)

年       year   YYYY                 2018
日期   date   YYYYMMDD     20180423
时间   time   HHMMSS          161958
日期时间 datetime/timestamp   
               YYYYMMDDHHMMSS     20180423161958

获取日期时间给对应的日期时间类型的字段赋值
获取日期时间函数
now();                    //获取当期系统的时间
year(日期时间)      //获取指定时间中的年
month(日期时间)  //获取指定时间中的月
date(日期时间)      //获取指定时间中的日期
day(日期时间)       //获取指定时间中的号(天)
time(日期时间)      //获取指定时间中的时间

YEAR年份的处理

默认使用4位数字表示

可以使用2位数字给year类型的字段赋值,规律如下:
01-69   20XX
70-99   19XX

datetime与timestamp 的区别?

  1. 当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,而DATETIME字段默认赋值为NULL
  2. 表结构不同    

3.4 枚举类型(插入记录 时 记录的值 在列举的范围内选择)
           性别    爱好    专业
enum(值列表)       单选
set(值列表)            多选     

create  table  t8(
name  char(15),
sex      enum("boy","girl","no"),
likes    set("woman","game","money","flim","eat")
);

desc   t8;
insert into t8  values
("guoxuehao","boy","game,flim,eat");
insert into t8  values("xierongyue",  3  ,"money,eat");
select   * from  t8;
#########################################################################
1  在主机 192.168.4.52~55 主机上运行mysql数据库服务并设
置数据库管理员本机登录密码123456
    [root@host51 mysql]#  wget http://192.168.4.254/tool/mysql-5.7.17.tar
    [root@host51 mysql]#  tar -xf mysql-5.7.17.tar 
    [root@host51 mysql]# rpm -Uvh mysql-community-*.rpm
    [root@host51 mysql]# systemctl restart mysqld
    [root@host51 mysql]# vim  /etc/my.cnf
    [mysqld]
    validate_password_policy=0
    validate_password_length=6
    [root@host51 mysql]# systemctl   restart  mysqld
    [root@host51 mysql]# cat /var/log/mysqld.log | grep password
    [root@host51 mysql]# mysql -uroot -p'*)gw9znyU%q4'
    mysql> alter user root@'localhost' identified by '123456';
    mysql> exit
    Bye
2  在persondb库下,创建保存前任(女友或男友)信息的表,表名叫oldperson (字段定义表结构)

    mysql> create table oldperson (name char(10),sex enum("boy","girl"),height int,weight int,telephone char(11),address char(30),subject enum( "通信工程","财务管理"),likes set("跑步","篮球","瑜伽","睡觉"));

            mysql> insert into oldperson values("小绿","girl",165,45,"15270203398","江西省高安市","财务管理","睡觉,瑜伽");

            mysql> alter table oldperson rename to person;            //修改表名

            mysql> select * from person;


猜你喜欢

转载自blog.csdn.net/qq_36441027/article/details/80991851