mysql数据库管理之一

一、搭建数据库服务器

1.选购合适的服务器:

配置: CPU 内存 存储

用途:云服务器、硬件服务器

2.安装软件包的选择:

根据服务器操作系统的版本:windows linux unix

软件的版本:开源软件或商业软件

安装方式:

源码安装:自定义安装,想装在哪都,装什么功能都行,但是要解决依赖关系;

rpm包安装:安装简单,封装好了,缺点,无法改变配置

软件包的来源:官网去下或操作系统里的安装包内也有

3.修改配置文件

4.启动服务

5.具体操作过程:用的是开源版,5.7.17版本,rpm装,在IP地址是192.168.4.50上 的主机运行mysql数据库。

[root@host50 08.dba-1]# tar -xf mysql-5.7.17.tar

[root@host50 08.dba-1]# ls

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@host50 08.dba-1]# rpm -qa | grep -i mariadb

mariadb-libs-5.5.56-2.el7.x86_64

[root@host50 yum.repos.d]# rpm -Uvh mysql-community-*.rpm

提示需要perl-JSON依赖包,直接yum安装此依赖包

[root@host50 yum.repos.d]# yum -y install perl-JSON

[root@host50 yum.repos.d]# rpm -Uvh mysql-community-*.rpm

[root@host50 08.dba-1]# rpm -qa | grep -i mysql

mysql-community-client-5.7.17-1.el7.x86_64

mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64

mysql-community-test-5.7.17-1.el7.x86_64

mysql-community-common-5.7.17-1.el7.x86_64

mysql-community-devel-5.7.17-1.el7.x86_64

mysql-community-libs-compat-5.7.17-1.el7.x86_64

mysql-community-libs-5.7.17-1.el7.x86_64

mysql-community-embedded-5.7.17-1.el7.x86_64

mysql-community-embedded-compat-5.7.17-1.el7.x86_64

mysql-community-embedded-devel-5.7.17-1.el7.x86_64

mysql-community-server-5.7.17-1.el7.x86_64

至此,安装完成,生成数据库目录:/var/lib/mysql空目录

[root@host50 mysql]# systemctl start mysqld

第一次启动服务,需要初始化,加载文件,需要一定时间,不会秒起

此时再查看数据库目录:/var/lib/mysql,自动生成了很多目录和文件

[root@host50 mysql]# systemctl enable mysqld 设置开机自启

[root@host51 mysql]# systemctl status mysqld查状态为running确认启动成功。

6.步骤总结:

1.解压安装包mysql-5.17.7

2.检查机器是否安装其他版本的数据库

3.安装依赖包perl-JSON(镜像有)

4.升级安装mysql-community-*.rpm

5.启动服务,查状态

7.参数总结:

1.配置文件位置:/etc/my.cnf

2.数据库目录:/var/lib/mysql

3.进程名:mysqld

4.默认端口号:3306

5.传输协议:tcp

6.进程所有者,所属组:mysql

二、数据库服务的基本使用

1.数据存储到数据库服务器上过程:

连接数据库服务器(命令连接 图形工具)

选择库(文件夹)

建表(文件)

插入记录(行)

断开连接

2.连接数据库服务器

mysql -hlocalhost -uroot -p密码 [库名] //连接数据库的命令root是数据库管理员的用户名,与系统管理员同名,但不是同一个用户

[root@host50 mysql]# grep -i password /var/log/mysqld.log //查看管理员初始密码,将“:”后的内容复制然后登陆

此时对数据库进行操作会提示:ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. //你必须先重置密码才可以进行操作。

ps:默认设置的密码为复杂密码:包括大小写,数字加特殊符号

mysql数据库管理之一

可以通过修改密码策略简化:

mysql>set global validate_password_policy=0;//将策略设置简单

mysql> set global validate_password)length=6;//将密码最短长度设为6位

mysql> alter user root@'localhost' identified by '123456'; //设置密码

//global为全局设置,在数据库里修改只是临时生效,要永久设置需要在配置文件内添加:

validate_password_policy=0

validate_password)length=6

然后停掉数据库再启动确认设置成功。

3.选择库(文件夹)

a.操作指令类型:

mysql指令:环境切换,看状态,推出等控制;

sql指令:数据库定义,查询,操纵,授权语句:

DDL数据定义语言(cresate alter drop)

DML数据操作语言(insert update delete)

DCL 数据控制语言(grant revoke)

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

b.使用的基本注意事项:

操作指令不区分大小写(密码,变量除外)

不支持tab键自动补齐

每条sql指令以;结束或分隔

默认的4个库不要删,有些存放的是系统启动所需要的数据

c.库名的命名规则:可以使用数字/字母/下划线,不能纯数字

不能用特殊字符,指令关键字

区分大小写,具有唯一性

d.库管理基本命令:

– Show databases; // 显示已有的库

– Use 库名 ;// 切换库

– Select database(); // 显示当前所在的库

– Create database 库名 ; // 创建新库

– Show tables;// 显示已有的表

– Drop database 库名; // 删除库

ps:把库删掉了,没有备份,能不能恢复?

可以,但是要通过第三方软件,将硬盘上存放库的资料找回来

ps:库与数据库目录下的目录是双向的,在数据库目录下建目录,也会多出一个库,但是拥有者和所属组是root,因此连接数据库后只能查看和进入库,不能写入,因为没权限。

4.建表(文件)

表管理命令:

创建表:

create table 库名.表名(

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

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

...

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

);

eg:mysql> create table t1 (

-> name char(15),

-> class char(7)

-> );

查看表结构: desc t1;

查看表记录: select * from 表名;

删除表: drop table 表名;

5.插入记录(行)

