Mysql 基础知识总结
数据库 : DB
所有的数据存放的仓库
每一个文件夹也是一个数据库
数据库管理系统 – 软件 DBMS
关系型数据库 : mysql oracle sqllite sql server db2 access
非关系型数据库 : redis mongodb memcache
数据库管理员 DBA
管理数据库软件
数据库服务器 :一台跑着一个数据库管理软件的机器
表 : 文件,一张存储了数据的表
数据/记录 : 表中的信息,一行就是一条记录。
使用mysql --------用户相关操作
查看当前用户是谁? select user();
给当前用户设置密码 set password = password(‘123’);
创建用户 create user ‘用户名’@‘主机的ip/主机域名’ identified by ‘密码’
授权 grant select on 数据库名.* to ‘用户名’@‘主机的ip/主机域名’ identified by ‘密码’
授权并创建用户 grant select on 数据库名.* to ‘用户名’@‘主机的ip/主机域名’
mysqld install 安装mysql服务 mysql服务就被注册到操作系统中
net start mysql 启动mysql服务
net stop mysql 关闭mysql
启动客户端连接server
mysql -uroot -p123 -h192.168.14.12(这里也可以填域名,代表这个域名也可以连接mysql)
基础的库\表\数据操作
库 - 文件夹
创建库 **create database** 数据库名;
切换到这个库下 use 库名
查看所有库 show databases;
表 - 文件
查看这个库下的所有表 show tables;
创建表 create table 表名(字段名 数据类型(长度),字段名 数据类型(长度),..);
删除表 drop table 表名;
查看表结构 desc 表名;
describe 表名;
数据(记录) - 文件中的内容
增 : insert into 表 values (一行数据),(一行数据),(一行数据);
删 : delete from 表 where 条件;
改 : update 表 set 字段名=值,字段2=值2 where 条件;
查 : select 字段 from 表;
存储引擎:-- 存储数据的方式。
常用的存储引擎 :Innodb存储引擎 mysql5.6之后的默认的存储引擎 (一般都用这个)
数据和索引存储在一起 2个文件
数据索引\表结构
好处:
数据持久化
支持事务 : 为了保证数据的完整性,将多个操作变成原子性操作 : 保持数据安全
支持行级锁 : 修改的行少的时候使用 : 修改数据频繁的操作
支持表级锁 : 批量修改多行的时候使用 : 对于大量数据的同时修改
支持外键 : 约束两张表中的关联字段不能随意的添加\删除 : 能够降低数据增删 改的出错率
Myisam存储引擎 mysql5.5之前的默认的存储引擎
数据和索引不存储在一起 3个文件
数据\索引\表结构
数据持久化
只支持表锁
Memory存储引擎
数据存储在内存中, 1个文件
# 表结构
数据断电消失
面试题(例子)
你了解mysql的存储引擎么?
你的项目用了什么存储引擎,为什么?
# innodb
# 多个用户操作的过程中对同一张表的数据同时做修改
# innodb支持行级锁,所以我们使用了这个存储引擎
# 为了适应程序未来的扩展性,扩展新功能的时候可能会用到...,涉及到要维护数据的完整性
# 项目中有一两张xx xx表,之间的外键关系是什么,一张表的修改或者删除比较频繁,怕出错所以做了外键约束
创建表的时候 数据类型
数字 : int float(7,2) --------
int 不约束长度,最多表示10位数,
float(m,n)
# m 一共多少位,
# n 小数部分多少位
例子:
create table t1(
id int, # 默认是有符号的
age tinyint unsigned # 如果需要定义无符号的使用unsigned
);
日期 : date time datetime year
date : 20190620
time :121953 ----12点19分53秒
datetime :20190620121900
# 字符串 :
# char 定长 效率高浪费空间 255
# 'alex' 'alex ' (多余字符用空格代替)
# varchar 变长 效率低节省空间 65535
适合使用char
身份证号,手机号码, qq号,username 12-18,password 32, 银行卡号。。。
适合使用varchar
评论,朋友圈, 微博。。
# enum 和 set :
# 单选和多选
例子------
create table t8(
id int,
name char(18),
gender enum(‘male’,‘female’)
)
create table t9(
id int,
name char(18),
hobby set(‘抽烟’,‘喝酒’,‘烫头’,‘洗脚’,‘按摩’)
);
insert into t9 values (1,‘太白’,‘烫头,抽烟,喝酒,按摩’);
insert into t9 values (1,‘大壮’,‘洗脚,洗脚,洗脚,按摩,打游戏’);
约束 -----(给表做架构时可以加的约束)
# unsigned 无符号的
# not null 非空
# default 设置默认值
# unique 唯一,不能重复
# unique(字段1,字段2,字段3) 联合唯一
# auto_increment 自增
只能对数字有效.自带非空约束
至少是unique的约束之后才能使用auto_increment
# int 必须至少unique字段,自带not null
# primary key 主键
# not null + unique (如果不指定默认第一个非空+唯一的就是主键)
# 一张表只能有一个主键
# foreign key 外键
Foreign key(自己的字段) references 外表(外表字段)
# a表中有一个字段关联b表中的一个unique
# a表中的是外键
例子:----------
create table t11(
id int unsigned not null,
name char(18) not null
); ------------ 无符号,非空的
create table t12(
id int unsigned not null,
name char(18) not null,
male enum(‘male’,‘female’) not null default 'male’s
); ---------只能选男或者女 ,默认不填选男
不能重复 unique 值不能重复,但是null可以写入多个
create table t13(
id1 int unique,
id2 int
)
联合唯一 unique
create table t14(
id int,
server_name char(12),
ip char(15),
port char(5),
unique(ip,port)
); -----------------ip 和端口不能都是一样的
自增
create table t20(
id int primary key auto_increment,
name char(12)
);
insert into t20(name) values(‘alex’);
外键
班级表
create table class(
cid int primary key auto_increment,
cname char(12) not null,
startd date
)
‘’’
- 学生表
create table stu(
id int primary key auto_increment,
name char(12) not null,
gender enum(‘male’,‘female’) default ‘male’,
class_id int,
foreign key(class_id) references class(cid)
)
建表
# create table 表名(
# 字段名1 类型(长度) 约束,
# 字段名1 类型(选项) 约束,
# );
本文地址:https://blog.csdn.net/weixin_48364580/article/details/108987789
上一篇: Mysql下载以及进入MySQL遇到的各种问题集合
下一篇: 哈啰出行如何申请注销账号?