Mysql学习
Posted meilishi
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Mysql学习相关的知识,希望对你有一定的参考价值。
mysql学习
- 什么是数据库
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
- 数据库分类
- 关系数据库:Mysql、oracle、SQL server、DB2、SQLL李特
- 非关系数据库(NoSql===》Not Only SQL):redis、MongoDB
- Mysql(https://www.mysql.com/)
- 配置文件在mysql的安装目录下的my.ini
-
- “--”单行SQL的注释、“/* */”多行SQL的注释
- 操作数据库
1
2
3
4
5
6
7
8
9
10
11
|
--创建数据库 create database [ if not exists] dataname --删除数据库 drop database [ if not exists] dataname --使用数据库 use dataname --查看所有数据库 show databases |
- 数据库的列类型
- 数值
TINYINT: 微整型,一个字节, 范围 -128~127
SMALLINT: 小整型,2个字节,范围 -32768~32767
INT: 整型,4个字节
BIGINT: 大整型,8个字节
FLOAT: 单精度浮点型,4个字节,最大3.4e38,可能产生误差
DOUBLE: 双精度浮点型,8个字节,可能产生误差
DECIMAL(M,D): 定点小数,小数点不会变化,几乎也不会产生误差,M代表总的有效数,D代表小数点后的有效位数(工资、价格.....)
BOOL/BOOLEAN: 通常用于存储两个值得数据, TRUE/FALSE。真正存储时 true转为1,FALSE转为0。因为Mysql中没有真正的布尔型,最终会自动转为微整型TINYINT。
-
- 日期时间型
DATE: 日期型 YYYY-MM-DD
TIME: 时间型 HH:mm:ss
DATETIME: 日期时间型 YYYY-MM-DD HH:mm:ss
-
- 字符串型
VARCHAR(M): 变长字符串,不会产生空间浪费,操作速度相对慢,M的最大值为65535
CHAR(M): 定长字符,可能会产生空间浪费,操作速度相对快,往往存储一些固定长度的数据(如手机号码、身份证号等),M的最大值为255
TEXT(M): 大型变长字符串,M的最大值是2G.
-
- null
- 数据库的字段属性(重点)
- unsigned:无符号的整数,不能为负
- zerofill:0填充,不足的0补上
- 自增:在基础上自增1
- 非空:not null
- 默认:如果插入没有值则选择默认值
- mysql的引擎
参考:https://www.cnblogs.com/psyu/p/10883332.html
- mysql数据管理
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
--插入数据 insert into tablename (xxx,xxx,xxx) values(xxx,xxx,xxx) --查询 select xxx from tablename --删除 delete from tablename where xxx --清空表 truncate table --修改 update tablename where set name=newvalue |
- select
-
1234567891011121314151617181920212223242526272829303132
SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr [, select_expr] ...
[into_option]
[FROM table_references
[PARTITION partition_list]]
[WHERE where_condition]
[GROUP BY {col_name | expr | position}, ... [WITH ROLLUP]]
[HAVING where_condition]
[WINDOW window_name AS (window_spec)
[, window_name AS (window_spec)] ...]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[into_option]
[FOR {UPDATE | SHARE}
[OF tbl_name [, tbl_name] ...]
[NOWAIT | SKIP LOCKED]
| LOCK IN SHARE MODE]
[into_option]
into_option: {
INTO OUTFILE
‘file_name‘
[CHARACTER SET charset_name]
export_options
| INTO DUMPFILE
‘file_name‘
| INTO var_name [, var_name] ...
}
-
-
- where
- in
- null
- not null
- having
- like
- join in
- as
- desc
- asc
- order by
- group by
- limit
- 聚合函数
- count()
- sum()
- avg()
- max()
- min()
- 事务(要么都成功,要么都失败)
原子性(Atomicity):原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency):事务前后数据的完整性必须保持一致。
隔离性(Isolation):事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability):持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
脏读:指一个事务读取了另外一个事务未提交的数据。
不可重复读:在一个事务内读取表中的某一行数据,多次读取结果不同。(这个不一定是错误,只是某些场合不对)
幻读(虚读):是指在一个事务内读取到了别的事务插入的数据,导致前后读取不一致。(一般是行影响,多了一行)
- 索引:简单来说就像一本书的目录
- 普通索引:仅加速查询 最基本的索引,没有任何限制,是我们大多数情况下使用到的索引。
- 唯一索引:与普通索引类型,不同的是:加速查询 + 列值唯一(可以有null)
- 全文索引:全文索引(FULLTEXT)仅可以适用于MyISAM引擎的数据表;作用于CHAR、VARCHAR、TEXT数据类型的列。
- 组合索引:将几个列作为一条索引进行检索,使用最左匹配原则。
- 参考:http://blog.codinglabs.org/articles/theory-of-mysql-index.html
- 数据库三大范式
- 第一范式:原子性,属性不可再分
- 第二范式:在1下,属性完全依赖于主键,在一张表只描述一件事
- 第三范式:在2下,每一列只依赖主键
以上是关于Mysql学习的主要内容,如果未能解决你的问题,请参考以下文章
连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段