1. 数据库基础知识
数据库(database):按照一定的结构,组织、存储、管理数据的仓库。
1.1为什么学习数据库?
软件都需要数据作为支撑,大量数据时候需要数据库对其进行组织、存储、管理。
1.2. 数据库的分类
- 关系型数据库(SQL),二维表格形式,常见的关系型数据库有Oracle、MySQL、MariaDB、SQL Server、DB2、SQLite等。
- 非关系型数据库(NoSQL),面对目前高并发的软件,对数据库IO、性能上要求较高,常见的非关系型数据库有:Redis、MongoDB、Hbase。
1.3 数据库包括三部分内容
- DBMS即数据库管理系统
- 通过DBMS完成对数据库的管理与操作;
- 常见的有:MySQL、Oracle、SQL Server等;
- 数据
- SQL语言(structured query language)
2. MySQL介绍
- MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle 公司。
- 目前最流行的关系型数据库管理系统,在Web应用方面MySQL是最好的关系型数据库管理系统应用软件之一。
2.1 MySQL特点:
- 关系型数据库,数据保存在不同的表中,增加了读写速度,提高了灵活性;
- 支持大型数据库,可处理拥有上千万条记录的大型数据库;
- 使用的SQL是访问数据库的标准语言;
- 可用于多个系统,支持多种语言;
- 社区版开源、免费。
2.2 RDBMS特点:
- RDBMS管理多个数据库;
- 数据库由若干表单组成;
- 许多的行和列组成一张表单;
- 一行为一条记录
- 一列为一个字段
2.3 MySQL工作模式:
MySQL是基于C/S架构的数据库管理软件:
- 服务器负责所有数据访问和处理,数据添加、删除、更新的所有请求操作都是由服务器软件完成;
- 客户机与用户打交道,服务器处理客户机发送的请求,并将处理结果返回给客户机。
- MySQL服务的启动:
-
net start|stop mysql57
Windows -
systemctl start|restart|stop|enbale|disable mysql
Linux
-
3. MySQL数据库操作
3.1 连接
mysql -h destination_host -p destination_port -u user_name -ppassword db_name
连接指定数据库
3.2 数据库操作命令
-
show databases;
# 查看数据库 -
use db_name;
# 使用数据库 -
drop database db_name
# 删除数据库 -
CREATE DATABASE IF NOT EXISTS db_name DEFAULT CHARSET utf8
# 创建数据库
3.2 数据表命令
-
show tables
# 查看表 -
desc tb_name
# 查看表结构 -
show create table tb_name
# 查看建表语句 -
create table tb_name(fields1 fields1_type,fields2 fields2_type)
# 创建表 -
drop table tb_name
# 删除表
3.3 字段的数据类型
3.3.1数值型
- 整型
tinyint
1字节
smallint
2字节
mediumint
3字节
int
4字节
bigint
8字节
int(10)表示数据显示宽度,而非数据长度
- 浮点型
float
4字节
double
8字节
decimal(total_length, point_length)
float及double保存近似值,decimal保存精确值。
3.3.2 字符串类
- 短字符串
char(5)
固定长度为5
varchar(5)
非固定长度
- char的查询速度快于varchar;
- 固定长度的类型使用char(电话号码、身份证)等,不固定长度使用varchar;
- 长字符串类
BLOB LONGBLOG
二进制文件(图片 音视频)
TEXT LONGTEXT
文本
3.3.3 日期时间类
date
年月日
time
时分秒
datetime
年月日时分秒
timestamp
时间戳
3.4 约束条件
数据类型之外对字段附加的额外的限制,保证数据库中数据的完整性、正确性、准确性。
常见的约束条件有:
not null
非空,指定某列不能为空
unique
唯一约束,该列数据不能重复
primary key
主键约束,特殊的unique,主键值不能重复,主键值不能为空
default
为字段设置默认值
auto_increment
自增(主键,整数类型)
foreign key
外键
3.5 MySQL注意事项
- 不区分大小写;
- 表名、字段名和关键字冲突时使用``符号;
- default设置默认值时,字符串要用单双引号将其引起来。
3.6 修改表
创建表
CREATE TABLE `student`( id INT NOT NULL AUTO_INCREMENT, sno VARCHAR(24), country varchar(24), PRIMARY KEY(`id`) )
- 添加列
ALTER TABLE tb_name ADD COLUMN fields field_type [condition];
- 修改列
ALTER TABLE tb_name MODIFY address varcchar(256);
ALTER TABLE tb_name CHANGE old_field_name new_field_name type [condition];
- 删除列
alter table tb_name drop field_name;
- 修改表名
ALTER TABLE tb_name RENAME TO new_tb_name;
RENAME TABLE tb_name TO new_tb_name;
3.7 操作表数据
- 查询
select field1,field2 from tb_name where xxx ;
- 增加
INSERT INTO tb_name(field1,field2) VALUES (a1,b1),(a2,b2),(a3,b3);
- 删除
DELETE FROM tb_name WHERE xxx;
- 修改
UPDATE tb_name SET field1= value1 WHERE xxx;
- TRUNCATE
TRUNCATE TABLE tb_name
速度快于DELETE FROM tb_name
,truncate删除时,索引及外键一同删除,auto_increment重新从1开始,delete仅仅删除数据。
3.8 where字句使用的操作符
-
=
等于 -
<>
、!=
不等于 -
<
小于 -
>
大于 -
<=
小于等于 -
>=
大于等于 -
BETWEEN... AND...
在指定的连个值之间(闭区间) -
IN
如field1 IN (value1,value2,value2)
-
and 以及 or
,同时控制多个条件,可以使用()
调节优先级; -
NOT
取反; - LIKE 模糊匹配
-
%
匹配任意个字符,但不能匹配null; -
_
匹配一个字符; - 通配符降低查询效率,建议合理使用。
-