MySQL易忘知识点梳理

一、零碎知识

1、mysql where子句区分大小写:WHERE BINARY

2、判断是否为null,只能用is null,is not null,不能用=null或!=null

3、函数

4、SQL中Where与Having的区别

  • “Where” 是一个约束声明,使用Where来约束来之数据库的数据,Where是在结果返回之前起作用的,且Where中不能使用聚合函数。
  • “Having”是一个过滤声明,是在查询返回结果集以后对查询结果进行的过滤操作,在Having中可以使用聚合函数。

二、事务

  • begin,rollback,commit;
  • 改变 MySQL 的自动提交模式:
    SET AUTOCOMMIT=0 禁止自动提交
    SET AUTOCOMMIT=1 开启自动提交

三、ALTER

1、删除,添加或修改表字段

ALTER TABLE testalter_tbl  DROP i;
ALTER TABLE testalter_tbl ADD i INT;
TABLE testalter_tbl ADD i INT FIRST;// FIRST (设定位第一列)
TABLE testalter_tbl ADD j INT AFTER c;// AFTER 字段名(设定位于某个字段之后)

2、修改字段类型及名称

ALTER TABLE testalter_tbl MODIFY c CHAR(10);
ALTER TABLE testalter_tbl CHANGE j j INT;

3、ALTER TABLE 对 Null 值和默认值的影响

  • 如果你不设置默认值,MySQL会自动设置该字段默认为 NULL
ALTER TABLE testalter_tbl MODIFY j BIGINT NOT NULL DEFAULT 100;
  • 设置默认值
ALTER TABLE testalter_tbl ALTER i SET DEFAULT 1000;
ALTER TABLE testalter_tbl ALTER i DROP DEFAULT;

4、修改表名

ALTER TABLE testalter_tbl RENAME TO alter_tbl;

5、修改存储引擎

ALTER TABLE testalter_tbl ENGINE = MYISAM;

四、索引

实际上,索引也是一张表,该表保存了主键与索引字段,并指向实体表的记录
单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索引包含多个列。
索引可以大大提高MySQL的检索速度,但过多的使用索引将会造成滥用。因此索引也会有它的缺点:虽然索引大大提高了查询速度,同时却会降低更新表的速度,如对表进行INSERT、UPDATE和DELETE。因为更新表时,MySQL不仅要保存数据,还要保存一下索引文件。
建立索引会占用磁盘空间的索引文件。

1、普通索引

CREATE INDEX indexName ON mytable(username(length)); 
ALTER table tableName ADD INDEX indexName(columnName);
CREATE TABLE mytable(  
 
ID INT NOT NULL,   
 
username VARCHAR(16) NOT NULL,  
 
INDEX [indexName] (username(length))  
 
);  

2、唯一索引

它与前面的普通索引类似,不同的就是:索引列的值必须唯一,但允许有空值。如果是组合索引,则列值的组合必须唯一。它有以下几种创建方式:
UNIQUE

CREATE UNIQUE INDEX indexName ON mytable(username(length)) ;

3、使用ALTER 命令添加和删除索引

  • ALTER TABLE tbl_name ADD PRIMARY KEY (column_list): 该语句添加一个主键,这意味着索引值必须是唯一的,且不能为NULL。
  • ALTER TABLE tbl_name ADD UNIQUE index_name (column_list): 这条语句创建索引的值必须是唯一的(除了NULL外,NULL可能会出现多次)。
  • ALTER TABLE tbl_name ADD INDEX index_name (column_list): 添加普通索引,索引值可出现多次。
  • ALTER TABLE tbl_name ADD FULLTEXT index_name (column_list):该语句指定了索引为 FULLTEXT ,用于全文索引。

五、处理重复数据

  • 可以在MySQL数据表中设置指定的字段为 PRIMARY KEY(主键) 或者 UNIQUE(唯一) 索引来保证数据的唯一性。
CREATE TABLE person_tbl
(
   first_name CHAR(20) NOT NULL,
   last_name CHAR(20) NOT NULL,
   sex CHAR(10),
   PRIMARY KEY (last_name, first_name)
);
  • 去重,用DISTINCT,或是用唯一索引做GROUP BY
SELECT DISTINCT last_name, first_name 
FROM person_tbl;
SELECT last_name, first_name
FROM person_tbl
GROUP BY (last_name, first_name);
原文地址:https://www.cnblogs.com/diffx/p/10096120.html