Insert into 表名 values( 值列表 );// 插入表记录,一个()为一行

eg:

mysql> insert into t1 values("haha1","nsd1803"),("haha2","nsd1803");

Update 表名 set 字段 = 值 ; // 修改表记录(批量修改)

eg:

mysql> update t1 set class="nsd1809";

Delete from 表名 ; // 删除表记录(所有行,表还在,字段也还在)

eg:

mysql> delete from t1;

Select * from 表名 ; // 查看表记录(*为全部字段)

eg:

mysql> select * from t1;

ps:mysql默认字符集为latin1,不支持中文,在执行insert时存不了中文字符,但库名和表名可以中文,因此需要在建表时设字符集为支持中文字符的utf8

eg:

mysql> create table 学生信息表2(

-> 姓名 char(15),

-> 班级 char(7)

-> )Default charset=utf8;

执行insert验证或show create table 学生信息表2;查看创建表时的设置。

三、mysql数据类型

1.常见的信息种类:

数值型:

字符型:

枚举型:兴趣还好,性别等只能选一个之类的

日期时间型:

2.数值类型:

mysql数据库管理之一

默认用的是有符号的存储范围,若要用无符号的在设置类型时后面在unsigned;

整型:存小数点会四舍五入

eg(整数型):

mysql> create table db1.t2(level tinyint);

mysql> insert into t2 values(251);

ERROR 1264 (22003): Out of range value for column 'level' at row 1

mysql> insert into t2 values(127);

Query OK, 1 row affected (0.03 sec)

mysql> create table db1.t3(level tinyint unsigned);

mysql> insert t3 values(255);

Query OK, 1 row affected (0.02 sec)

浮点型(带小数点):整数位.小数位--->总位数

n m

float(m,n)

double(m,n)

eg:

mysql> create table t4(pay double(7,2));

mysql> insert into t4 values(12300);

mysql> insert into t4 values(123);

mysql> insert into t4 values(123000);

ERROR 1264 (22003): Out of range value for column 'pay' at row 1

mysql> select * from t4;

+----------+

| pay |

+----------+

| 123.00 |

| 12300.00 |

+----------+

3.字符类型:

定长:char(字符数)

普通字符,最大长度255个字符,不指定宽度时默认为1;

固定长度,不够指定字符数时在右边用空格补齐,字符数超出时,无法写入数据;

存储数度效率高,因为无需计算存储空间。

变长:varchar(字符数)

普通字符,按数据实际大小分配存储空间,必须指定宽度,不然报错;

字符数断超出时,无法写入数据;

存储速度略低,需要占用cpu来计算存储空间,不建议全部用,消耗资源。

大文本类型:text/blob等二进制文件,字符数打与65535存储时使用,实际应用中不建议存放视频音频等打文件,一般都是存放此文件的路径做好标记方便查找

eg:

mysql> create table t5(

-> name char(15),

-> email varchar(30)

-> );

mysql> insert into t5 values("bob","[email protected]"),("lucy","[email protected]");

Records: 2 Duplicates: 0 Warnings: 0

mysql> insert into t5 values("kdsajlgdlkdsagj","asd");

mysql> insert into t5 values("kdsajlgdlkdsagja","asd");

ERROR 1406 (22001): Data too long for column 'name' at row 1

mysql> select * from t5;

4.枚举类型

1.从给定值集合中选择单个值,ENUM

定义格式:enum(值1,值2...值n),不能超过64个

ps:插入记录时可写值列表内的序号,也可写值内容

2.从给定值集合中选择一个或多个值,SET

定义格式:set(值1,值2...值n)

eg:

mysql> create table t6(

-> name char(15),

-> age tinyint unsigned,

-> pay float(7,2),

-> sex enum("boy","girl","no"),

-> hobby set("woman","money","game","eat")

-> )default charset=utf8;

mysql> desc t6;

mysql> insert into t6 values("bob",21,20000,"no","eat,game");

mysql> insert into t6 values("bob2",29.2000,"man","eat");

ERROR1136 (21S01): Column count doesn't match value count at row 1

mysql> insert into t6 values("bob3",20,200000,"2","woman");

ERROR 1264 (22003): Out of range value for column 'pay' at row 1

mysql> insert into t6 values("bob3",20,20000,"2","woman");

mysql> select * from t6;

5.日期类型

1.日期时间, DATETIME

– 占用 8 个字节

– 范围: 1000-01-01 00:00:00.000000~ 9999-12-31 23:59:59.999999

2.日期时间, TIMESTAMP

– 占用 4 个字节

– 范围: 1970-01-01 00:00:00.000000~ 2038-01-19 03:14:07.999999

3.日期, DATE

– 占用 4 个字节

– 范围: 0001-01-01 ~ 9999-12-31

4.年份, YEAR

– 占用 1 个字节

– 范围: 1901~2155

5.时间, TIME

– 占用 3 个字节

– 格式: HH:MM:SS

ps:

关于日期时间字段

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

关于YEAR 年份的处理

– 默认用 4 位数字表示

– 当只用 2 位数字赋值时, 01~69 视为 2000~2069 ,而 70~99 视为 1970~1999

6.小结:

年 year YYYY 2018

日期 date YYYYMMDD 20180614

时间 time HHMMSS 174258

日期时间datetimeYYYYMMDDHHMMSS 20180614174258

eg:

mysql> create table t7(

-> name char(15),

-> syear year,

-> birth date,

-> up_class time,

-> party datetime

-> );

mysql> insert into t7 values

("yaya",1990,20181120,083000,20180618213000);

mysql> select * from t7;

7.时间函数

mysql数据库管理之一


分享到:


相關文章: