初识数据库
数据库优势
程序稳定性:程序崩溃不会影响数据和服务
数据一致性:所有数据存储在一起
并发:数据库本身支持并发
效率:使用数据库对数据进行的增删改查效率要高
数据: 描述事物的符号记录称为数据 (Data)
数据库: 专门用来存储数据 (DataBase,简称DB)
mysql: 数据库软件 (DataBase Management System 简称DBMS)
数据库管理员 管理数据库软件(DBA)
数据库服务器-:运行数据库管理软件
数据库管理软件:管理-数据库
数据库:即文件夹,用来组织文件/表
表:即文件,用来存放多行内容/多条记录
数据库分类
关系型数据库(表结构):
特点相对慢,数据关联性强
关系型数据库 : mysql oracle sqllite sql server db2 access
非关系型数据库(key,value):
特点相对快,数据与数据的关联性小
非关系型数据库 : redis mongodb memcache
区别:关系型数据库存储效率相对低,数据与数据之间关联紧密
关系型数据库存储效率相对高,数据与数据之间的关系是key:value
Mysql语句分为三种(了解)
DDL 语句, 数据库定义语言:数据库,表,视图,索引,存储过程,例如create,drop,alter
DML 语句,数据库操纵语言:插入、删除、更新、查询数据,insert,delete,update,select
DCL 语句, 数据库控制语言:用户的访问权限,grant,revoke
Mysql 默认三个数据库:
mysql:保存mysql权限,配置参数,状态信息,主从配置
information_schema: 保存着mysql维护其他数据库信息,如库名,表和访问权限等
performance_schema:数据库存储引擎,监视数据库运行的资源消耗,资源等待等等
Mysql工作流程:
登录授权认证安全:
查询,解析,分析,优化,缓存
存储过程,触发器,视图
存储和提取数据
存储数据,表信息,用户操作日志
MySql 安装:
路径不能有中文
路径不能有特殊字符
环境变量
python -->python.exe
在任何目录下都能够找到python.exe文件
才能在任意位置输入python命令启动python解释器
Mysql
mysqld install 安装mysql服务 mysql服务就被注册到操作系统中
net start mysql 启动mysql服务
net stop mysql
启动客户端连接server
mysql-uroot -p123 -h192.168.14.12mysql>select user(); 查看当前登录的用户
mysql>set password = password('123'); 给当前用户设置密码
创建一个其他用户
create user'guest'@'192.168.14.%' identified by '123';
给一个用户授权
grant 权限类型 on ftp.* to 'guest'@'192.168.14.%';
grant all
grant select on day37.* to 'guest'@'192.168.14.%';
grant select,insert
安装(启动,关闭)
cmd管理员
mysqld install 安装mysql服务 mysql服务就被注册到操作系统中
net start mysql 启动mysql服务
net stop mysql
View Code
默认用户登陆
#默认用户登陆之后并没有实际操作的权限#需要使用管理员root用户登陆
mysql -uroot -p #mysql5.6默认是没有密码的#遇到password直接按回车键
View Code
给当前用户设置密码
mysql>select user(); 查看当前登录的用户
mysql>set password = password('123'); 给当前用户设置密码
View Code
启动客户端连接server
#远程登陆
启动客户端连接server
mysql-uroot -p123 -h192.168.14.12 #-p可以加密码但是不建议 -h写连接server的ip地址
View Code
创建用户
#创建一个其他用户
mysql>create user 'guest'@'192.168.14.%' identified by '123';
创建 用户"guest"@"ip"identified 密码#server查看用户
mysql>mysql -uguest -p123 -h192.16.14.200;
View Code
链接
mysql为我们提供开源的安装在各个操作系统上的安装包,包括ios,linux,windows。
mysql的安装、启动和基础配置 —— linux版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— mac版本 (https://www.cnblogs.com/Eva-J/articles/9664401.html)
mysql的安装、启动和基础配置 —— windows版本 (https://www.cnblogs.com/Eva-J/articles/9669675.html)
存储引擎
数据的存储方式-->存储引擎
使用不同的存储引擎,数据是已不同方法存储的
查看存储引擎:show engines;
Innodb:
Innodb存储引擎 mysql5.6之后的默认的存储引擎
数据和索引存储在一起 2个文件
数据索引\表结构
数据持久化
支持事务 : 为了保证数据的完整性,将多个操作变成原子性操作 : 保持数据安全
支持行级锁 : 修改的行少的时候使用 : 修改数据频繁的操作
支持表级锁 : 批量修改多行的时候使用 : 对于大量数据的同时修改
支持外键 : 约束两张表中的关联字段不能随意的添加\删除 : 能够降低数据增删改的出错率
Myisam存储引擎
Myisam存储引擎 mysql5.5之前的默认的存储引擎
数据和索引不存储在一起 3个文件
数据\索引\表结构
数据持久化
只支持表锁
Memory存储引擎
Memory存储引擎
数据存储在内存中, 1个文件
表结构
数据断电消失
数据库DDL 语句
操作数据库
查看所有数据库 show databases;
创建一个数据库 create database 数据库名;
切换到这个库下 use 数据库的名字
查看这个库下有多少表 show tables;
操作表
创建一张表
create table student(name char(12),age int);
删除表名
drop table student
查看表结构
desc student;
操作数据
插入数据 : insert into student values ('wusir',73);
查询数据 : select* fromstudent;
修改数据 : update student set age=85 where name='alex';
删除数据 : deletefrom student where name = 'alex';
表和数据的基础操作
表的操作
三种方式
写入数据
insert into 表 values()
写入数据的方式
insert into 表 values (值1,值2,值3);
这张表有多少的字段,就需要按照字段的顺序写入多少个值
insert into 表 values (值1,值2,值3),(值1,值2,值3),(值1,值2,值3);
一次性写入多条数据
insert into 表 (字段1,字段3 ) values (值1,值3);
指定字段名写入,可以任意的选择表中你需要写入的字段进行
View Code
查看中的数据
查表中的数据
select* from表
查看表结构
desc 表名;
能够查看到有多少个字段\类型\长度,看不到表编码,引擎,具体的约束信息只能看到一部分
show create table 表名;
能查看字段\类型\长度\编码\引擎\约束
View Code
数字类型
常用 int,float
定义无符号 unsigned
int 不约束长度,最多表示10位数
float(m,n)
m 一共多少位,
n 小数部分多少位#int
create table t1(
id int,#默认是有符号的
age tinyint unsigned #如果需要定义无符号的使用unsigned
);#float double
create table t2(
f1 float(5,2), #保留2位小数 并四舍五入
f2 float,
f3 double(5,2),
f4 double
)
insert into t2(f2,f4) values(5.1783682169875975,5.1783682169875975179);#float decimal
create table t3(
f1 float,#保留2位小数 并四舍五入
d1 double,
d2 decimal(30,20),
d3 decimal
);
View Code
时间
常用 time,date,datetime
date 20190620time121953datetime20190620121900datetime 年月日时分秒
year 年
date 年月日
time 时分秒
timestamp 时间戳
create table t4(
dt datetime,
y year,
d date,
t time,
ts timestamp
);
mysql>create table t5(->id int,-> dt datetime NOT NULL #不能为空
DEFAULT CURRENT_TIMESTAMP #默认是当前时间
ON UPDATE CURRENT_TIMESTAMP); #在更新的时候使用当前时间更新字段
View Code
字符串
常用 char,varchar
char(18) 最多只能表示255个字符
定长存储,浪费空间,节省时间
'alex' 'alex '
varchar(18) 最多能表示65535个字符
变长存储,节省空间,存取速度慢
'alex' 'alex4'
适合使用char
身份证号
手机号码
qq号
username12-18password32银行卡号
适合使用varchar
评论
朋友圈
微博
create table t6(c1 char(1),v1 varchar(1),c2 char(8),v2 varchar(8));
create table t6(c1 char,v1 varchar(1),c2 char(8),v2 varchar(8));
View Code
enum和set
enum 单选
枚举类型,它的值范围需要在创建表时通过枚举方式显示。</