select name from student where comment like“a%”; comment域的索引就起到了作用 Explain 分析索引
语法: explain select age from test12; Explain 分析mysql中的索引: table:查询中涉及的表
type:显示连接中使用了何种类型
const(最好),eq_ref,fef,range,index和all possible_keys:可能用到的索引
key:实际使用的索引,可以在select语句中使用use index
(indexname)来强制使用索引,用ignore index(indexname)来强制忽略索引key_len:使用的索引长度,越短越好; ref(references):显示索引哪一列被使用了 rows:mysql必须检查用来返请求数据的行数
extra:using temporary(需要临时表来存储结果,通常发生在对不同的列集进行order by),usig filesort 意即mysql根本 不能使用索引
索引的算法:btree bitmap 使用索引注意的事项;
1、合理创建索引,反之会降低数据库的查询效率,反之创建的索引会失去意义。
mysql的备份方式:backup、 restore 、copy//冷备份、mysqldump、select into
backup备份myisam表的 示例: >use test;
>backup table chat to 'c:\\\\db_backup';
只生成 .frm 和 .myd,可以在数据库恢复后重建索引 >drop table chat;
>restore table chat from 'c:\\\\db_backup'; copy备份
1、停止mysql服务器一避免 在备份的时候有用户进行数据库的访问 1、复制数据库的文件夹 用mysqldump备份 备份库 1、备份
#mysqldump -uroot -p dbname >xxxname.sql
再打开查看(创建表备份的sql语句) 2、恢复
#mysql -uroot -p dbname <> 备份某个表 1、备份
#mysqldump -uroot -p dbname tablename >xxxname.sql
再打开文件进行查看(创建表备份的sql语句) 2、恢复
#mysql -uroot -p dbname <> 用select into 备份
备份:mysql>select *from tablename into outfile 'c:\\\\db_backup\\table.dat'
删除表:
mysql>delete from tablename; 恢复:
mysql>load data infile 'c:\\\\db_backup\\table.dat' into table tablename; 作业: 1、唯一索引 2、全文索引
要求:理解她们的意思及用途,以及实验 3、select into备份 MYSQL其他客户端工具 查看数据库中有哪些数据库 mysqlshow -uroot -p 查看数据库中有哪些表 mysqlshow -uroot -p dbname 查看数据库中表的结构
mysqlshow -uroot -p dbname tablename
mysqlcheck客户端可以检查和修复myisam表,他还可以优化和分析表
1、mysqlcheck -uroot -p dbname //检测
2、mysqlcheck -uroot -p --auto-repair dbname //如碰到有问题的表自动进行修复
3、mysqlcheck -uroot -p --optimize //优化表 MYSQL 管理方式
连接方式----mysql -hlocalhost -uroot 通过本地主机,以root用户访问,无需密码验证
mysql -hlocalhost 通过本地主机,匿名用户访问,无需密码验证 设置密码----mysqladmin 外部:
1、修改密码--mysqladmin hlocalhost -uroot -p password \
2、密码为空--mysqladmin -hlocalhost -uroot -p password \ 3、设置root用户远程访问密码--mysqladmin -hremote -uroot -p password \ 内部设置密码:
1、设置root用户本地登录密码
set password for 'root'@'localhost'=password('000000'); 2、设置root用户远程登录密码
set password for 'root'@'remote'=password('newpassword'); 加密:
mysql> use start Database changed
mysql> create table users(username varchar(50),password varchar(50));
Query OK, 0 rows affected (0.16 sec)
mysql> insert into users values('abcd','123456'); Query OK, 1 row affected (0.34 sec)
mysql> insert into users values('abcdfg',password('123456')); Query OK, 1 row affected (0.00 sec)
mysql> select * from users; select user,host,password form user;
+----------+-------------------------------------- -----+ | username | password |
+----------+-------------------------------------- -----+ | abcd | 123456 |
| abcdfg | *6BB4837EB74329105EE4568DDA7DC67ED2CA2AD9 | +----------+-------------------------------------- -----+ 2 rows in set (0.00 sec) 系统中的权限表
user表:记录允许连接到服务器的用户帐号信息,里面的权限是全局 级的
db表:记录各个帐号在各个数据库上的操作权限 table_priv记录数据表级的操作权限 columns_priv:记录数据列级的操作权限
host表:配合db权限表对给定主机上数据库级操作权限作更细致的控制。这个权限表不受grant和revoke语句的影响 -------------------------------------------------- --------------------------------------------------- -------------------------------- 设置密码---修改user表 直接修改user表 mysql>use mysql;
mysql>update user set password=password('newpassword')where user='root';
mysql>flush privilegs;重新加载权限表,使修改立即生效