DAB01 构建MySQL服务器、 数据库基本管理 、 MySQL 数据类型

下载 :mysql-5.7.17.tar
重新克隆新的虚拟机:
eth0 网卡:192.168.4.50-192.168.4.57 /8台虚拟机
主机名称:mysql50-mysql57

一:安装部署 MySQL

  1. 准备工作(非必须的操作)
    关闭防火墙(如果有的话)
    关闭 SELinux(如果有的话)
    如果之前有 mariadb,则需要先卸载,并删除对应的配置与数据:

    ]# systemctl stop mariadb
    ]# rm -rf /etc/my.cnf
    ]# rm -rf /var/lib/mysql/*
    ]# rpm -e --nodeps mariadb mariadb-server mariadb-devel

  2. 安装部署 MySQL

    [root@mysql50 ~]# tar -xf mysql-5.7.17.tar //解压mysql整合包

    ./mysql-community-client-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-common-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-devel-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-embedded-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-libs-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-server-5.7.17-1.el7.x86_64.rpm
    ./mysql-community-test-5.7.17-1.el7.x86_64.rpm

[root@mysql50 ~]# yum -y install mysql-community*

3.启动服务
[root@mysql50 ~]# systemctl start mysqld
提示:第一次启动,需要初始化数据,会比较慢

[root@mysql50 ~]# systemctl status mysqld
[root@mysql50 ~]# systemctl enable mysqld

4.配置 MySQL 管理员密码(默认数据库管理员账户为 root)
第一次启动时,mysql 会自动为 root 账户配置随机密码,我们需要通过日志查看该密码

[root@mysql50 ~]# grep password /var/log/mysqld.log
2018-12-25T12:43:41.164573Z 1 [Note] A temporary password is generated for root@localhost: cvAd3af8a<j?
[root@mysql50 ~]# mysql -uroot -p'cvAd3af8a<j?'
mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

注意:用该密码登录到服务端后,必须马上修改密码,不然会报上面的错误。
在这里插入图片描述

mysql>set global validate_password_policy=0;	//只验证长度
Query OK, 0 rows affected (0.00 sec)
mysql>set global validate_password_length=6;	//修改密码长度,默认值是 8 个字符
Query OK, 0 rows affected (0.00 sec)
mysql>alter user user() identified by "123456";	//修改登陆密码
Query OK, 0 rows affected (0.00 sec)			
修改密码后,可以数据库命令了!
mysql>show databases;

**

扫描二维码关注公众号,回复: 4960731 查看本文章

二:数据库基本管理**

1.数据库操作基本流程
◼ 连接登陆数据库
◼ 创建数据库
◼ 创建数据表
◼ 插入数据记录
◼ 断开连接
连接 MySQL 数据库的命令语法格式:
语法:mysql [-h 服务器 ip或域名 -u 用户名 -p 密码 数据库名称]
注意事项:
操作指令不区分大小写(密码和变量例外)
每条SQL语句都以分号结尾
默认不支持Tab
\c可以取消书写错误的命令
在/var/lib/mysql添加 --auto rehash 可以补齐列

常用的SQL命令分类:
DDL 数据定义语言(create alter drop)
DML 数据操作语言 (insert update delete)
DCL 数据控制语言 (grant revoke)
DTL 数据事务语言 (commit rollback savepoint)

mysql> create database bbs character set utf8; //支持中文
mysql> show databases;   //查看所有数据库
+--------------------+
| Database            |
+--------------------+
| information_schema |                              //信息概要库
| mysql               |                              //授权库
| performance_schema |                              //性能结构库
| sys                  |                              //系统元数据库
+--------------------+
mysql> create database 库名;    //新建数据库

mysql> use 库名;                   //切换库

mysql> select database();      //确认当前所在的库

mysql> drop database 库名;        //删除数据库

mysql> show tables;		//查看所有表

mysql> desc columns_priv\G     //查看表结构,以列表形式展现,末尾不用分号

mysql>  desc columns_priv;     //查看表结构,以表格形式展现末尾需要有分号

mysql> show character set;		//查看所有可用的语言

mysql> create database school character set utf8;	//新建school数据库支持中文

mysql> create table school.student(			//新建school数据库student表
	> 学号 char(20),
	> 姓名 char(20),
	> 性别 char(5),
	> 手机号 int (12),
	>通信地址 char(50));

1、查看数据表结构语法格式: desc [库名.]表名;

mysql> desc school.student; 

mysql> insert into school.student values('NSD1810','张三','男',13229739712,'北京'); //添加一条数据

mysql> insert into school.student values('NSD1811','李斯','男',13229739713,'上海'),('NSD1812','周五','男',13229739714,'长白山');	//添加多条数据(多条数据使用逗号分隔)

