MySQL基础知识-个人笔记
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。
关系型数据库管理系统(RDBMS)是建立在管理模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。
关系型数据库管理系统有以下特点:数据以表格的形式出现
2. 每行为各种记录名称
3. 每列为记录名称所对应的数据域
4. 许多的行和列组成一张表单
关系型数据库管理系统术语:数据库:数据库是一些关联表的集合。数据表:表是数据的矩阵。在一个数据库中的表看起来像一个简单的电子表格。列:一列包含了相同类型的数据。行:一行(元组,或记录)是一组相关的数据。冗(rong)余:存储两倍数据,冗余降低了性能,但提高了数据的安全性。主键:主键是唯一的。一个数据表中只能包含一个主键。外键:外键用于关联两个表。复合键:将多个列作为一个索引,一般用于复合索引。索引:使用索引可快速访问数据库表中的特定信息。索引是对数据库表中一列或多列的值进行排序的一种结构。参照完整性:参照的完整性妖气关系中不允许引用不存在的实体。与实体完整性是关系模型必须满足的完整性约束条件,莫得事保证数据的一致性。
数值类型:INTEGER、SMALLINT、DECIMAL、NUMERIC、FLOAT、DOUBLE。
日期和时间的类型:DATETIME、DATE、TIMESTAMP、TIME和YEAR。
日期和时间类型和格式:
字符串类型:CHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM、SET。
1. 登录MySQL
2. 退出mysql命令
3. 列出MySQL数据库管理系统的数据库列表
4. 显示指定数据库的所有表
5. 创建数据库test
6. 删除数据库test
7. 选择数据库test
8. 创建数据表
设置字段属性为NOT NULL,在操作数据库时如果输入该字段的数据为NULL,就会报错。PRIMARY KEY定义列为主键。AUTO_INCREMENT定义列为自增属性,一般用于主键,数值会自动增加1。ENGINE 设置存储引擎,CHARSET设置编码。命令终止符号为分号。
9. 删除数据表
10. 插入数据
若数据是字符型,必须使用单引号或者双引号;NOW()是MySQL函数,返回日期和时间。
11. 查看数据表数据
12. SELECT语法
可以查询多个表,表之间使用逗号隔开WHERE语句设定查询条件LIMIT语句设定返回的记录数OFFSET指定开始查询的数据偏移量,默认偏移量为0。
13. UPDATE更新
14. 删除数据表中的数据语法:
删除所有记录则不需要指定WHERE子句
15. UNION操作符用于连接两个以上的SELECT语句的结果组合到一个集合中,多个SELECT语句会删除重复数据。
DISTINCT删除结果集中重复的数据,默认情况下UNION操作符已经删除了重复数据ALL 返回所有结果集,包括重复数据
16. ORDER BY 排序,默认是升序ASC(可省略),降序是DESC
17. GROUP BY 语句根据一个或多个列对结果集进行分组,可使用COUNT、SUM、AVG等函数
18. JOIN在两个或多个表中查询语句。
JOIN分类:INNER JOIN(内连接或等值连接) 获取两个表中字段匹配关系的记录LEFT JOIN(左连接) 获取左表所有记录,即使右表没有对应匹配记录RIGHT JOIN(右连接) 获取右表所有记录,即使左表没有对应匹配记录
19. 正则表达式REGEXP:
示例:
查找name字段中以‘st’为开头的所有数据
查找name字段中以’ok‘为结尾的所有数据
查找name字段中包含’mar‘字符串的所有数据
查找name字段中以元音字符开头或以'ok'字符串结尾的所有数据
20. 事务主要用于处理操作量大,复杂度高的数据。
在MySQl中只有使用了Innodb数据库引擎的数据库或表才支持事务。
事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。
事务用来管理INSERT、UPDATE、DELETE。
一般来说,事务必须满足4个条件:原子性(Atomicity,或称不可分割性)、一致性(Consistency)、隔离性(Isolation,又称独立性)、持久性(Durability)原子性:一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。一致性:在事务开始之前和结束之后,数据的完整性没有被破坏。表示写入的资料必须完全符合所有的预设规则,这包含资料的精确度、串联性以及后续数据库可以自发性完成预定的工作。隔离性:数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致,事务隔离分为不同级别,包括读未提交、读提交、可重复读和串行化。持久性:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。
事务控制语句BEGIN或START TRANSACTION显式地开启一个事务;COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的,也可以使用COMMIT WORK;ROLLBACK回滚会结束用户的事务,并撤销正在进行的所有未提交的修改,也可以用ROLLBACK WORK;SAVERPOINT 允许事务中创建一个保存点,一个事务中可以有多个SAVERPOINT;RELEASE SAVERPOINT 删除一个事务的保存点,当没有指定的保存点时,执行该语句会一个异常;ROLLBACK TO 把事务回滚到标记点;SET TRANSACTION 用来设置事务的隔离级别,InnoDB存储引擎提供事务的隔离级别有READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ和SERIALIZABLE。
MySQL事务处理主要有两种方法
用BEGIN,ROLLBACK,COMMIT来实现:
BEGIN 开始一个事务
ROLLBACK 事务回滚
COMMIT 事务确认
直接用SET来改变MySQL的自动提交模式
SET AUTOCOMMIT=0 禁止自动提交
SET AUTOCOMMIT=1 开启自动提交
21. 算数运算符
在除法运算和模运算中,如果除数为0,将是非法除数,返回结果为NULL
22. 比较运算符
23. 逻辑运算符
24. 位运算符
25. 运算符优先级
26. MySQL 内置函数
27. ALTER 命令
删除表字段
数据表中只剩余一个字段则无法使用DROP来删除字段。
添加列
FIRST和AFTER关键字可用于ADD与MODIFY子句。
修改字段类型及名称
修改表名
28. 索引可以提高查询速度索引分单列索引和组合索引。单列索引只包含单个列,一个表可以有多个单列索引;组合索引即所以包含多个列。索引会降低更新表的速度。建立索引会占用磁盘空间的索引文件。
普通索引创建
如果是CHAR、VARCHAR类型,length可以小于字段实际长度;如果是BLOB和TEXT类型,必须指定length。
修改表结构(添加索引)
创建表的时候直接指定
删除索引语法
与普通索引相比,唯一所以的索引列的值必须唯一,单允许有空值。如果是组合索引,则列值的组合必须唯一。
创建唯一索引
修改表结构
创建表的时候直接指定
使用ALTER命令添加和删除索引:
显示索引信息
获取数据表的完整结构