1、搭建数据库服务器
什么是数据库?存储数据的仓库
部署一台数据库,提供数据库存储服务?
购买服务器 (硬件主机 云主机 )
安装操作系统: Unix Linux Windows
1-1数据库类型
常用的几种关系型数据库( RDBMS )
Mysql 、 Oracle 、 SQL server 、DB2
特点:按照一定的规则存储数据
常用的几种非关系型数据库( NOSQL)
Redis Mongodb Memcached
Mysql的特点:
开源且跨平台: unix linux windows
支持主流的编程语言:php java python ruby perl
可移植性好: 系统只要有C 运行环境即可运行Mysql
其可移植性体现如下:
A服务器
远程传宋Mysql数据库主目录到B服务器
scp -r /usr/local/mysql/ b:/usr/local/
B服务器上只需安装gcc和gcc-c++软件环境
yum -y install gcc gcc-c++
ls /usr/local/mysql/
1-2、数据库服务通常和网站服务一起使用:LAMP LNMP
L-----Linux A-----Apache N----Nginx
M-----Mysql P-----PHP
如购物网站 游戏网站 视频网站 论坛网站 金融网络
1-3、装包、配置、起服务、查看服务信息
软件包的来源? 官网下载 XXX . 主. 次. 修改次数
软件名 主版本 次版本 偶数为稳定版,奇数为测试版
mysql-5.7.17.tar
mysql-community-server-5.7.17-1.el7.x86_64.rpm
mysql-community-client-5.7.17-1.el7.x86_64.rpm
1-3-1、装包
rpm -qa | grep -i mariadb----检查有没有安装mariadb
systemctl stop mariadb-----若已安装则先停服务
rpm -e --nodeps mariadb-server-----卸载mariadb-server
rpm -e --nodeps mariadb-libs-------卸载mariadb-libs
rm -rf /var/lib/mysql/*------删除/var/lib/mysql/*主目录
rm -rf /etc/my.cnf------删除主配置文件
tar -xf /root/mysql-5.7.17.tar-----解压mysql-5.7.17.tar软件包组
yum -y install perl-JSON-----安装依赖包
rpm -Uvh mysql-community-*.rpm----批量安装解压出来的mysql-community的软件
rpm -qa | grep -i mysql---列出所有已安装的带有mysql名字的软件包
[root@host50 ~]# rpm -qa | grep -i mysql
mysql-community-libs-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
mysql-community-test-5.7.17-1.el7.x86_64
php-mysql-5.4.16-42.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-embedded-5.7.17-1.el7.x86_64
mysql-community-client-5.7.17-1.el7.x86_64
mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64
1-3-2、修改配置文件 /etc/my.cnf
[mysqld]
#skip_grant_tables------略过权限限制
#skip_networking----数据库只能被本机访问
#secure-file_priv=/mydata---------自定义数据导入导出文件存储的目录
1-3-3、启动服务
30 systemctl start mysqld
31 systemctl status mysqld
32 ls /var/lib/mysql
33 systemctl enable mysqld
1-3-4、查看服务信息
端口号 3306 ss -utnlp | grep mysqld
进程 mysqld ps -C mysqld
2、把数据存储到数据库服务器上的过程?
1 连接数据库服务器
# grep password /var/log/mysqld.log
2018-07-10T02:46:42.233732Z 1 [Note] A temporary password is generated for root@localhost: PjCJW&is,8jV
注意:第一次登陆的时候需要先用系统自动生成的密码,用该密码登陆后会提示您先改密码,否则什么也做不了
]#mysql -hlocalhost -uroot -p'PjCJW&is,8jV'
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "123456";
mysql> show databases;
mysql> quit
]#mysql -hlocalhost -uroot -p123456
mysql> show databases;
3、使用SQL (结构化查询语言)命令 管理数据库,
3-1、创建库 相当于系统的文件夹(查看 创建 切换 删除)
show databases;-----列出所有库名
create database 库名;----新建库
use 库名;-----进入某一个库
select database();-----查看当前在哪个库下
show tables;----列出库下的所有表,记得先进库
drop database 库名;-------删掉哪一个库
3-2、数据库名的命名规则:
1.可以使用数字、字母、下划线,但不能纯数字
2.区分大小写,且具有唯一性
3.不可以使用指令关键字、特殊字符
3-3、 创建表 ( 相当于系统文件)
***** 表必须在库里创建
(创建表 查看内容 查看表结构 删除表 写入数据)
create table studb.stuinfo(name char(15),sex char(10),age int,tel char(11) );-----创建表
desc studb.stuinfo;----查看表结构
select * from studb.stuinfo;-----查看表内容
insert into studb.stuinfo values("bob","boy",21,"8888888"),("zhaozhibin","boy",19,"66666666");---增加表内容
update studb.stuinfo set sex="girl";----改表内容
delete from studb.stuinfo;---删除表内容
drop table stuinfo;-----删除表
show tables;----列出所有表
4、断开与数据库连接
>quit;
5、指定表的字符集 可以存储中文数据
use studb;
create table studb.学生表 (姓名 char(10) , 年龄 int) DEFAULT CHARSET=utf8;----表名和字段名默认可以使用中文,但字段内容默认不能使用中文,所以必须加DEFAULT CHARSET=utf8
alter table studb.学生表 DEFAULT CHARSET=utf8;----通过修改表结构来加上DEFAULT CHARSET=utf8选项
show create table 学生表;-----展出创建的表结构
6、Mysql数据类型
1.数值型:工资、消费金额、身高、体重
2.字符型:电脑品牌、姓名、住址、花名
3.枚举类型:性别、兴趣爱好、特长
4.日期类型:出生日期、上学时间、下班时间
6-1、数值型
整数型
create table t2(level tinyint unsigned);---tinyint小整数,unsigned只保存正数
浮点类型
整数.小数 总宽度
1029.33 6
create table t3 (pay float(5,2));----float(5,2)小数位精确两位,总显示宽度为5,该显示宽度不会限制字段赋值的大小,但通过设置显示宽度的大小可以实现字符视觉整齐的效果,比如最大的数所占宽度为10,则设为10,不足位数的会用0补齐。
(数值类型)的宽度是显示宽度,不能限制字段赋值的大小字段值的大小由类型决定,仅适用于数值类型
insert into t3 values(1118.23);
6-2、字符类型
char (字符数)----- 定长,字符数最大255,不够指定字符时在右边用空格补齐,字符数超出时无法写入,特点,不省空间,但节省内存
varchar( 字符数)----- 变长,字符数最大到65535,按数据实际大小分配存储空间,字符数超出时无法写入,特点省空间,浪费内存
大文本类型
text/blob------字符数大于65535存储时使用
/root/media/film/xxx.avi
音频文件 图片 视频文件
create table t5(name char(5))
insert into t5 values ("bob"),("ab");
create table t6(name varchar(5))
insert into t6 values ("bob"),("ab");
写入后对比效果
create table t7 (
gamename char(15), level smallint unsigned , pay float(7,2) );
insert into t7 values("zbj",250,1880.22);
6-3、枚举类型 : 让字段的值 在规定的范围内选择
enum(值列表) 单选
set(值列表) 多选
create table t8 ( name char(15),sex enum("boy","girl","no"),likes set("game","film","eat","sleeps") );
insert into t8 values("bob","man","it,book");
搭建MySQL数据库服务器 并设置数据库管理员root用本机登陆密码为123456
6-4、日期时间类型:
年 year YYYY 2018
日期 date YYYYMMDD 20180711
时间 time HHMMSS 083000
日期时间 datetime YYYYMMDDHHMMSS----当未赋值时则为null
timestamp 20180711093758-----当未赋值时则以当前时间赋值
create table t1(
name char(15), 姓名
s_year year, 出生年份
birthday date, 生日
work time, 上班时间
meetting datetime 约会时间
);
desc t1;
insert into t1 values("pengyuyan",1990,220000,20181120,20181224203000);
MySQL服务时间函数: MySQL服务内置的命令。
select now();-------------- 获取系统日期时间
select year( now() );------ 获取系统年份
select year( 20191224 );---- 获取指定时间年份
select month( now() );-------获取系统月份
select month( 20191224 );--- 获取指定时间月份
select day( 20191224 );----- 获取指定时间几号
select day( now() );------- 获取系统时间几号
select date( now() );------- 获取系统日期
select time( now() );------- 获取系统时间
insert into t1 values("bob",year(now()),date(now()),time(151223),now());