01 day
一常识了解:
数据库:DB:DataBase
数据库管理系统:DBMS:DataBaseMange System
数据库系统 DBS DataBase System
数据模型 : E-R :Entity-Relationship Mode
LAMP LNMP
选择操作系统: Linux UNIX windows RHEL7 RHEL6
安装提供数据库服务的软件。
数据库服务软件有哪些?
Oracle(甲骨文):Oracle database ; MySQL/MariaDB
Microsoft(微软):SQL Server ;Access;
IBM :DB2
Sybase :Sybase
PostgreSQL :加州大学伯克利分校
关系型数据库软件:
Oracle DB2 \ SQL SERVER \ MySQL Saybases postgrepsql
非关系型数据库软件:
mongodb redis
名=值
key=values
哪些是商业软件?
哪些是开源软件?
是否跨平台?
软件包的来源?软件官网下载,
MySQL的特点?
在主机192.168.4.10运行MYSQL数据库服务。
++++++++++++++++++++++
克隆一台RHEL7虚拟机,配置要求如下:
配置固定ip 192.168.4.10
配置YUM源
关闭firewalld服务
禁用selinux
二.MySQL环境准备:
关闭iptables 关闭selinux
1.安装MYSQL
rm -rf mysql-community-server-min*
rpm -Uvh mysql-community-*.rpm
安装软件包
# yum -y remove mariadb-server mariadb
# rpm -qf /etc/my.cnf
# mv /etc/my.cnf /etc/my.cnf.old
#yum -y install perl-Data-Dumper perl-JSON #安装依赖包
#tar -xf mysql-5.7.17-1.el7.x86_64.rpm-bundle.tar #释放bundle整合包
· mysql-community-client-5.7.17-1.el7.x86_64.rpm //MySQL 数据库客户端应用程序和工具
· mysql-community-common-5.7.17-1.el7.x86_64.rpm //MySQL 数据库和客户端库共享文件
· mysql-community-devel-5.7.17-1.el7.x86_64.rpm //MySQL 数据库客户端应用程序的库和头文件
· mysql-community-embedded-5.7.17-1.el7.x86_64.rpm //MySQL嵌入式函数库
· mysql-community-embedded-compat-5.7.17-1.el7.x86_64.rpm //MySQL嵌入式兼容函数库
· mysql-community-embedded-devel-5.7.17-1.el7.x86_64.rpm //头文件和库文件作为Mysql的嵌入式库文件
· mysql-community-libs-5.7.17-1.el7.x86_64.rpm //MySQL 数据库客户端应用程序的共享库
· mysql-community-libs-compat-5.7.17-1.el7.x86_64.rpm //MySQL 5.6.31 数据库客户端应用程序的共享兼容库
· mysql-community-minimal-debuginfo-5.7.17-1.el7.x86_64.rpm //mysql最小安装包的调试信息
· mysql-community-server-5.7.17-1.el7.x86_64.rpm //非常快速和可靠的 SQL 数据库服务器
· mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm //非常快速和可靠的 SQL 数据库服务器(最小化安装)
· mysql-community-test-5.7.17-1.el7.x86_64.rpm //MySQL 数据库服务器的测试套件
#rm -rf mysql-community-server-minimal-5.7.17-1.el7.x86_64.rpm #删除冲突包
#rpm -Uvh mysql-community-*.rpm #升级安装
# rpm -qa | grep -i mysql #查看安装是否成功
2.启动服务
systemctl status mysqld
netstat -utnalp | grep :3306
ps -C mysqld
systemctl start mysqld
ls /var/lib/mysql #数据库默认存放位置
systemctl enable mysqld
3.连接数据库服务器之初始化设置
#mysql -hip地址 -u用户名 -p密码
#grep password /var/log/mysqld.log
#mysql -hlocalhost -uroot -p"fj.9xp8trudF"
mysql> set global validate_password_policy=0;
mysql> set global validate_password_length=6;
mysql> alter user root@"localhost" identified by "abc123"; #第一种方法
mysql> SET PASSWORD FOR 'root'@'localhost'=PASSWORD('1234567'); #第二种方法
mysql> show databases;
mysql> quit
#mysql -hlocalhost -uroot -pabc123
mysql>
三.MYSQL命令:
SQL 结构化查询语言
SQL命令使用规则?
SQL命令的分类?
数据库名的命名规则?
注意事项:
不区分大小写(密码,变量除外)
每条指令以;结束
不支持TAB自动补齐
\c可废弃当前操作指令
show databases; #查看所有数据库
create database 库名 #创建库;
drop database 库名; #删除库名
use 库名; #切换到某库
select database(); #查看当前所在库
show tables; #显示库里的表
create database studb; #创建studb库(student数据库)
use studb; #切换到studbs
· create table studb
`学号` char(9) NOT NULL,
· `姓名` varchar(4) NOT NULL,
· `性别` enum('男','女') NOT NULL,
· `手机号` char(11) DEFAULT '',
· `通信地址` varchar(64) DEFAULT NULL,
· PRIMARY KEY (`学号`)
· ) engine=Innodb default charset=utf8 #存储引擎和使其支持中文
show tables; #显示库的所有表
desc studb.stu; #显示studb库stu表结构
Desc查看表结构有什么?
字段名|字段类型|是否为空|是否为主键|默认值|描述信息
insert into studb.stu values("jim",20,"boy"),("tom",19,"boy"),("lucy",16,"girl"),("jack",15,"boy"); #添加stu表数据
select * from studb.stu; #显示stu表内容
delete from 库名.表名; #删除库名
drop table 库名.表名; #删除指定的数据库中的表
drop database 数据库名 #删除指定的数据库
操作思路:
存储数据
1 连接数据库服务器
#mysql -hlocalhost -uroot -pabc123
mysql>
2 创建数据库 create database 库名;
3 建表
use 库名;
create table 表名(
字段名 类型(宽度),
字段名 类型(宽度),
字段名 类型(宽度),
.....
);
4 插入表记录
insert into 库名.表 values(字段值列表),(字段值列表);
5 查看记录 select * from 库名.表;
6 断开连接 quit
四.mysql 数据类型:
数值类型 :整数和浮点 例如:体重,身高,成绩,工资
字符类型 : 例如:姓名、工作单位、通信地址
日期时间类型 例如;出生日期,注册时间
枚举类型 例如:兴趣爱好,性别
1.数值类型:
Unsigned 使字段保存整数
数值不够宽度,左边填空格补位
关键字zerofill填0代替空格补位
数值超出范围报错
mysql> create table t1 ( id tinyint);
mysql> create table t2 ( id tinyint unsigned);
mysql> create table t3 ( id int unsigned);
mysql> dest t1 ; desc t2 ; desc t3;
浮点型 2.78 23.66 定义格式:float(总宽度,小数位数)
单精度 4个字节 float
双精度 8个字节 double
整数.小数
字段名 类型(m,n)
m 总位数
n 小数位数
pay float(5,2)
xxx.xx
999.99
-999.99
mysql>create table t4(
age tinyint unsigned,
pay float(5,2)
);
mysql> desc t4;
2.字符类型:
普通文本 abc
char 255 定长
varchar 65532 变长
xxx.mp3
大文件类型: 视频 音频 图片
text
blob
c:\lxgq/music1/xxx.mp3
create table t7(
name char(5),
email varchar(10),
age tinyint
);
t1 t2
name name
varchar(4) char(4)
jerry jerry
lucy lucy
jim jim
ab ab
a a
cpu
3.日期时间类型
year 年 YYYY 例如:2017 出生年份
date 日期 YYYYMMDD 例如:20171017 生日
time 时间 HHMMSS 例如:171848 上班时间
日期时间类型 约会时间 注册时间
YYYYMMDDHHMMSS
datetime
timestamp
当未给TIMESTAMP字段赋值时,自动以当前系统时间赋值,而DATETIME字段默认赋值为 NULL(空)
mysql> create table t16(
meetting datetime,
party timestamp
);
insert into t16 values(19901218214558,20191224183000);
insert into t16(meetting) values(20191224183000);
select * from t16;
mysql> create table t15(
name char(10),
age tinyint unsigned,
pay float(7,2),
s_year year,
birthday date,
up_time time,
party datetime
);
insert into studb.t15 values( "tom",21,18800,1990,20171120,083000,20171024183000 );
select * from studb.t15
获取时间的函数: now() year() date() time() day()
select year(now());
select month(now());
select day(now());
select time(now());
select date(now());
insert into t16 values (now(),now());
mysql> insert into t15(name,s_year)
-> values( "jerry" , year( now() ) );
mysql> select name,s_year from t15;
insert into t16 values(now(),now());
++++++++++++++++++++++++++
在主机192.168.4.20上部署Mysql数据库服务器,设置数据库管理员root用户本机登录密码是123456;
创建学生库studb 使用stutab存储学生信息。
++++++++++++++++++
枚举类型
从给定值集合中选择单个值,enum
格式:enum(值1,值2,值N)
从给定值集合中选择一个或多个值,set
定义格式:set(值1,值2,值3)
create table studb.t21(
name char(10),
sex enum("boy","girl"),
likes set("film","game","music","it")
);
insert into studb.t21 values("jim","boy","film,game");
insert into studb.t21 values ("lucy",2,"it,game");
4.约束条件:
Null 允许为空
Not null 不允许为空
Key 索引类型
Default 设置默认值,却省为null
· mysql> CREATE TABLE family(
· -> name varchar(16) NOT NULL,
· -> gender enum('male','femal') DEFAULT 'male',
· -> birth date NOT NULL,
· -> job varchar(16) DEFAULT '',
· -> relation varchar(24) NOT NULL,
· -> PRIMARY KEY(name)
· -> );
mysql> DESC family;
create table studb.t22(
name char(10) not null ,
sex enum("boy","girl") not null,
likes set("film","game","music","it")
);
insert into studb.t22 values(null,null,null);
insert into studb.t22 values("null",null,null);
not null
create table studb.t23(
name char(10) not null ,
age tinyint unsigned default 21,
sex enum("boy","girl") not null default "girl",
likes set("film","game","music","it") default "film,game"
);
insert into t23(name)values("tom");
select * from t23;
五.修改表结构
mysql> alter table 库.表 执行动作;
1.add添加新字段
add 字段名 类型(宽度) 约束条件;
add 字段名 类型(宽度) 约束条件 after 字段名,
add 字段名 类型(宽度) 约束条件 first;
alter table studb.t23 add email varchar(30) not null default "[email protected]" ;
alter table studb.t23
add stu_id char(7) first;
alter table studb.t23
add birthday date after age ,
add s_year year after name;
2.删除已有字段:
drop 字段;
drop 字段,drop 字段;
alter table studb.t23 drop email;
3.修改字段类型
modify 字段 类型(宽度) 约束条件;
alter table studb.t23
modify
sex enum("boy","girl","no") not null default "no";
alter table t22 modify likes set('film','game','music','it') after name;
4.修改字段名
change 源字段名 新字段名 类型(宽度) 约束条件;
alter table studb.t22 change likes love set('film','game','music','it');
5.修改表名
alter table 源表名 rename 新表名;
alter table t1 rename teatab;
+++++++++++++++++++++++++