目录
一、数据库的相关了解
1.数据库的概念
数据(Data)
- 描述事物的符号记录
- 包括数字、文字、图形、声音、档案记录等
- 以“记录”形式按统一的格式进行存储
表
- 将不同的记录组织在一起
- 用来存储具体数据
数据库(database)
- 表的集合,是用来组织、存储和管理数据的仓库
数据库管理系统(DBMS)
- 是实现对数据有效组织,管理和存取的系统软件
- 数据的建立和维护功能,数据定义功能,数据操纵功能,数据库的运行管理功能,通信功能
数据库系统
- 是一个人机系统,由硬件,os,数据库,DBMS ,应用软件和数据库用户组成
- 用户可以通过DBMS 或则 应用程序来操作数据库
2.数据库系统发展史
3.当今主流数据库介绍
4.数据库的分类
随着时代的发展,当今数据库可分为两大类:关系数据库(SQL)和非关系数据库(NO SQL)两大类
关系数据库
- 关系数据库系统是基于关系模型的数据库系统、
- 关系模型的数据结构使用简单易懂的二维数据表
- 关系模型可用简单的“实体-关系”(E-R)图来表示
- E-R图中包含了实体(数据对象)、关系和属性三个要素
(1)非关系型数据库
-
非关系数据库也被称为NoSQL(Not Only SQL)
-
存储数据不以关系为依据,不需要固定的表格式
(2)非关系型数据库的优点
- 可高并发读写
- 对海量数据依旧保持着高效率的存储和访问
- 具有高扩展性和高可用性
(3)关系数据库的存储结构是二维表格
在每个二维表格中
- 每一行称为一条记录,用来描述一个对象的信息
- 每一列成为一个字段,用来描述对象的一个属性
二、mysql的yum安装与源码编译安装
1.源码编译安装mysql
可以去看我的这一篇有详细步骤
2.yum安装 mysql5.7
1. #创建mysql安装包的在线源
cd /etc/yum.repos.d/
vim mysql.repo
[mysql]
name=mysql5.7
baseurl=https://mirrors.tuna.tsinghua.edu.cn/mysql/yum/mysql-5.7-community-el7-x86_64/
gpgcheck=0
2. #安装服务mysql-community-server
yum -y install mysql-community-server
3. #启动服务
systemctl start mysqld
ss -ntap |grep 3306
4. #此时无法使用mysql命令直接登入数据库。需要查看本地root用户的默认密码,使用密码登录。
grep password /var/log/mysqld.log #查看默认密码
mysql -u root -p'34/Jeoiq0fZb' #使用密码登录,特殊符号用单引号引起来
5. #登入数据库后必须修改密码。
mysql> alter user root@'localhost' identified by 'abc123';
#为保证安全,密码的复杂性要足够,需要包含英文字母大小写、数字和特殊字符。
#可以使用"\h;"查看帮助
数据库当前使用的端口查看:
show global variables like 'port';
三、mysql的数据类型
1.常用的数据库类型
类型名称 | 含义 |
tinyint(n) | 1个字节,范围(-128~127) |
smallint(n) | 2个字节,范围(-32768~32767) |
mediumint(n) | 3个字节,范围(-8388608~8388607) |
int(n) | 4个字节(32个比特位),整数型,范围(-2147483648~2147483647) |
bigint(n) | 8个字节,整数型,范围(+-9.22*10的18次方) |
float(m,d) | 单精度浮点,8位精度,4字节32位。m数字总个数,d小数位 |
double(m,d) | 双精度浮点,16位精度,8字节64位 。m总个数,d小数位 |
char | 固定长度的字符类型 |
varchar | 可变长度的字符类型 |
text | 文本 |
image | 图片 |
decimal(5,2) | 5个有效长度数字,小数点后面有2位(例如123.56) |
2.char与varchar的区别
值 | CHAR(4) | 存储需求 | VARCHAR(4) | 存储需求 |
---|---|---|---|---|
'' | ' ' | 4个字节 | '' | 1个字节 |
'ab' | 'ab ' | 4个字节 | 'ab ' | 3个字节 |
'abcd' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
'abcdefgh' | 'abcd' | 4个字节 | 'abcd' | 5个字节 |
CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。它们的最大长度和是否尾部空格被保留等方面也不同。在存储或检索过程中不进行大小写转换。
字节大小:
- char无论是否有值,都会占用固定长度的字节大小,保存在磁盘上都是4字节
- varchar在保存字符时,默认会加一个隐藏的结束符,因此结束符会多算一个字节
优劣比较:
- varchar比char节省磁盘空间
- 但varchar类型的数据读写速度比char慢,因为char是连续的磁盘空间,e而varchar在多次增删改查中会产生一些磁盘空间碎片
四、相关命令操作
1.增删改查命令操作
mysql -u root -pabc123 #登录数据库
2.查看数据库结构
(1)查看当前的 MySQL 版本信息及连接用户名
SELECT VERSION();
SELECT USER();
(2) 查看数据库中包含的表
SHOW DATABASES; #大小写不区分,分号“;”表示结束
(3) 查看数据库中包含的表
use 数据库名; #切换库
show tables; #查看库中的表
show tables from 数据库; #不登录数据库,直接查看数据库中的表信息
![](https://img-blog.csdnimg.cn/direct/094aff4290594798927bfad12b9f53b7.png)
(4)查看表的结构(字段)
use 数据库名; #切换数据库
describe 表名 #查看数据库中的表结构信息
describe 数据库名.表名; #不登录数据库,查看数据库中的表结构信息
可缩写成:desc 表名;
查看mysql数据中的表db结构信息👇
3.SQL语言
SQL语句用于维护管理数据库,包括数据查询、数据更新、访问控制、对象管理等功能
(1).SQL语言分类
- DDL:数据定义语言,用于创建数据库对象,如库、表、索引等
- DML:数据操纵语言,用于对表中的数据进行管理
- DQL:数据查询语言,用于从数据表中查找符合条件的数据记录
- DCL:数据控制语言,用于设置或者更改数据库用户或角色权限
4.创建及删除数据库和表
(1)创建新的数据库
create database 数据库名;
(2)创建新的表
use 数据库名;
create table 表名 (字段1 数据类型,字段2 数据类型,.....,[primary key(设为主键的字段名)]); #主键一般选择能代表唯一性的字段不允许取空值(NULL),一个表只能有一个主键
(3)删除指定的数据表
use 数据库名;
drop table [数据库名].表名; #如不用use进入库中,则需加上数据库名
drop table
(4)删除指定的数据库
drop database 数据库名;
5.管理表中的数据记录
(1).向数据表中插入新的数据记录
INSERT INTO 表名(字段1,字段2[,...]) VALUES(字段1的值,字段2的值,...);
(2)查询数据记录
use xy101 #进入数据库
SELECT 字段名1,字段名2[,...] FROM 表名 [WHERE 条件表达式];
select * from xy102;
select name,age from xy102 where sex='男';
select * from xy102 where id>=2 and id<=3;
select * from xy102 where id=1 or id=3;
select * from xy102 limit 2; #只显示头2行
select * from xy102 limit 1,2; #显示第1行后的前2行(不包括第1行,也就是第2、3行)
select * from xy102\G #以列表方式竖向显示,结尾没有分号,在Xshell中可以看到效果,在Navicat中无法实现
(3)修改、更新数据表中的数据记录
update 表名 set 字段名1=字段值1, [字段名2=字段值2] [WHERE条件表达式1];
update xy102 set id=0 where age=50;
(3)在数据表中删除指定的数据记录
delete from 表名 [where条件表达式];
delete from xy102 where id=0;
6.修改表名和表结构
(1)修改表名
alter table 旧的表名 rename 新的表名
alter table clr1 rename clr;
alter table xy102 rename xy666;
(2)扩展表结构(增加字段)
alter table 表名 add 字段 数据类型 default ' 默认值' ;
alter table xy666 add hobby varchar(20) default '睡觉';
#default '睡觉':表示此字段设置默认值,爱好不明,可与NOT NULL配合使用
(3)修改字段(列)名,唯一键
alter table 表名 change 旧列名 新列名 数据类型 [unique key];
alter table xy666 change age aage int(11) unique key;
#unique key代表唯一键,不可以添加相同值,一张表可以有多个唯一值。
(4)删除字段
alter table 表名 drop 字段名;
alter table xy666 drop hobby;
(5)添加、删除约束属性
alter table xy666 drop primary key;
alter table xy666 add primary key(name);
五、MySQL的6大约束属性
primary key | 表示此字段的主键约束,此字段数据不能重复,不能为null。一个表中只能由要给主键 |
unique key | 表示此字段唯一键约束,此字段数据不可以重复。一张表中只能有一个主键,但是一张表中可以有多个唯一键 |
not nul | 表示此字段为非空约束,此字段的值不允许为NULL |
default | 默认值约束 字段的值如果没有设置则使用默认值自动填充 |
auto_increment | 表示此字段为自增长字段(自增约束),即每条记录自动递增1,默认从1开始递增;自增长字段数据不可以重复;自增长字段必须是主键;如添加的记录数据没有指定此字段的值且添加失败也会自动递增一次 |
foregin key | 表示此字段为外键约束,保证相关的表的数据的完整性和一致性 |
案例扩展
use mybl;
create table if not exists info ( #表示检测要创建的表是否已存在,如果不存在就继续创建。
id int(4) zerofill primary key auto_increment, #指定主键的第二种方式。其中int(4) zerofill表示若数值不满4位数,则前面用"0"填充,例如0001。
name varchar(10) not null default '匿名',
cardid int(18) not null unique key,
hobby varchar(50));