7-29 684 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 [偏移位,]取出条目数