什么是数据库
数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。
所谓“数据库”是以一定方式储存在一起、能予多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合
数据库相关概念
数据库:
就是一个存放数据的仓库,数据是有组织的进行存储 ; 简称:Database (DB)
数据库管理系统:
操纵和管理数据库的大型软件; 简称:Database Management System (DBMS)
SQL:
操作关系型数据库的编程语言,定义了一套操作关系数据库统一标准;简称:Stuctured Query Langguage (SQL)
为什么要有数据库
存储数据用文件就可以了,为什么还要弄个数据库?
文件保存数据有以下几个缺点:
- 文件的安全性不高。
- 文件不利于数据查询和管理,因为需要遍历,效率太低。
- 文件不利于存储海量数据。
为了解决上述问题,专家们设计出了一套专门的数据管理系:数据库。
数据库的基本使用
1.MySQL的安装:
所谓安装MySQL,其实是在我们的电脑上安装MySQL的客户端和服务器:
MySQL服务的本质是一个网络服务器进程,所以它也应有自己对应的端口号和其所遵守的协议:
2.检查MySQL后端服务器是否启动
安装完成后输入命令:ps axj | grep mysqld
来检查MySQL的后端服务器mysqld是否启动:
另外输入命令:systemctl stop mysqld
可以终止MySQL后端服务器:
输入命令:systemctl start mysqld
开启MySQL后端服务器:
3.连接MySQL服务器
命令行上输入mysql -uroot -p
,接着再输入密码即可连接上MySQL服务器:
想要退出MySQL,只需输入quit即可:
数据库的基础知识
1) 数据库:用于存储和管理数据的容器。
2) 表:用于组织数据的结构对象,由行和列组成。
3) 列:表中的数据项的类型定义。
4) 行:表中的数据记录。
5) 主键:用于唯一标识表中每行的列或列组合。
6) 外键:用于建立表之间的关系,指向另一个表中的主键。
常用数据类型:
1) 整型:int,tinyint,bigint等。
2) 浮点型:float,double等。
3) 字符串型:varchar,char等。
4) 日期和时间类型:date,time,datetime等。
数据库操作:
1) 创建数据库:create database database_name;
2) 删除数据库:drop database database_name;
3) 选择数据库:use database_name;
4) 创建表:create table table_name(column1 datatype, column2 datatype, …);
5) 删除表:drop table table_name;
6) 插入数据:insert into table_name(column1, column2, …) values(value1, value2, …);
7) 更新数据:update table_name set column1 = value1, column2 = value2 where condition;
8) 删除数据:delete from table_name where condition(条件);
9) 查询数据:select column1, column2, … from table_name where condition;
数据查询:
1) 简单查询:select * from table_name;
2) 条件查询:select * from table_name where condition;
3) 排序查询:select * from table_name order by column_name asc/desc;
4) 聚合函数:count, sum, avg, min, max等;
5) 分组查询:select column1, count(column2) from table_name group by column1;
6) 连接查询:inner join, left join, right join等;
高级功能:
1) 索引:提高查询效率的数据结构。
2) 视图:虚拟表,基于查询结果的可视化。
3) 存储过程:预编译的数据库操作脚本。
4) 触发器:在表上触发自动化操作。
5) 事务:一组数据库操作的原子性和一致性
MyISAM和InnoDB区别
名称 | MyISAM 数据库引擎 | InnoDB 存储引擎 |
事务处理 | 不支持 | 支持 |
数据行锁定 | 不支持 | 支持 |
外键约束 | 不支持 | 支持 |
全文索引 | 支持 | 不支持 |
表空间大小 | 较小 | 较大,约2倍 |
结构化查询语句SQL
名称 | 解释 | 命令 |
---|---|---|
DDL(数据定义语言) | 定义和管理数据对象,如数据库,数据表等 | CREATE、DROP、ALTER |
DML(数据操作语言) | 用于操作数据库对象中所包含的数据 | INSERT、UPDATE、DELETE |
DQL(数据查询语言) | 用于查询数据库数据 | SELECT |
DCL(数据控制语言) | 用来管理数据库的语言,包括管理权限及数据更改 | GRANT、COMMIT、ROLLBACK |
DDL数据定义语言常用语句
/*创建数据库 判断是否存在*/
CREATE DATABASE if not EXISTS myschool;
/*删除数据库*/
DROP DATABASE if EXISTS myschool;
/*查看库*/
show DATABASES;
/*切换数据库*/
use myschool;
/*创建表*/
CREATE table if not EXISTS `student` (
id int PRIMARY KEY auto_increment,
name VARCHAR(50) not null DEFAULT "张三",
money DECIMAL(3,2)
)
/*删除表*/
DROP TABLE student;
DML数据操作语言常用语句
SELECT:用于从数据库中查询数据。
示例:从table_name中选择 *;
INSERT:用于向数据库表中插入新的数据。
示例:插入到table_name(列 1、列 2、...)值(值 1、值 2、...);
UPDATE:用于更新数据库表中的数据。
示例:更新table_name设置列 1 = 值 1,列 2 = 值 2 其中条件;
DELETE:用于删除数据库表中的数据。
示例:从table_name位置条件中删除;
MERGE:用于根据条件合并数据。
示例:匹配时使用source_table打开(条件)合并到table_name中,然后更新集 列 1 = 值 不匹配时插入(列 1、列 1、...值(值 2、值 1、...);
TRUNCATE:用于删除数据库表中的所有数据,并重置表的计数器。
示例:TRUNCATE TABLE table_name;
DQL数据查询语言常用语句
SELECT:用于从数据库中检索数据。
例如:SELECT * FROM table_name;
WHERE:用于在查询中添加条件。
例如:SELECT * FROM table_name WHERE condition;
AND/OR:用于在WHERE语句中添加多个条件。
例如:SELECT * FROM table_name WHERE condition1 AND condition2;
ORDER BY:用于按照指定的列对结果进行排序。
例如:SELECT * FROM table_name ORDER BY column_name;
GROUP BY:用于将结果按照某一列进行分组。
例如:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name;
HAVING:用于在GROUP BY语句后添加条件。
例如:SELECT column_name, COUNT(*) FROM table_name GROUP BY column_name HAVING condition;
JOIN:用于将多个表连接在一起查询。
例如:SELECT * FROM table1 JOIN table2 ON table1.column_name = table2.column_name;
LIMIT:用于限制查询结果的数量。
例如:SELECT * FROM table_name LIMIT count;
DQL常用关键字:
关键字 | 说明 |
or | 或 |
and | 和 |
having | 分组后的附加条件 |
group by | 分组 |
order by | 排序:asc:正序,desc:倒序 |
in | 存在于某个值中 |
not in | 不存在与某个值中 |
inner join … on | 链接多表 |
left join … on | 左外连接 |
right join … on | 右外连接 |
left(right,inner) out join … on | 去重 |
count | 计数 |
AVG | 平均值 |
sum | 求和 |
max | 最大值 |
min | 最小值 |
like ‘关键字%’ | 取含有关键字的值 |
distinct | 去重 |
round | 四舍五入 |
where 1=1 | 全选 |
where 1=2 | 全不选 |
limit 1,5 | 从第二行开始显示5条数据 |
top 10 : select top 10 * from 表名 | 显示前十条数据 |
newid() | 随机 |
DCL(数据控制语言)常用语句
GRANT:用于授权用户对数据库对象的访问权限。
例如:GRANT SELECT, INSERT ON table_name TO user_name;
REVOKE:用于撤销用户对数据库对象的访问权限。
例如:REVOKE SELECT, INSERT ON table_name FROM user_name;
DENY:用于拒绝用户对数据库对象的访问权限。
例如:DENY UPDATE ON table_name TO user_name;
COMMIT:用于将对数据库的修改保存到数据库中。
例如:COMMIT;
ROLLBACK:用于撤销对数据库的修改。
例如:ROLLBACK;
SAVEPOINT:用于创建一个保存点,可以在事务中使用。
例如:SAVEPOINT savepoint_name;
SET TRANSACTION:用于设置事务的属性。
例如:SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
MySql常用的数据类型
数值类型
类型 | 说明 | 存储需求 |
---|---|---|
tinyint | 非常小的数据 | 1字节 |
int | 标准整数 | 4字节 |
bigint | 较大的整数 | 8字节 |
float | 单精度浮点数 | 4字节 |
double | 双精度浮点数 | 8字节 |
decimal | 字符串形式的浮点数 | decimal(m, d) m字节 保留d位小数 |
字符串类型
类型 | 说明 | 存储需求 |
---|---|---|
varchar | 可变字符串 | 变长度 |
text | 文本 | 2的16次方–1字节 |
日期和时间型数值类型
类型 | 说明 |
---|---|
DATE | YYYY-MM-DD |
DATETIME | YY-MM-DD hh:mm:ss |
TIMESTAMP | YYYYMMDDhhmmss格式表示的时间戳 |