返回
编程
分类

必威官网亚洲体育2、每行为各种记录名称,符合1NF的关系中的每个属性都不可再分

日期: 2020-01-02 07:58 浏览次数 : 79

MySQL学习笔记

1、关系型数据库管理系统 RDBMS(Relational Database Management System)

1.1、关系型数据库的三大范式 范式简单的说就是,一张数据表的表结构所符合的某种设计标准的级别。 第一范式(1NF):符合1NF的关系中的每个属性都不可再分。

第二范式(2NF):2NF在1NF的基础之上,消除了非主属性对于码的部分函数依赖。

第三范式(3NF):3NF在2NF的基础之上,消除了非主属性对于码的传递函数依赖。

简单理解: 第一范式:属性不可分割。(属性就是表中的字段)

第二范式:要有主键,要求其他字段都依赖于主键。(附:主键的判断办法,如果主键确定了,其他所有的键就确定了)

第三范式:要消除传递依赖,方便理解,可以看做是“消除冗余”。

必威官网亚洲体育 ,1.2、术语 数据库:表的集合 数据表:数据矩阵 行: 列: 主键:主键是唯一的。一张表中只能包含一个主键。主要用来查询。 外键:用于关联两个表。 索引:对表中一列或多列数据进行排序的结构。

2、安装MySQL Linux/UNIX 平台 MySQL - MySQL服务器。你需要该选项,除非你只想连接运行在另一台机器上的MySQL服务器。

Python开发【第十一篇】:MySQL,python第十一篇

MySQL-client - MySQL 客户端程序,用于连接并操作Mysql服务器。 MySQL-devel

库和包含文件,如果你想要编译其它MySQL客户端,例如Perl模块,则需要安装该RPM包。 MySQL-shared - 该软件包包含某些语言和应用程序需要动态装载的共享库(libmysqlclient.so*),使用MySQL。 MySQL-bench - MySQL数据库服务器的基准和性能测试工具。

Windows 平台 下载安装包

3、数据类型

类型 大小 范围(有符号) 范围(无符号) 用途 备注
TINYINT 1 字节 (-128, 127) (0, 255) 小整数值  
SMALLINT 2 字节 (-32768, 32767) (0, 65535) 大整数值  
MEDIUMINT 3 字节 (-8388608, 8388607) (0, 16777215) 大整数值  
INT 或 INTEGER 4 字节 (-2147483648, 2147483647) (0, 4294967295) 大整数值  
BIGINT 8 字节 (-9233372036854775808 , 9223372036854775807) (0, 18446744073709551615) 极大整数值  
FLOAT 4 字节 (-3.402823466E+38, 1.175494351E-38) , 0 , (1.175494351E-38, 3.402823466351E+38) 0 , (1.175494351E-38, 3.402823466E+38) 单精度 浮点数值  
DOUBLE 8 字节 (1.7976931348623157E+308, 2.2250738585072014E-308) , 0 , (2.2250738585072014E-308, 1.7976931348623157E+308) 0 , (2.2250738585072014E-308, 1.7976931348623157E+308) 双精度 浮点数值  
DECIMAL 对 DECIMAL(M, D) 如果 M > D, 为 M+2, 否则为 D+2 依赖于 M 和 D 的值 依赖于 M 和 D 的值 小数值  
DATE 3 字节 1000-01-01/9999-12-31   日期值 YYYY-MM-DD
TIME 3 字节 '-838:59:59'/'838:59:59'   时间值或持续时间 HH:MM:SS
YEAR 1 字节 1901/2155   年份值 YYYY
DATETIME 8 字节 1000-01-01 00:00:00 /9999-12-31 23:59:59   混合日期和时间值 YYYY-MM-DD
HH:MM:SS
TIMESTAMP 8 字节 1970-01-01 00:00:00/2037 年某时   混合日期和时间值,时间戳 YYYYMMDD HHMMSS
CHAR 0-255 字节     定长字符串  
VARCHAR 0-255 字节     变长字符串  
TINYBLOB 0-255 字节     不超过 255 个字符的二进制字符串  
TINYTEXT 0-255 字节     短文本字符串  
BLOB 0-65535 字节     二进制形式的长文本数据  
TEXT 0-65535 字节     长文本数据  
MEDIUMBLOB 0-16777215 字节     二进制形式的中等长度文本数据  
MEDUIMTEXT 0-16777215 字节     中等长度文本数据  
LONGBLOB 0-4294967295 字节     二进制形式的极大文本数据  
LONGTEXT 0-4294967295 字节     极大文本数据  

