环境准备
克隆一台新的rhel7虚拟机
配置yum源
关闭防火墙
禁用selinux
配置好ip地址
++++++++++++++++++++++
一、基础入门
1.1 什么是数据库?是一种服务,存储数据的仓库
1.2 提供服务的软件有那些?
Mysql Oracle SQL SERVER mongodb DB2
选软件考虑的因素?
是否跨平台 (Linux Unix Windows)
Redhat
开源软件 or 商业软件
即开源又跨平台?
软件包的来源? 从官网下载 安装光盘自带
mysql mariadb-server
软件的封包类型? rpm 源码包
1.3 搭建MYSQL数据库服务器并设置数据库管理员本机登录的
密码为123456
a 购买服务器(存储 CPU 内存) DELL HP 联想
b 安装操作系统RHEL7.2
c 安装提供数据库服务的软件包(mysql)
# rpm -qa | grep -i mariadb
# rpm -e --nodeps mariadb-libs
# rpm -qa | grep -i mariadb
#rm -rf /etc/my.cnf
#yum -y install perl-Data-Dumper perl-JSON
# tar -xvf xxxx.tar
# rm -rf mysql-community-server-minimal-5.7.17-
1.el7.x86_64.rpm
#rpm -Uvh mysql-community-*.rpm
#rpm -qa | grep -i mysql
#systemctl start mysqld
#systemctl status mysqld
#systemctl enable mysqld
服务名 mysqld
进程名 mysqld
进程的所有者/组 mysql/mysql
数据传输协议 tcp
端口号 3306
主配置文件 /etc/my.cnf
数据库目录 /var/lib/mysql
日志文件 /var/log/mysqld.log
客户端访问数据库服务器(命令行 图形工具)
*没有授权时,只允许数据库管理员root用户从本机访问
#mysql -hlocalhost -uroot -p密码
[root@localhost ~]# grep -i "password"
/var/log/mysqld.log
2017-06-19T02:07:11.746572Z 1 [Note] A temporary
password is generated for root@localhost: *?F(sfa;M3jy
[root@localhost ~]#
[root@localhost ~]# mysql -hlocalhost -uroot -p"*?F
(sfa;M3jy"
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by
"123456";
mysql>quit
[root@localhost ~]# mysql -hlocalhost -uroot -
p123456
mysql> show databases;
mysql>quit
vim /etc/my.cnf
[mysqld]
validate_password_policy=0
validate_password_length=6
:wq
# systemctl restart mysqld
#mysql -hlocalhost -uroot -p123456
mysql>
数据库服务通常和网站服务一起使用。LAMP LNMP
购物网站 游戏网站 论坛网站 金融网站 php java html css
数据库存储那些数据?注册帐号和密码
购物信息
储蓄信息
帖子内容
1.4 数据库服务的基本使用
把数据存储到数据库服务器上的过程?
1 连接数据库服务器
mysql -hlocalhost -uroot -p123456
2 创建新库 (文件夹)
3 创建表(文件)
4 向表中插入记录
5 查看记录
6 断开连接
SQL命令使用规则?
每条命令必须以;结尾
命令不区分字母大小写
c 结束命令
管理库的相关命令
show databases;
create database 库名;
select database();
use 库名;
show tables;
drop database 库名;
管理表的相关命令
create table 表名(字段名 类型(宽度),字段名 类型(宽
度));
mysql> create table regtab(name char(10),password
char(6));
desc 表名;
desc regtab;
帐号名 密码
plj 123456 记录
jim 654331
tom 111199
insert into regtab values("plj","123456"),
("jim","654321"),("tom","111199");
select * from 表名
select * from regtab;
delete from 表名;
delete from regtab;
drop table 表名;
drop table regtab;
表名和库名的命名规则?
具有唯一
区分字母大小写
使用数字 字母 _ 命名 、不允许是纯数字
不允许使用特殊符号 和 命令关键字
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
mysql数据类型
字符类型 姓名 家庭地址 籍贯
char 255 定长
varchar 65532 变长
大文本类型
text
blob
create database studb;
use studb;
create table t1(
name char(10),
homeaddr varchar(50)
);
insert into t1 values("lucy","beijing");
select * from t1;
create table t2(image blob,name text);
t1 t2
name name
char(10) varchar(10)
a abc
数值类型 : 年龄 成绩 身高 体重 工资
11 12.23
+11 -19.23
-12
整型 (根据存储数字的范围又 划分为如下类型)
有符号 无符号
tinyint -128~127 0-255
smallint
MEDIUMINT
int
bigint
create table t5(name char(10) ,age tinyint
unsigned);
create table t6(name char(10) ,age tinyint ,level
tinyint);
create table t7(name char(10) ,age tinyint
unsigned,level tinyint);
insert into t7 values("jim",-11,101);
数值类型的宽度 是显示宽度,不能够控制给字段赋值,字段值的
大小由类型决定。
create table t8(name char(3),level int(3));
insert into t8 values("lucy",10224);
create table t12 (id int(2) zerofill,level int zerofill);
insert into t12 values(9,7);
浮点型 (能存储带小数点的数) 19.23 21.75
float
double
整数.小数
1023.88
xxx.xx
999.99
-999.99
float(5,2)
create table t13 (name char(10),age tinyint(2)
unsigned,pay float(7,2));
insert into t13 values("bob",21,18800.23);
insert into t13 values("tom",29,118800.23);
+++++++++++++++++++++++++++++++
日期时间类型 注册时间 上课时间 开会时间 生日 入职
年 year YYYY 2017
日期date YYYYMMDD 20170619
时间time HHMMSS 160258
日期时间类型YYYYMMDDHHMMSS 20170619160258
datetime
timestamp
create table t14 (
name char(10),
age tinyint(2) unsigned,
pay float(7,2),
s_year year,
birthday date,
up_class time,
meetting datetime
);
insert into t14 values
("bob",21,18800,1990,20170818,083000,20170707204
523);
使用时间函数给日期时间类型字段赋值
now()
year()
date()
month()
day()
time()
insert into t14 values("lilei",21,18800,year(now
()),date(now()),time(20150718231458),now());
insert into t14 values("hanmm",21,18800,now(),now
(),now(),now());
使用2位数字给year字段赋值,要遵循如下规律?
01-69 20XX
70-99 19XX
00 0000
100 报错
insert into t14 values("lee",21,18800,69,now(),now
(),now());
datetime与timestamp 的区别?
create table t15(
meetting datetime,
partty timestamp
);
insert into t15 values(now(),now());
insert into t15(meetting) values(20171020091828);
insert into t15(partty) values(20191020091828);
select * from t15;
+++++++++++++++++++++++++
枚举类型 性别 专业 科目 爱好
(字段值只能在列举的范围内选择)
enum(值列表) 单选
set (值列表) 多选
create table t16 (
name char(10),
age tinyint(2) unsigned,
sex enum("boy","girl","no"),
likes set("it","book","film","game")
);
insert into t16 values("bob",21,"boy","it,game");
insert into t16 values("jim",21,"no","music,game");
insert into t16 values("jerry",21,2,"it,game")
mysql> desc mysql.user;
mysql> desc mysql.tables_priv;
字段约束条件:功能限制如何给字段赋值
Null 字段是否允许赋null值 空 默认允许赋null值
Key 索引
Default 字段的默认值,默认值的值是null
不给字段赋值值使用默认值给字段赋值
default 值
Extra 额外设置(自动增长)
create table t17 (
name char(10) not null ,
age tinyint(2) unsigned default 22 ,
sex enum("boy","girl","no") not null default "boy",
likes set("it","book","film","game") default "it,book"
);
insert into t17(name) values("bob");
insert into t17 values("jim",29,"no","film,game");
insert into t17 values("",NULL,"boy",NULL);
insert into t17 values("NULL",NULL,"boy",NULL);
insert into t17 values(null,NULL,"boy",NULL);
在ip地址是 192.168.4.101上部署数据库服务并设置数据库管理员的密码是abc123 创建studb库 创建存储学生信息的表stuinfo