在正式开始学习前,我发现之前安装的MySQL忘记了root密码。
所以在这里补充一下找回root密码的方法:MySQL找回root密码
一、问题与解决:
1、在创建表的时候出现了「1046(ErrorCode:1046.No database select…)」的错误,具体解决办法如下:
2、更新表的内容时,出现如下错误:Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in Preferences -> SQL Queries and reconnect.
解决办法:
show variables like 'SQL_SAFE_UPDATES'; -- 查看安全状态
SET SQL_SAFE_UPDATES = 0; -- 关闭安全更新模式
二、扩展:
1、drop/ delete/ truncate 的区别:
- delete/truncate:只删除表中的数据,而不删除表的结构。(和事务无关就用truncate;与事务有关或者想触发trigger就用delete)
- drop:直接将整个表(数据和结构)删除
2、索引分类:
-
主键索引:
建立在主键上的索引,一张表只能有一个主键索引,索引列值不允许有空值,通常在创建表时一起创建。 -
唯一索引:
在设计关系数据表的时候,看上去唯一的列,例如身份证号、邮箱地址等,因为他们具有业务含义,因此不宜作为主键。
但是,这些列根据业务要求,又具有唯一性约束:即不能出现两条记录存储了同一个身份证号。这个时候,就可以给该列添加一个唯一索引。
-
普通索引:
建立在普通字段上的索引。 -
前缀索引:
指对字符类型字段的前几个字符或者二进制类型字段的前几个bytes建立的索引,而不是在整个字段上建索引。
前缀索引可以建立在类行为char, varchar, binary, varbinary的列上,可以大大减少索引占用的存储空间,也能提升索引的查询效率。 -
全文索引:
利用“分词技术”实现在长文本中搜索关键字的一种索引。
最好在插入数据后在创建全文索引 -
单列索引:
建立在单个列上。 -
多列索引:
建立在多个列上。
三、练习
1、创建表
create table Addressbook
(
regist_no integer not null,
regist_name varchar(128) not null,
address varchar(256) not null,
tel_no char(10),
mail_address char(20),
primary key (regist_no)
);
2、添加一列
alter table Addressbook add column postal_code char(8) not null;
3、删除表
drop table Addressbook; -- 表结构和内容都删除
truncate table Addressbook; -- 只删除内容不删除结构
两种删除方式都可以有对应的方式进行恢复:参考链接