DBA DAY01
常见的数据库服务软件:
类型 | 厂商 |
Oracle Database |
Oracel(甲骨文) |
MySQL/MariaDB | Oracel(甲骨文) |
SQL Server | Microsoft(微软) |
Access | Microsoft(微软) |
DB2 | IBM |
Sybase | Sybase |
PostgreSQL | 加州大学伯克利分校 |
跨平台,可移植性好,通过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
# systemctl enable mysqld
PID TTY TIME CMD
3252 ? 00:00:00 mysqld
tcp6 0 0 :::3306 :::* LISTEN 3252/mysqld
# 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
连接数据库服务器(命令行 API 图形工具)
选择库 (存放数据的文件夹)
选择表 (就是文件)
插入记录 (文件中的行)
断开连接
2.4 sql命令分类? DDL DML DTL DCL
DDL:数据库定义语言 (create、alter、drop)
DML:数据库操作语言 (insert、delete、update、select)
DCL:数据库控制语言 (grant、revoke)
DTL:数据库事物语言 (commit、rollback、savepoint)
查看 show databases;
创建 create database 库名;
切换 use 库名;
删除 drop database 库名;
显示当前所在的库 select database();
--可以使用数字/字母/下划线,但不能使用纯数字
查看 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;
数值类型的宽度 是显示宽度,能不能存进变量是由字段类型决定。
int(2)=2561;是可以成功存放的。 int默认显示长度为11。可以修改为int(1)会节省内存。
数值类型:
--使用UNSIGNED修饰时,对应的字段只保存正数
--数值不够指定宽度时,在左边填空格补位
--宽度仅是显示宽度,存数值的大小由类型决定
--使用关键字ZEROFILL时,填0代替空格补位
--数值超出范围,报错。
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
);
insert into t2 values(-201, -1);
insert into t2 values(201, 0);
select * from t2;
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
text/blob 大文本类型 (音频文件 视频文件 图片文件)
YEAR年份的处理
默认使用4位数字表示
- 当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,而DATETIME字段默认赋值为NULL
- 表结构不同
name char(15),
sex enum("boy","girl","no"),
likes set("woman","game","money","flim","eat")
);
insert into t8 values
("guoxuehao","boy","game,flim,eat");
insert into t8 values("xierongyue", 3 ,"money,eat");
select * from t8;
[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
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;