1.什么是数据库
存储数据的的仓库.
2.一些常见的软件
主流的操作系统:
Unix Linux Windows
软件名 | 开源 | 跨平台 | 厂商 |
Oracl | 否 | 是 | 甲骨文 |
MYSQL | 是 | 是 | 甲骨文 |
SQL Server | 否 | 否 | 微软 |
DB2 | 否 | 是 | IBM |
Redis | 是 | 是 | 开源软件 |
Memcache | 是 | 是 | 开源软件 |
Mongodb | 是 | 是 | 开源软件 |
3.专业术语
DB (DataBase)
-数据库
-依照某中数据模型进行组织并存放到存储器的数据集合
DBMS (DataBase Management System)
-数据库管理系统
-用来操作和管理数据库的服务软件
DBS (DataBase System)
-数据库系统:即 DB+DBMS
-指带有数据库并整合了数据库软件的计算机系统
4. 特点及应用
主要特点:
-适用于中小规模,关系型数据库系统
-支持Linux Unix Windows等操作系统
-支持Python Java Perl PHP等编程语言
应用环境
-LAMP平台,与Apache HTTP Server组合
-LNMP平台,与Nginx组合
5. MySQL安装
准备环境
1.CentOS系统虚拟机1台
2.配置IP地址 (192.168.4.50) "我这配置的是192.168.4.50"
3.关闭防火墙 (firewalld)
4.把SElinux禁了
5.下载安装包RPM包 (官网下载 http://dev.mysql.com/downloads/mysql)如下包都得下载
mysql-community-client //客户端应用程序
mysql-community-common //数据库和客户端库共享文件
mysql-community-devel //客户端应用程序的库和头文件
mysql-community-embedded //嵌入式函数库
mysql-community-embedded-compat //嵌入式兼容函数库
mysql-community-embedded-devel //头文件和库文件作为Mysql的嵌入式
mysql-community-libs //MySQL 数据库客户端应用程序的共享库
mysql-community-libs-compat //客户端应用程序的共享兼容库
6.YUM配置好
一 安装软件
提示: 必须安装的软件包server client
]# tar -xvf mysql-5.7.17.tar
]# yum -y install mysql-community-*.rpm
]# rpm -qa | grep -i mysql
二 启动服务
提示: 首次启动服务,会执行数据初始化
~]# systemctl start mysqld //启动服务
~]# systemctl enable mysqld //开启运行
~]# systemctl status mysqld //查看状态
● mysqld.service - MySQL Server
Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
Active: active (running) since 三 2019-09-11 11:49:49 CST; 9h ago
~]# netstat -unltp | grep :3306 //查看服务信息
~]# ps -C mysqld //查看进程
三 相关参数
软件安装后自动创建相关目录与文件
文件 | 说明 |
/etc/my.cnf | 只配置文件 |
/var/lib/mysql | 数据库目录 |
默认端口号 | 3306 |
进程名 | mysqld |
传输协议 | TCP |
进程所有者 | mysql |
进程所属组 | mysql |
错误日志文件 | /var/log/mysqld.log |
四 MySQL初始配置
上边步骤配置好;下边配置如下:
数据库管理员名为 root
-默认仅允许root本机连接
-首次登录在安装软件时随机生成
-随机密码存储在日志文件 /var/log/mysqld.log 里
-连接命 mysql -h数据库地址 -u用户 -p密码
]# grep 'password' /var/log/mysqld.log //查看随机密码
]# mysql -hlocalhost -urooot -p'mtoa>AV<p6Yk' //连接
mysql> alter user root@"localhost" identified by "密码"
]# mysql -hlocalhost -uroot -p密码 //使用新密码登录
五 修改密码策略
策略名称 | 验证方式 |
0 or LOW | 长度 |
1 or MEDIUM(默认) | 长度;数字,小写/大写,和特殊字符; |
2 or STRONG | 长度;数字小写/大写和特殊字符;字典文件 |
mysql> show variables like "%password%"; //查看变量
mysql> set global validate_password_policy=0; //修改密码策略
mysql> set global validate_password_length=6; //修改密码长度
]# vim /etc/my.cnf //永久配置
[mysqld]
validate_password_policy=0
validate_password_length=6
:wq // 保存并退出
六 库管理命令
库类似与文件夹,用来存储表
-可以创建多个库,通过库名区分
-show databases; //显示已有的库
- select user(); // 显示连接用户
- use 库名; //切换库
- show database(); //显示当前所在的库
- create database 库名; // 创建新库
- show tables; //显示已有的表
- drop database 库名; //删除库
七 库名命名规则
-仅可以使用数字 字母 下划线 不能纯数字
-区分大小写 具有唯一性
-不可以使用指定关键字 特殊字符
mysql> create database DB1;
Query OK,1 row affected (0.06 sec)
mysql> create database db1;
Query OK, 1 row affected (0.51 sec)
八 表管理命令
-表存储数据的文件
mysql> create table 库名.表名(
字段1 类型(宽度),
字段2 类型(宽度),
)DEFAULT CHARSET =utf8; //指定中文字符集,可以给字段赋值中文
mysql> create table db1.a(
-> name char(15),
-> homeaddr char(20));
Query OK, 0 rows affected (0.09 sec)
九 表管理命令
表类似于文件
-desc 库名.表名; //查看表结构
-drop table 库名.表名 //删除表
mysql> desc db9.a;
+-------+---------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
+-------+---------+------+-----+---------+-------+
1 row in set (0.00 sec)
十 记录管理命令
-select * from 库名.表名; //查看表记录
-insert into 库名.表名 values(列表值); //插入表记录
-update 库名.表名 set 字段=值; //修改表记录
-delete from 表名; //删除表记录
mysql> insert into db1.stuinfo values("jim","usa"),("lilei","china");
mysql> select * from db1.stuinfo;
mysql> update db1.stuinfo set homeaddr= "beijing";
十一 常见信息种类
数值型
字符型
枚举型
日期时间型
定长char
定长:char (字符个数)
-最大字符个数255
-不够指定字符个数时在右边用空格补全
-字符个数超出时,无法写入数据
mysql> creat table db1.t1(
name char(5),
homedir char(50));
mysql> insert into db1.t1 values("bob","USA");
变长varchar
变长:varchar(字符个数)
-按数据实际大小分配存储空间
-字符个数超出时,无法写入数据
-大文本类型:text/blob
-字符数大于65535存储时使用
mysql> create table db1.t2(
name char(5),
email varchar(30)
);
mysql> insert into db1.t2 values("lucy","lucy@tedu.cn");
十二 数值类型
整数型
-只能存储整数
类型 | 名称 | 有符号范围 | 无符号范围 |
tinyint | 微小整数 | -128~127 | 0~255 |
smallint | 小整数 | -32768~32767 | 0~65535 |
mediumint | 中整型 | (-8 388 608,8 388 607) | (0,16777215) |
int | 大整数型 | (-2 147 483 648,2 147 483 647) | (0,4 294 967 295) |
bigint | 极大整型 | (-9 233 372 036 854 775 808,9 223 372 036 854 775 807) | (0,18 446 744 073 709 551 615) |
unsigned | 使用无符号存储范围 |
十三 f浮点型
浮点型
-格式1:字段吗 类型;
-格式2:字段名 类型(总宽度,小数位数)
类型 | 名称 | 有符号范围 | 无符号范围 |
float | 单精度 | -3.402523466E+38到 -1.175494351E-38 | 1.175494351E-38到 3.402823466E+38 |
double | 双精度 | -1.797631348623157E+309到 2.2250738585072014E-308 | 2.2250738585072014E-308到 1.7976931348623157E+308 |
日期时间类型
-日期时间 datetime
-范围:1000-01-01 00:00:00~9999-12-31 23:59:59
-格式:yyyymmddhhmmss
日期时间 timestamp
-范围:1970-01-01 00:00:00~2038-01-19 00:00:00
-格式:yyyymmddhhmmss
日期 date
-范围:0001-01-01~9999-12-31
-格式:yyyymmdd
年 year
-范围:1901~2155
-格式:yyyy
时间 time
-格式: HH:MM:SS
关于日期时间字段
-当为给timestamp字段赋值时,自动以当前系统时间赋值,而datetime值为NULL (空)
year 类型
-要求使用4位数赋值
-当使用2位数赋值时
-01~69视为 2001~2069
-70~99视为 1970~1999
时间函数
-MySQL服务内置命令
-可以使用时间函数给字段赋值
类型 | 用途 |
curtime() | 获取当前的系统时间 |
curdate() | 获取当前的系统日期 |
now() | 获取当前系统日期和时间 |
year() | 获取年 |
month() | 获取月 |
day() | 获取日 |
date() | 获取日期 |
time() | 获取时间 |
枚举类型
enum
-enum 单选:
-格式:字段名 enum(值1,值2,值N)
-仅能选择一个值
-字段必须在列表里选择
mysql> create table db1.t5(name char(5), sex enum("boy", "girl", "no"));
mysql> insert into db1.t5 values("bob", "man");
set
set多选
-格式:字段名 set(值1,值2 值N)
-选择一个或多个
-字段值必须在列表里选择
mysql> create table db1.t6(name char(5), like set("eat", "game", "music", "money"));
mysql> insert into db1.t6 values( "jerry", "eat,film");