MySQL 概述 与 基础

概述篇


1.字段命名规范:

驼峰命名第一个单词首字母小写,其余单词首字母大写,例如 studentName
第二种所有单词小写,单词之间"_"符号隔开, 例如 student_name

1.1其他命名原则

函数名"_fun"后缀
存储过程“_proc”后缀
视图名“_view” 后缀
触发器名“_trig” 后缀
索引名“_index” 后缀
外键约束名"_fk"后缀

注意: 命名尽量避免使用关键字
其他:windows 中 数据库名 表名大小写不敏感。linux 中 就比较敏感

2.范式


第一范式(1NF)

同一张表内同类字段不重复出现

第二范式(2NF)

满足1NF基础上,每个 “非关键字” 字段仅仅函数依赖于主键。

举个反栗:不满足2NF (删除线标明,需要两个字段 共同确定唯一数据)

学号姓名性别课程号课程名
2012001张三5数学
2012002李四5数学
2012003王五5数学
2012004周六5数学
2012001张三4英语
2012002李四4英语

该表主键为复合主键( 学号 课程号 )

解决:

分为 课程表 和 学生表

第三范式(3NF)

满足2NF基础上,不存在“非关键字”字段依赖于任何其他“非关键字”字段

举个栗反:不满足3NF

学号姓名性别居住地邮编
2012001张三北京10000
2012002李四上海20000
2012003王五天津30000
2012004周六南京40000

原因:“非关键字” 字段 “邮编” 依赖于 “非关键字” 字段“居住地” (还有例如,生日可以从身份证号中推出)
为满足要求:分为两个表:


学生表

学号姓名性别
2012001张三
2012002李四
2012003王五
2012004周六

居住地表

居住地邮编
北京10000
上海20000
天津30000
南京40000

3.约束条件


约束名称Explain
主键约束(primary key)唯一非空,一张表只有一个主键
外键约束(foreign key)保证外键字段与主键字段一致性
唯一性(unique)希望字段值不重复,可添加此约束(表中可有多个unique约束)
非空(not NULL)字段不能取NULL
检查约束(check)在已有集合中取值
默认值约束(default)指定默认值

4.存储引擎


MySQL 提供的是插件式(pluggable)存储引擎,存储引擎是基于表的,也就是说 同一数据库,不同的表,存储引擎可以不同,甚至
同一个数据库 在不同场合下可以应用不同的存储引擎。

其中 InnoDB 是默认的(default)存储引擎(5.5版本开始),5.6版本后 支持全文索引

对比InnoDBMyISAM
事务支持不支持
外键支持不支持
索引聚集索引非聚集索引
全文索引5.6以后支持支持
表的具体行数不保留保留
行锁表锁
适用场景事务考虑select多
InnoDB 特点:
  1. InnoDB是事物安全的,且支持外键
  2. 出于事务安全考虑,InnoDB是更好的选择**
  3. InnoDB影响速度的主要原因:
    开启了自动提交 (autocommit) 选项,或者没有显示调用 begin transation(事务开始),commit(提交事务),导致每一条insert,delete,update 自动开始 和提交事务,影响了 效率,后面我们会使用多条语句 形成一个事务,提高操作性能。
MyISAM 特点:
  1. MyISAM 事务不安全 ,不支持 foreign key
  2. 建议1:MyIASM 表 可被压缩,若某张表要提供 OLAP支持,则建议使用此种引擎
  3. 建议2:需要执行大量 selete 语句,MyISAM 是更好的选择

基础篇


常见mySQL cmd命令

net start mysql;       					    //启动 MySQL 服务
net stop mysql;      					    //停止MySQL 服务
show character set;      					// 显示所有字符集
mysql -u root -p database_password;      	// 登录
create database database_name;      		// 创建数据库
use database_name;      					// 指定要操作的数据库
drop database database_name;     			// 删除数据库
rename database oldd_name TO new_name		//更改数据库名 (此种办法可能会有数据丢失风险)
show create database database_name;      	//显示 create database 的代码段
show engines;      							//MySQL 支持的引擎
create table table_name(      				//创建表

);

表的操作:

show tables;						//显示当前数据库中的表
desc table_name;					//显示表结构
show create table table_name;		//显示 create table 的代码段(我自己常用来查看一些约束,字符集...等)
insert into table_name values();	//插入数据
select * from table_name;			//显示表中所有数据
drop table table_name;				//删除表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值