4、常用命令

分类 说明 命令 备注
连接 登录服务器 mysql -h1.2.3.4 -u root -p  
显示 库列表 SHOW DATABASES  
  表列表 SHOW TABLES  
  表的结构 SHOW CREATE TABLE table_name DESCRIBE table_name  
  表的属性信息 SHOW COLUMNS FROM table_name  
  表的索引信息 SHOW INDEX FROM table_name  
  表的状态信息 SHOW STATUS LIKE 'table_name'  
  服务器 的状态信息 SHOW STATUS  
  服务器配置信息 SHOW VARIABLES  
  服务器的版本信息 SELECT VERSION()  
  当前库名 SELECT DATABASE()  
  当前用户名 SELECT USER()  
选择 USE database_name  
新建 CREATE DATABASE database_name  
  CREATE TABLE table_name (column_name column_type)  
  临时表 CREATE TEMPORARY TABLE table_name (column_name column_type) 临时表只在当前连接有效,连接断开后,临时表自动销毁。
插入 INSERT INTO table_name (field1, field2, ...fieldN)
VALUES
(value1, value2, ...valueN)
 
删除 DROP DATABASE database_name  
  DELETE FROM table_name [WHERE clause_etc]  
  DROP TABLE table_name  
查询 SELECT field1, field2, ...fieldN FROM table_name1, table_name2, ... [WHERE clause_etc] [OFFSET M] [LIMIT N]  
查询( 联表) 行(内联结) 隐式: SELECT table1.column table2.column FROM table1, table2 WHERE table1.column2 = table2.column2 显式: SELECT table1.column FROM table1 INNER JOIN table2 ON table1.column2 = table2.column2 仅支持 SELECT UPDATE DELETE
  行(外左联结) SELECT table1.column FROM table1 LEFT JOIN table2 ON table1.column2 = table2.column2 table1 中的记录全部保留,如果 table2 中无对应的,则默认留空
  行(外右联结) SELECT table1.column FROM table1 RIGHT JOIN table2 ON table1.column2 = table2.column2 table2 中的记录全部保留,如果 table1 中无对应的,则默认留空
更新 UPDATE table_name SET field1=value1, field2=value2 [WHERE clause_etc]  
修改 添加列 ALTER TABLE table_name ADD column_name type ALTER TABLE table_name ADD column_name type FIRST
ALTER TABLE table_name ADD column_name type AFTER column2
添加到最后一列 (默认) 添加到第一列 添加到指定列 column2 之后
  删除列 ALTER TABLE table_name DROP column_name  
  修改列(类型) ALTER TABLE table_name MODIFY column_name type 只修改列字段的类型
  修改列(名称) ALTER TABLE table_name CHANGE old_column column_name type 同时修改列字段的名称和类型
  ALTER TABLE table_name RENAME TO table_name2 修改表名
限定条件 偏移量 OFFSET offset_number  
  行数 LIMIT limit_number  
  任意条件 WHERE clause_etc  
  正则表达式 WHERE column REGEXP 'exp'  
排序 升序 ASC  
  降序 DESC  
索引 CREATE [UNIQUE] INDEX index_name ON table_name(column(length)) ALTER table_name ADD [UNIQUE] INDEX [index_name] ON ( column(length)) DROP INDEX [index_name] ON table_name column 如果是 CHAR, VCHAR 类型,length 可以小于字段长度; 如果是 BLOB, TEXT 类型,必须指定 length。
  列(组合)    
       

5、操作符 下表中,假设 A=10 B=20

