索引
1、什么是索引索引对应的英语单词为:index索引相当于一本字典的目录,索引的作用是提供程序的检索【查询】效率索引被用来快速找出在一个列上用一特定值的行,没有索引,MySQL不得不首先以第一条开始,然后读完整个表直到它找出相关的行。表越大,花费时间越多,对于一个有序字段,可以运用二分查找,性能能得到本质上的提高,MYISAM和INNODB都是用B+Tree作为索引结构主键,unique都会默认的添加索引2、主键自动添加索引,所以能够通过主键查询尽量通过主键查询,效率较高。3、索引和表相同,都是一个对象,表是存储在硬盘文件中的,那么索引是表的一部分,索引也是存储在硬盘文件中的。4、在MySQL数据库管理系统中,对表中记录进行检索的时候,通常包括几种检索方式。第一种方式:全表扫描【效率较低】假设有一张表:emp表select * from emp where ename='wang';若ename字段上没有添加索引,那么在通过ename字段过滤数据的时候,ename字段会被全部扫描第二种方式:通过索引进行检索【提高查询效率】5、一张表中有多个字段,每一个字段都是可以添加索引的。6、什么情况适合给表中的某个字段添加索引?该字段数据量庞大该字段很少的DML操作【DML操作很多的话,索引也需要不断的维护,效率反而降低】该字段经常出现在where条件中7、怎么创建索引create index dept_dname_index on dept(dname);create unique index dept_dname_index on dept(dname);//添加unique表示dept表中的dname字段添加一个唯一性约束8、怎么删除索引drop index dept_dname_index on dept;DBA命令
1、新建用户
create user username identified by 'password';
2、授权
grant all privileges on dbname.tbname to 'username'@'login ip' identified by 'password' with grant option;
首先用root用户进入mysql,然后键入:grant select,insert,update,delete on *.* to abc@localhost identified by '123';
如果希望该用户能够在任何机器上登录mysql,则将localhost改为'%'3、回收权限
revoke privileges on dbname[.tbname] from username;
revoke all privileges on *.* from abc;修改密码
update user set password = password('111') where user = 'abc';
刷新权限:
flush privileges视图
1、什么是视图视图是一种根据查询(也就是select表达式)定义的数据库对象,用于获取想要看到和使用的局部数据视图有时也被称为“虚拟表”视图可以被用来从常规表(称为“基表”)或其他视图中查询数据相当于从基表中直接获取数据,视图有以下好处访问数据变得简单可被用来对不同用户显示不同的表的内容用来协助适配表的结构以适应前端现有的应用程序视图作用:提高检索效率隐藏表的实现细节【面向视图检索】视图可以隐藏表的细节
mysql是个命令行程序;
mysqld是服务,一般linux系统里的服务都是以d结尾的,比如httpd,vsftpd等等。
d的全拼应该是daemon,也就是守护程序的意思,常驻后台。导出导入
1、导出整个数据库mysqldump database>d:\xxx.sql -uroot -proot2、导出指定库下的指定表mysqldump database emp>d:\xxx.sql -uroot -proot3、导入source d:\xxx.sql数据库设计三范式
1、第一范式要求有主键,并且要求每一个字段原子性不可再分每一行必须唯一,也就是每个表必须有主键,数据库设计的最基本要求。主要通常采用数值型或定长字符串表示。关于列不可再分,应更具具体的情况来决定。如联系方式,为了开放上的便利性可能就采用一个字段2、第二范式要求所有非主键字段完全依赖主键,不能产生部分依赖一般不能用联合主键 因为一般都会出现仅依赖其中一个主键3、第三范式所有非主键字段和主键之间不能产生传递依赖4、几个经典的设计一对一:第一种方案:分两张表存储,共享主键t_husbandhno(pk) hname1 zhang2 li3 liut_wifewhn(pk) wname 【wnoon更是也是fk 引用t_husband的hno】1 a2 b 3 c第二种方案:分两张表存储,外键唯一t_husbandhno(pk) hname wifeno(fk-unique)1 zhang 1002 li 2003 liu 300t_wifewhn(pk) wname100 a200 b 300 c一对多:分两张表存储,在多的一方添加外键,这个外键字段引用一的一方中的主键字段多对多:分三张表存储,在学生表中存储学生信息,在课程表中存储课程信息,在学生课表中存储学生
5、实际开发在实际开发中尽量遵循三范式但是还是根据实际情况进行取舍有时可能拿冗余换速度最终目的是满足客户需求