mysql的基础知识

7-29 565 views

MYSQL是一种关系型数据库管理系统

1、列的默认值

not null:非空

default 'XX':预设值为XX

alter table 表名 add constraint  XXX   约束:添加约束

例如:alter table emp add constraint ppp primary key (id);

 

2、主键与自增:primary key auto_increment

自增:单表仅单列可为自增,且此列必须加索引

 

3、综合建表案例

1)定长与变长分离;常用列与非常用列分离;

2)主表,优先考虑效率;辅表,优先考虑空间。

 

4、视图:VIEW,又被称为虚拟表,是SQL的查询结果。

1)用途:权限控制、简化复杂查询、若与物理表一一对应,可实现更新删除添加操作。

3)使用

创建:create view 视图名 as select语句

删除:  drop  view 视图名

修改:alter view 视图名  as select 语句

2)演算法则

merge:当引用视图时,引用视图的语句与定义视图的语句合并;

temptable:当引用视图时,根据视图的创建语句建立一个临时表;

undefind:未定义,自动让系统帮你选;

例:create algorithm=merge view 视图名  as select语句

 

5、存储引擎

1)速度:memory>myisam>innodb

2)选择

memory:常用于临时中转表

myisam:不支持事务,锁表,常用于文章、新闻等安全性要求不高的表

innodb:支持事务,锁行,常用于订单、资金、账单、火车票等对安全性要求较高的表

 

6、字符集与乱码问题

1)查看系统字符集设置:show variables like '%char%';

2)客户端连接服务器时,把想要的字符集名称发送给mysql服务器,服务器会根据这个字符集分别设置

character_set_connection、character_set_client、character_set_results。这三个值

3)设置指令:set names 字符集名;

4)防乱码

a、网页文件格式、网页头部声明(<meta charset="">)、数据库表文件格式、取值格式  一致即可

b、标准写法:UTF-8,mysql:utf8;

 

7、索引:是数据的目录

1)快速定位,提高查询速度,一般用在查询频度高、重复度低的列;

2)分为

普通索引:key

唯一索引:unique key

主键索引:primary key

全文索引:full text

3)其他

索引长度:建索引时,可以只索引列的前一部分内容,例如:key e(email(10));

多列索引:把2列或多列的值看成一个整体,然后建索引,例如:key xml(xing,ming);

冗余索引:在某个列上,可能存在多个索引。

 

8、事务

1)隔离性、原子性、一致性、持久性

2)使用

开启:start transaction

提交:commit

回滚:rollback

3)当一个事务commit或者rollback就结束了,start transaction会造成事务隐式提交。

 

9、约束

1)五种约束

NOT NULL(非空约束,常与默认约束搭配使用)

PRIMARY KEY(主键约束,一表可设一个,常与自增auto_increment搭配使用)

UNIQUE KEY(唯一约束,保证记录的唯一性,可存在多个唯一约束)

DEFAULT(默认约束,若插入时无值,即为默认值)

FOREIGN KEY(外键约束,保证数据一致性、完整性,实现一对一或一对多关系)

2)外键约束要求

父表与子表必须使用相同的存储引擎,而且禁止使用临时表;

数据库的存储引擎只能为innodb;

外键列和参照列必须具有相似的数据类型,其中数字的长度或是否有符号位必须相同,而字符的长度则可以不同;

外键列和参照列必须创建索引,如果外键列不存在索引的话,MYSQL将自动创建索引。

3)外键约束操作

FOREIGN KEY (列名) REFERENCES 表名(列名) ON 操作 附加约束

操作解析

CASCADE:从父表删除或更新且自动删除或更新子表中匹配的行;

SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL,需保证子表列未设置not null;

RESTRICT:拒绝对父表的删除或更新操作;

NO ACTION:标准SQL的关键字,在MYSQL中与RESTRICT相同。

 

10、查询子句

1)顺序:WHERE、GROUP BY、HAVING、ORDER BY、LIMIT;

2)各简析

WHERE表达式 :

IN(,,...)——在集合内

ONT IN(,,...)——不在集合内

BETWEEN(,)——在某一范围内

AND——满足两者

LIKE '条件'——模糊查询

  • %通配所有字符
  • .通配单个字符
  • []指定范围内
  • [^]指定范围外

 

GROUP分组与统计函数:统计比较占资源,应该少用

GROUP BY 列名;(把相同值的数据放到一个组)

函数:COUNT()、AVG()、SUM()、MAX()、MIN()

 

HAVING——刷选结果集

select查询会生成.MYD数据文件,where是针对这个磁盘上的文件进行筛选,HAVING是针对内存上的结果筛选

 

ORDER BY——排序

磁盘上的文件,有可能是直接排好序的,也有可能没排好序,到内存里再排序

升序 ASC(默认);降序 DESC;多列排序用逗号隔开

 

LIMIT——限制取出条目

LIMIT [偏移位,]取出条目数

 

 

欢迎留言