python day46 mysql数据与sql

01数据库与dbms的概念

  数据库(database):  按照一定数据结构储存数据的数剧仓库。

  数据库管理系统(dbms):  操作和管理数据库的一套软件。

sql(structure query language):  结构化查询语言;对大小写不敏感,结尾分号结束。

  数据库管理系统(DBMS)分类以及常用数据库介绍
DBMS主要分为关系型数据库管理系统(RDBMS) 和非关系型的数据库管理系统(Nosql)

A.关系型数据库管理系统(RDBMS)
采用关系模型管理数据。采用二维表格的形式来简化数据关系实现对数据的管理。
oracle数据库: oracle公司,大型分布式数据库管理系统。

mysql数据库: oracle公司,针对于中小型系统。

mariaDB数据库: mysql分支,社区维护。

sql server: microsoft中小型企业。只运行于windows。

db2: ibm公司,中小型。

B.非关系型的数据库管理系统(Nosql)
Not only sql
弥补关系型数据库在高io,高可用方面的局限性。
redis / hbase / mongodb / neo4j(图数据库)。

02sql规范

1、 语句中出现的所有表名、字段名全部小写,系统保留字、内置函数名、SQL保留字大写(SQL不区分大小写)。 

2、 连接符or、in、and、以及=、!=、<、>、<=、>=、<>等前后加上一个空格。 

3、 对较为复杂的SQL语句加上注释,说明算法、功能。 
注释风格:注释单独成行、放在语句前面。 
(1) 应对不易理解的分支条件表达式加注释; 
(2) 对重要的计算应说明其功能; 
(3) 过长的函数实现,应将其语句按实现的功能分段加以概括性说明; 
(4) 每条SQL语句均应有注释说明(表名、字段名)。 
(5) 常量及变量注释时,应注释被保存值的含义(必须),合法取值的范围(可选) 

(6) 可采用单行/多行注释。(-- 或 /* */ 方式) 

4、 SQL语句的缩进风格 
(1) 一行有多列,超过80个字符时,基于列对齐原则,采用下行缩进 

(2) where子句书写时,每个条件占一行,语句令起一行时,以保留字或者连接符开始,连接符右对齐。 

5、 多表连接时,使用表的别名来引用列。 

6、 供别的文件或函数调用的函数,绝不应使用全局变量交换数据; 

7、 变量令名不能超出ORACLE的限制(30个字符),令名要规范,要用英文令名,从变量上能看到变量的作用,如 
        g名称 全局变量 
        m名称 局部变量 
        c名称 光标 

        p名称 参数

8、 查找数据库表或视图时,只能取出确实需要的那些字段,不要使用*来代替所有列名。要清楚明白地使用列名,而不能使用列的序号。 

9、 功能相似的过程和函数,尽量写到同一个包中,加强管理。 

1、避免嵌套连接。例如:A = B and B = C and C = D 

2、where条件中尽量减少使用常量比较,改用主机变量 

3、系统可能选择基于规则的优化器,所以将结果集返回数据量小的表作为驱动表(from后边最后一个表)。 

4、大量的排序操作影响系统性能,所以尽量减少order by和group by排序操作。 
如必须使用排序操作,请遵循如下规则: 
(1) 排序尽量建立在有索引的列上。 

(2) 如结果集不需唯一,使用union all代替union。 

5、索引的使用。 
(1) 尽量避免对索引列进行计算。如对索引列计算较多,请提请系统管理员建立函数索引。 
(2) 尽量注意比较值与索引列数据类型的一致性。 
(3) 对于复合索引,SQL语句必须使用主索引列 
(4) 索引中,尽量避免使用NULL。 
(5) 对于索引的比较,尽量避免使用NOT=(!=) 

(6) 查询列和排序列与索引列次序保持一致 

6、尽量避免相同语句由于书写格式的不同,而导致多次语法分析,尽量使用Bind变量。 

7、尽量使用共享的SQL语句。 

8、查询的Where过滤原则,应使过滤记录数最多的条件放在最前面。 

9、任何对列的操作都将导致表扫描,它包括数据库函数、计算表达式等等,查询时要尽可能将操作移至等号右边。 

10、in、or子句常会使用工作表,使索引失效;如果不产生大量重复值,可以考虑把子句拆开;拆开的子句中应该包含索引。

1、尽量少用嵌套查询。如必须,请用not exist代替not in子句。如例(2) 

2、用多表连接代替EXISTS子句。 

3、少用DISTINCT,用EXISTS代替 

4、使用UNION ALL、MINUS、INTERSECT提高性能 

5、使用ROWID提高检索速度。对SELECT得到的单行记录,需进行DELETE、UPDATE操作时,使用ROWID将会使效率大大提高。 

6、使用优化线索机制进行访问路径控制。 

7、使用cursor时,显示光标优于隐式光标

 03数据库操作DDL

猜你喜欢

转载自www.cnblogs.com/lxm-001/p/10954588.html