SQL编程学习01

wuchangjian2021-11-16 09:35:24编程学习

一、问题与解决:

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;  -- 只删除内容不删除结构

两种删除方式都可以有对应的方式进行恢复:参考链接

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。