数据库基础
什么是数据库?
数据库是保存有组织的数据的容器(通俗来说,就是可以保存在硬件设备上的文件)。注意与数据库管理系统(DBMS)的区别,我们不是直接访问数据库,而是使用数据库管理系统对数据库进行访问。
什么是SQL?
SQL是一种结构化查询语言,用来与数据库通信的语言。
什么是MySQL?
前面介绍了数据库和SQL,数据的所有存储、检索、管理是由数据库管理软件完成的。MySQL就是一种数据库管理软件。
说白了我们平时做的工作就是:在MySQL管理软件中使用SQL语言与数据库进行通信(一般包括数据库的增删改查)。
什么是表?
表是某种特定类型数据的结构化清单。
同一个数据库下的表,名字不能相同;不同数据库下的表,名字可以相同;
列:表中的一个字段;行:表中的一条记录;
什么是主键?
能够唯一区分每一行的一列或多列。
例如,在学校里面每一个学生有且仅有一个学号,所以通过学号就可以直接定位一个学生,所以学号可以作为主键,但是名字不可以,因为会有重名的情况发生。
注意:主键可以是一列,也可以多列的组合(使用多列组合作为主键时,一般是因为表中的任意一列都不能确定一条记录,而多列组合一般可以)
表的任何一列都可以作为主键,只要满足以下条件:
- 1. 任意两行都不具有相同的主键
- 2. 每一行都有一个主键值,主键值不得为NULL
建议:
- 总是定义主键
- 不更新主键列中的值
- 不重用主键列中的值
- 不在主键列中使用可能会更改的值
事务处理
什么是事务?
事务通俗来说就是我们需要做的事情,例如,你使用支付宝转账就是事务。
在MySQL里面是完成一项事务即表现为执行一系列指令,最终达到完成事务的目的。
事务有什么特性?
- A: 原子性
- C: 一致性
- I: 隔离性
- D: 持久性
MySQL哪种引擎支持事务?
- Innodb(也是推荐的,最常用的引擎)
- NDB Cluster
有关事务的几个关键词:
START TRANSACTION: 事务,表示开始一项事务;
ROLLBACK: 回滚,撤销指定SQL语句的执行过程;
COMMIT: 提交,将结果写入数据库表;
SAVEPOINT: 保留点,指设置的事务占位符,与ROLLBACK配合使用;
ROLLBACK可以回滚一切语句吗?
- ROLLBACK只可以在执行START TRANSACTION指令后使用,即只可以在事务中使用;
- ROLLBACK可以回滚INSERT , UPDATE, DELETE指令
- ROLLBACK不可以回滚DROP, CREATE, SELECT指令
参考文章:
检索数据
检索一列:
SELECT column_name FROM table_name;
检索多列:
SELECT column1_name, column2_name, column3_name FROM table_name;
检索所有列:
SELECT * FROM table_name;
限制检索结果的行数
SELECT column_name FROM table_name LIMIT M, N ;
检索从第M行开始的N行数据(注意: 数据库表从第0行开始, LIMIT 0, 1 表示检索第0行数据)
DISTINCT限制:
SELECT DISTINCT column_name FROM table_name;
表示检索column_name字段不重复的列
注意:当使用DISTINCT检索多列数据时,DISTINCT应用于所有列。
SELECT DISTINCT a,b,c FROM table; -- 此时是将a,b,c三列所有不同的组合全部列出来,而不仅仅只是DISTINCT a