操作符 描述 实例
= 等号,检测两个值是否相等,如果是返回true (A = B) 返回false
<>, != 不等于,检测两个值是否不相等,如果是返回true (A != B) 返回true
> 大于,检测左边的值是否大于右边的值,如果是返回true (A > B) 返回false
< 小于,检测左边的值是否小于右边的值,如果是返回true (A < B) 返回true
>= 大于等于,检测左边的值是否大于等于右边的值,如果是返回true (A >= B) 返回false
<= 小于等于,检测左边的值是否小于等于右边的值,如果是返回true (A <= B) 返回true
IS NULL 检测值是否为NULL  
IS NOT NULL 检测值是否不为NULL  

6、连接符

操作符 描述 备注
AND 连接两个条件,表示左边与右边的条件必须同时成立,结果才成立  
OR 连接两个条件,表示左边与右边的条件任意一个成立,结果就成立  
LIKE 条件匹配,通常与 % 一起使用达到模糊查询的效果 WHERE feild LIKE '%abc'

7、正则表达式

模式 描述 备注
^ 匹配输入字符的 开始位置。如果设置了 RegExp 对象的 Multiline 属性, ^ 也匹配 'n' 或 'r' 之后的位置。  
$ 匹配输入字符的结束位置。如果设置了 RegExp 对象的 Multiline 属性, ^ 也匹配 'n' 或 'r' 之前的位置。  
[...] 字符集合。匹配所包含的任意一个字符。 例如,'[abc]' 可以匹配 'plain' 中的 'a'。
. 匹配除 'n' 之外的任何单个字符。 要匹配包括 'n' 在内的任何字符,请使用象 '[.n]' 的模式。
[^...] 负值字符集合。匹配未包含的任意字符。 例如,'[^abc]' 可以匹配 'plain' 中的 'p' 'l' 'i' 'n'
{n} n 是一个非负整数。 匹配前面表达式确定的 n 次。 例如,'o{2}' 能匹配 'food'
{n, m} m n 均为非负整数,其中 n <= m。 匹配前面表达式最少 n 次,最多 m 次。  
p1|p2 匹配 p1 或 p2。 例如,'z|food' 能匹配 'z' 或 'food'
* 匹配前面的子表达式零次或多次 。 等价于 {0,} 例如,'zo*' 能匹配 'z' 'ozz'。
+ 匹配前面的子表达式一次或多次。
等价于 {1,}
 

8、事务 用来保证一组 sql 命令,全部执行,如果失败回滚到执行前的状态。 事务必须满足4个条件(ACID):Atomicity(原子性)、Consistency(稳定性)、Isolation(隔离性)、durability(可靠性) 在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。

9、序列 使用关键词 AUTO_INCREMENT 来定义一个整数列自增。

10、SQL 注入 防止 SQL 注入,需要注意以下几点:

永远不要信任用户的输入。对用户的输入进行校验,可以通过正则,或限制长度;对单引号和双"-"进行转换等。

永远不要使用动态拼装 sql,可以使用参数化的 sql 或者直接使用存储过程进行数据查询存取。

永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。

不要把机密信息直接存放,加密或者 hash 掉密码和第三的信息。

应用的异常信息应该给出尽可以少的提示,最好使用自定义的错误信息对原始错误信息进行包装。

sql 注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用 sql 注入检测工具。

1、关系型数据库管理系统 RDBMS(Relational Database Management System) 1.1、关系型数据库的三大范式 范式简单的说就是,一张数据表...

数据库介绍

数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据。每个数据库都有一个或多个不同的API用于创建、访问、管理、搜索和复制所保存的数据。我们可以将数据存储在文件中,但是在文件中读写数据速度相对较慢。所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理大的数据量。所谓关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来处理数据库中的数据。

RDBMS即关系数据库管理系统(Relational Database Management System)的特点:

1、数据以表格的形式出现。

2、每行为各种记录名称。

3、每列为记录名称所对应的数据域。

4、许多行和列组成一张表单。

5、若干的表单组成database。

RDBMS常用术语

数据库:数据库是长期存储在计算机内、有组织的、可共享的数据集合,具有较小的冗余度,较高的数据独立性和易扩展性。

行:在SQL中把传统的关系模型中的元组称为行(row)。

列:在SQL中把传统的关系模型中的属性称为列(coloumn)。