2、更新数据语法格式:update 数据库名称.数据表名称 set 字段=值 [where 条件]

mysql> update school.student set 性别='女';   	//更新(字段性别)所有数据为女

mysql> update school.student set 性别='女' where 姓名='李斯'; 	//更新满足条件的数据

mysql> delete from school.student where 学号='NSD1810';		//删除表中满足条件的数据

mysql> delete from school.student;			//删除整个数据库(包括表)

mysql> drop table school.student;			//删除整个数据表

三、 MySQL 数据类型

  1. 数字类型
    在这里插入图片描述

mysql> create table school.num(
id tinyint,
age int(3),
score float(4,2));
mysql> desc school.num;
mysql> insert into school.num values(1111,22,11.2);
ERROR 1264 (22003): Out of range value for column ‘id’ at row 1
#提示值超出范围(tinyint 只能存-128~127 或者 0~255 之间的值)。

mysql> insert into school.num values(130,22,11.2);
ERROR 1264 (22003): Out of range value for column ‘id’ at row 1
#130 也提示错误,因为默认使用的是有符号的存储,如果需要无符号需要添加 unsigned 标记。

mysql> insert into school.num values(-125,22,11.2);
Query OK, 1 row affected (0.06 sec)
#正确

mysql> insert into school.num values(-125,22,143.434);
ERROR 1264 (22003): Out of range value for column ‘score’ at row 1
提示:错误,小数的总长度为 4 位,也就是整数为 2 位,小数为 2 位。当整数写 3 位就报错。

mysql> insert into school.num values(-125,22,14.43433333);
ERROR 1264 (22003): Out of range value for column ‘score’ at row 1
提示:不报错误,整数位合法,小数位超出,系统会自动把多余的删除,进行四舍五入。

  1. 字符类型
    在这里插入图片描述
    mysql> create table school.info(
    name char(4),
    email varchar(30));

mysql> desc school.info;

mysql> insert into school.info values(‘tom’, ‘[email protected]’);
Query OK, 1 row affected (0.06 sec)
#注意:字符串需要使用引号!

mysql> select * from school.info;

  1. 字符类型

datetime 日期时间类型,占 8 个字符
范围 1000-01-01 00:00:00:000000~9999-12-31 23:59:59.999999
如果不给该类型的数据赋值,则默认为 NULL
timestamp 日期时间类型,占 4 个字节
范围 1970-01-01 00:00:00:000000~2038-01-19 03:14:07.999999
如果不给该类型的数据赋值,则 mysql 自动为其分配当前的系统时间
YYYYmmddhhmmss
date 日期类型,占用 4 个字节
范围 0001-01-01~9999-12-31
默认使用 4 位数字表示,当只用 2 位数字赋值时:
01~69 自动识别为 2001~2069
70~99 自动识别为 1970~1999
year 年份类型,占用 1 个字节
范围 1901-2155
time 时间类型,占用 3 个字节
范围 HH:MM:SS

创建学员信息表:姓名、出生日期、入学年份、上课时间、下课时间

mysql> create table school.stuinfo(
name char(5),
birth datetime,
start year,
begin time,
end time);
mysql> insert into school.stuinfo values (‘tom’,20011010121200,2018,0800,1800);
mysql> select * from school.stuinfo;

mysql> insert into school.stuinfo values ( ‘lucy’,20011010121200,2555,0800,1800);
ERROR 1264 (22003): Out of range value for column ‘start’ at row 1
#year 年份的有效范围是 1901-2155

几个 mysql 内置的时间函数
mysql> select now(),sysdate();

  1. 字符类型
    枚举类型(选择类型)
    enum(值 1,值 2,值 3…) #单选项
    set(值 1,值 2,值 3…)#多选项

    mysql> create table school.tea(
    name char(5),
    gender enum(‘boy’, ‘girl’),
    interest set(‘book’,‘film’,‘music’,‘football’));

    mysql> insert into school.tea values(‘fan’,‘boy’,‘book,football’);

    mysql> insert into school.tea values(‘qing’,‘girl’,‘book,film,music’);
    mysql> desc school.tea;
    mysql> insert into school.tea values (‘fan’, ‘boy’, ‘book,football’)
    如果错误,是超出了可选择的范围
    mysql> insert into school.tea values (‘qing’, ‘girl’, ‘book,film,music’)

总结:
1、安装数据库
2、基本操作(增、删、改、查)
3、数据类型
、数字类型
、字符类型
、日期时间类型
、枚举类型

猜你喜欢

转载自blog.csdn.net/qq_41270538/article/details/86181458