MySQL数据库

1. 数据库的概念及作用

1.1 数据库的概念

数据库就是用户计算机上的一些具有特殊格式的数据文件的集合

1.2 数据库的特点

  1. 持久化存储
  2. 读写速度极高
  3. 保证数据的有效性
  4. 对程序支持性非常好,容易扩展

2. 数据库分类及特点

2.1 数据库的分类

关系型数据库和非关系型数据库。
关系型数据库是指采用了关系模型来组织数据的数据库。例如:MySQL、Oracle、SQLServer等
非关系型数据库强调了key-value的方式存储。例如:MongoDB、redis

2.2 数据库管理系统

数据库管理系统又称RDBMS,是针对关系型数据库的,一般由数据库客户端、数据库服务端、数据库文件集合三部分组成。

3 Ubuntu下MySQL环境搭建

3.1 常用命令

sudo apt-get install mysql-server	# 安装mysql服务端
sudo apt-get install mysql-client 	# 安装mysql客户端
sudo service mysql start	# 启动mysql数据库
sudo service mysql stop 	# 停止mysql数据库
ps ajx | grep mysql 	# 查看mysql数据库启动状态

3.2 MySQL配置文件

配置文件路径:/etc/mysql/mysql.conf.d/mysqld.cnf

bind-address 表示服务器绑定的ip,默认为127.0.0.1
port 表示端口,默认为3306
datadir 表示数据库目录。默认为/var/lib/mysql
general_log_file 表示普通日志,默认为/var/log/mysql/mysql.log
log_error 表示错误日志,默认为/var/log/mysql/error.log

3.3 MySQL数据类型

MySQL支持多种类型,常用一般分为三类:数值、日期、字符串

3.3.1 整型

tinyint:占用1个字节。应用场景一般为:某个事物的状态,0或者1
int:占用4个字节。应用场景一般为:某个事物的数量

3.3.2 浮点型

float:单精度型,只保证6位有效数字的准确性
double:双精度型,只保证16位有效数字的准确性
decimal:定点数,其中decimal(3,2)代表共3位数字,其中2位是小数,例如:6.88

3.3.3 字符串

char:定长字符串,最大255个字节。即在表创建时,char字段占用硬盘空间的大小就已经固定了。例如:char(10) 就代表占用10个字符空间。
varchar:变长字符串,最大65535个字节。即占用的空间不是固定的,而是用内容决定的。例如:varchar(10)代表最多保存10个字符。
text:不可以有默认值

3.3.4 枚举类型

enum:在定义字段时就预告规定好固定的几个值,然后插入记录时,只能在这几个固定好的值中选择一个。
例如:gender enum(‘凡人’,‘炼气’,‘筑基’)

3.3.5 时间类型

datetime:保存时间范围为1000-01-01 00:00:00到9999-12-31 23:59:59
timestamp:保存时间范围为1970-01-01 00:00:01到2038-01-19 03:14:07

3.4 数据完整性和约束

数据完整性用于保证数据的正确性,即在更新、删除、插入数据时都要检查数据的完整性,核实约束条件。

约束类型约束说明
NOT NULL非空约束(设置非空约束,该字段不能为空)
PRIMARY KEY主键约束(唯一性,非空性)
UNIQUE KEY唯一约束(唯一性,可以空,但只能有一个)
DEFAULT默认约束(默认值)
FOREIGN KEY外键约束(需要建立两表间的关系)

3.5 数据库的连接和退出

连接:mysql -u用户名 -p密码
退出:exit或者quit
查看版本信息:select version()
查看时间:select now()

3.6 数据库基本操作

3.6.1 数据库基本操作命令

命令作用
show databases;查看所有数据库
select database();查看当前使用的数据库
create database 数据库名 charset=utf8;创建数据库
use 数据库名;使用数据库
drop database 数据库名;删除数据库

3.6.2 数据表基本操作命令

命令作用
show tables;查看当前数据库中所有表
desc 表名查看表结构
show create table 表名查看表的创建语句以及详细过程
alter table 表名 add 列名 类型;添加字段
alter table 表名 change 原名 新名 类型及约束;重命名字段
alter table 表名 modify 列名 类型及约束修改字段类型
alter table 表名 drop 列名删除字段
drop table 表名;删除表

3.6.3 表数据操作命令

3.6.3.1 增加数据
insert into 表名 values (...); 其中...要和每个字段的顺序保持一致
insert into 表名 (字段1,字段2) values (值1,值2);
insert into 表名 (...),(...)...;一次性插入多条数据
3.6.3.2 删除数据
delete 表名 where 条件; 删除指定条件的数据
delete 表名; 删除表中所有数据
3.6.3.3 修改数据
update 表名 set 字段1=1,字段2=2 where 条件;
3.6.3.4 查询数据
select * from 表名; 查询所有列数据
select 字段1 from 表名; 查询字段1数据
select * from 表名 where 字段1=1;  查询字段1的值为值1的数据
select * from 表名 where 字段1=1;  查询字段1的值为值1的数据
select * from 表名 where 字段1>1;  查询字段1的值大于值1的数据
select * from 表名 where 字段1<=1;  查询字段1的值小于值1的数据
select * from 表名 where 字段1<>1;  查询字段1的值不为值1的数据
select * from 表名 where 字段1=1 and 字段2=2;  查询字段1的值为值1,且字段2的值为值2的数据
select * from 表名 where 字段1=1 or 字段2=2;  查询字段1的值为值1或字段2的值为值2的数据
select * from 表名 where 字段3 like '%A%';  查询字段3的值包含A的数据
select * from 表名 where 字段1 like 'A%';  查询字段1的值以A开头的数据
select * from 表名 where 字段1 like '%A';  查询字段1的值以A结尾的数据
select * from 表名 where 字段1 in ("值1","值2","值3");  查询字段1的值在 ("值1","值2","值3")里的数据
select * from 表名 where 字段1 between1 and2;  查询字段1的值在 值1到值2之间的数据
select * from 表名 where 字段1 not between1 and2;  查询字段1的值不在 值1到值2之间的数据
select * from 表名 where 字段1 is null;  查询字段1的为null的数据
select * from 表名 where 字段1 is not null;  查询字段1的不为null的数据

3.6.4 排序和聚合函数

排序语法:
select * from 表名 order by 字段1 asc|desc
其中asc为从小到大即升序排列,是默认值。desc是降序排列

聚合函数

命令作用
count(字段)计算总行数
max(字段)求此字段的最大值
min(字段)求此字段的最小值
sum(字段)求此字段的和
avg(字段)求此字段的平均值

3.6.5 分组查询和limit查询

数据表(person):

字段名类型
namevarchar(10)
agetinyint

分组查询:

按照年龄分组:select age from person group by age;
按照年龄分组,查询相同分组中的姓名:select group_concat(name),age from person group by age;
按照年龄分组,查询每个分组中有多少人:select count(1),age from person group by age;

limit限制查询
语法:limit 起始记录,记录数
起始记录是指从第几条开始取,记录数是指一共取多少条。

3.6.6 连接查询

3.6.6.1 内连接

根据连接条件取交集,on是连接条件
语法:select 字段 from 表1 inner join 表2 on 表1.字段1 = 表2.字段2
在这里插入图片描述

3.6.6.2 外连接

外连接分为左连接和右连接。
左连接,取两表交集+主表
语法:主表 left join 从表 on 连接条件
在这里插入图片描述
右连接,取两表交集+主表
语法:从表 right join 主表 on 连接条件
在这里插入图片描述

  • 23
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值