基本表:在SQL中把传统的关系模型中的关系模式称为基本表(bsetble),基本表示本身独立的表,一个关系就对应一个基本表。

实表:基本表就被称为实表,它是实际存放在数据库中表。

虚表:视图就被称为虚表,因为在数据库中只存储视图的定义而不存放视图所对应的数据。

冗余:指数据之间的重复,也可以说是同一数据存储在不同数据文件中的现象。

记录:一个记录就是数据表中的一行,一个数据表中的每一个记录均有一个唯一的编号(记录号)。

元组:在关系中记录称为元组。

超键:在关系中能唯一标识元组的属性集称为关系模式的超键。注意,超键是一个属性集。

候选键:不含有多余属性的超键称为候选键。

必威官网亚洲体育2、每行为各种记录名称,符合1NF的关系中的每个属性都不可再分。主键:用户选作元组标识的一个候选键为主键。

外键:某个关系的主键相应的属性在另一关系中出现,此时该主键就是另一关系的外键。

复合键:将多个字段作为一个主键。

索引:对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。

实体完整性规则:这条规则要求关系中元组在组成主键的属性上不能有空值。如果出现空值,那么主键值就起不了唯一标识元组的作用。

参照完整性规则:这条规则要求不引用不存在的实体。

1NF:第一范式。如果关系模式R的所有属性的值域中每一个值都是不可再分解的值,则称R是属于第一范式模式。如果某个数据库模式都是第一范式,则称该数据库存模式属于第一范式的数据库模式。第一范式的模式要求属性值不可再分裂成更小部分,即属性项不能是属性组合和组属性组成。

2NF:第二范式。如果关系模式R为第一范式,且R中每一个非主属性完全函数依赖于R的某个候选键,则称是第二范式;如果某个数据库模式中每个关系模式都是第二范式,则称该数据库模式属于第二范式的数据库模式。

3NF:第三范式。如果关系模式R是第二范式,且每个非主属性都不传递依赖于R的候选键,则称R是第三范式的模式。如果某个数据库模式中的每个关系模式都是第三范式,则称为3NF的数据库模式。

BCNF:BC范式。如果关系模式R是第一范式,且每个属性都不会传递依赖于R的候选键,那么称为R是BCNF的模式。

4NF:第四范式。设R是一个关系模式,D是R上的多值依赖集合。如果D中成立非平凡多值依赖X、Y时,X必是R的超键,那么称R是第四范式的模式。

Mysql数据库

Mysql是最流行的关系型数据库管理系统,在WEB应用方面MySQL是最好的RDBMS(Relational Database Management System关系数据库管理系统)应用软件之一。由瑞典MySQL AB公司开发,目前属于Oracle公司。MySQL是一种关系数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。

MySQL数据库主要特点:

1、使用C和C++编写,并使用了多种编译器进行测试,保证源代码的可移植性。

2、支持AIX、FreeBSD、HP-UX、Linux、Mac OS、NovellNetware、OpenBSD、OS/2 Wrap、Solaris、Windows等多种操作系统。

3、为多种编程语言提供了API。这些编程语言包括C、C++、Python、Java、Perl、PHP、Eiffel、Ruby和Tcl等。

4、支持多线程,充分利用CPU资源。

5、优化的SQL查询算法,有效地提高查询速度。

6、既能够作为一个单独的应用程序应用在客户端服务器网络环境中,也能够作为一个库而嵌入到其他的软件中。

7、提供多语言支持,常见的编码如中文的GB 2312、BIG5,日文的Shift_JIS等都可以用作数据表名和数据列明。

8、提供TCP/IP、ODBC和JDBC等多种数据库连接途径。

9、提供用于管理、检查、优化数据库操作的管理工具。

10、支持大型的数据库。可以处理拥有上千万条记录的大型数据库。

11、支持多种存储引擎。

12、Mysql是开源的,所以你不需要支付额外的费用。

13、Mysql使用标准的SQL数据语言形式。

14、Mysql对PHP有很好的支持,PHP的目前主流的web开发语言。

15、Mysql是可以定制的,采用了GPL协议,你可以修改源码来开发自己的Mysql系统。

Mysql数据的安装使用

数据库介绍 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。每个数据库都...