点 | 描述 |
---|---|
/etc/my.cnf | MySQL主配置文件 |
/var/lib/mysql | 数据库目录 |
3306 | 默认端口号 |
mysqld | MySQL主进程名称 |
TCP | 传输协议 |
mysql:mysql | 进程所有者与所属组 |
/var/log/mysqld.log | 错误日志文件 |
数据库:数据库不存放数据,存放数据的数据(metadata,元数据)
性能:CPU>内存>磁盘>数据库
数据库查询能力很顶,所以数据库放的是数据的元数据,需要时根据元数据查找数据本身.
Mysql是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。
现在创始人为了应付闭源风险,又写了个Mariadb。
(Mysql和 Mariadb不完全兼容,两个软件配置文件和数据库位置一模一样,因此不能同时存在)
MySQL的安装部署
1.下载mysql的RPM包并起服务,随机密码放在日志中(/var/log/mysqld.log)
2.登录后通过ALTER USER配置密码,不然数据库无法正常使用。
#密码规则:8位且包括数字+大小写+特殊符号
mysql>alter user user() identified by “123456”;
MySQL数据库基本管理
1.数据库操作基本流程
✓ 连接登陆数据库
✓ 创建数据库
✓ 创建数据表
✓ 插入数据记录
✓ 断开连接
连接 MySQL 的方法:命令行、Web 网页、安装图形软件、编写脚本(PHP、java…)
图形管理工具—>phpmysqladmin(开源),navicat(教学可能会侵权,自己去看)
##Navicat(能管理各种数据库)
注意事项:
操作指令不区分大小写(密码和变量除外)
每条SQL语句都以分号;结束
默认不支持Tab键补齐
\c 可以取消书写错误的命令
常用的SQL命令分类:
DDL(Database Define Language)数据定义语言(create,alter,drop)
DML(D,Manger,L))数据操作语言(insert,update,delete)
DCL(D,Control,L)数据控制语言(grant,revoke)
DTL(D,Task,L) 数据事务语言(commit,rollback,savepoint)
(事务—>由多条命令组成,要么全ok要么全不ok)
基本命令:
-show databases; #查看数据库
-use mysql; #切换数据库
-select database(); #查看当前数据库
-create database tts character set utf8mb4; #创建数据库
tips:数据库命令规则
(由数字,字母,下划线组成;不能是纯数字;区分大小写;不能使用关键词或特殊符号)
注:8以前命令要打全utf8mb4
utf8 #支持中文
utf8mb4 #支持中文+表情+特殊汉字
-drop database tts; #删除数据库
-drop table school.student; #直接删表
-show character set; #查看所有可用编码
-create database school character set utf8mb4; #创建数据库
-create table school.student( #创表
-> 学号 char(20),
-> 姓名 char(20),
-> 性别 char(5),
-> 手机号 int(11),
-> 通信地址 char(50));
-desc school.student
-select * from student; #查看student表
-insert into school.student values('654351987','爸爸的爸爸','不详','1200000000','同上'); #填表(增)
-update school.student set 性别='不详' where(条件) 性别='男'; #改表
-delete from school.student where 性别=’男’; #删表
-delete from school.student; #删表所有,表还在
MySQL 数据类型
数值型:体重,身高,成绩,工资,金额
字符型:身份证,手机号,姓名,地址
枚举型: 爱好,性别,专业
日期时间型:出生日期,注册时间
1.字符型:
类型 描述
char(字符数) 固定长度,最大长度255字符,不够指定的字符数时自动在右边填补空格,超出指定字符数则无法写入。
varchar(字符数) 可变长度,根据实际数据大小分配存储空间,超出指定字符数则无法写入。
text/blob 字符数大于65535时使用。
注意:
char和varchar对比:
1.varchar空间利用率高;char查找性能更好.
text/blob:
用得少,查找的时候难查找.
duplicate
#另外,设计数据库:考虑未来5-10年的数据存储问题
2.数值类型
类型 范围(有符号) 范围(无符号) 用途
tinyint -128~127 0~255 微小整数
smallint -32768~32767 0~65535 小整数
mediumint -223~223-1 0~224-1 中整数
int -231~231-1 0~232-1 大整数
bigint -263~263-1 0~264-1 极大整数
float -3.402823466E+38
到
-1.175494351E-38 1.175494351E-38
到
3.402823466E+38 单精度浮点数(M,D)
double -1.7976931348623157E+308
到
-2.2250738585072014E-308 2.2250738585072014E-308
到
1.7976931348623157E+308 双精度浮点数(M,D)
#(M,D),其中 M 为总宽度,D 为小数位数,M 应大于 D
#使用 unsigned 标记无符号存储
注意:
1.在float数据中,输入时整数合法,小数超初,系统会四舍五入;
2.在int数据中,只要在范围中即使超了设定范围,也可以输入;
例如:int(6)--->不够6个补够6个,超出6个只要在范围内也是可以的.
3.日期类型(五个)
-datetime
日期时间类型,范围11000-01-01 00:00:00:000000~9999-12-31 23:59:59.999999
#如果不给该类型的数据赋值,则默认为NULL
-timestamp
日期时间类型,范围 1970-01-01 00:00:00:000000~2038-01-19 03:14:07.999999
#如果不给该类型的数据赋值,则mysql自动为其分配当前的系统时间
-date 纯日期
-year 纯年份
-time 纯时间
4.枚举类型 可穷尽的可能
-enum(值1,值2,值3)
-set(值1,值2,值3)