- 如果要更新表数据的话,使用UPDATE子句:UPDATE customers SET cust_name ='happy',cust_email='happy@gmail.com' WHERE cust_id = 1001;
- 注意:如果不加WHERE条件指定到某一行的话,会更新表中某一列全部的数据 。
- 如果从表中删除数据的话,可以使用DELETE子句 。DELETE FROM customers WHERE cust_id = 10086;删除的数据必定是表中行数据,而不是某一列 。因此,与UPDATE子句相比,DELETE子句并不需要指定是哪一列,而仅仅只需要指定具体的表名即可;
- 注意:如果不添加WHERE指定条件的话,会将整个表中所有行数据全部删除 。另外,DELETE只是删除表中的数据,而不会删除表结构信息;
- 如果想删除表中全部的数据,可以使用TRUNCATE,比DELETE删除效率更高;
(8)SELECT (9)DISTINCT<select_list>(1)FROM <left_table>(3)<join_type> JOIN <right_table>(2) ON <join_condition>(4)WHERE <where_condition>(5)GROUP BY<group_by_list>(6)WITH{CUBE|ROLLUP}(7)HAVING<having_condition>(10)ORDER BY<order_by_list>(11)LIMIT<limit_number>复制代码
- FROM:对FROM左边的表和右边的表计算笛卡尔积,产生虚表VT1;
- ON:对虚拟表VT1进行ON筛选,只有那些符合<join_condition>条件的行才会被记录在虚拟表VT2中;
- JOIN:如果是OUT JOIN,那么将保留表中(如左表或者右表)未匹配的行作为外部行添加到虚拟表VT2中,从而产生虚拟表VT3;
- WHERE:对虚拟表VT3进行WHERE条件过滤,只有符合<where_condition>的记录才会被放入到虚拟表VT4;
- GROUP BY:根据GROUP BY子句中的列,对虚拟表VT4进行分组操作,产生虚拟表VT5;
- CUBE|ROLLUP:对虚拟表VT5进行CUBE或者ROLLUP操作,产生虚拟表VT6;
- HAVING:对虚拟表VT6进行HAVING条件过滤,只有符合<having_condition>的记录才会被插入到虚拟表VT7中;
- SELECT:执行SELECT操作,选择指定的列,插入到虚拟表VT8中;
- DISTINCT:对虚拟表VT8中的记录进行去重,产生虚拟表VT9;
- ORDER BY:将虚拟表VT9中的记录按照<order_by_list>进行排序操作,产生虚拟表VT10;
- LIMIT:取出指定行的记录,产生虚拟表VT11,并将结果返回 。
4.1 创建索引
创建索引有两种方式,一种是直接利用CREATE INDEX进行创建,另外一种则是通过修改表结构来进行添加,则是利用ALTER TABLE语句 。
- 使用CREATE INDEX
- 语法为:
- 其中对应的语法变量信息如下:
[UNIQUE|FULLTEXT|SPATIAL]
- 其中括号中的这三个关键字表示创建的索引类型,它们分别表示唯一索引、全文索引、空间索引三种不同的索引类型 。如果我们不指定任何关键字,则默认为普通索引 。
index_name
- index_name表示索引的名称,由用户自行定义,以便于以后对该索引进行修改等管理操作 。
index_type
- index_type表示索引的具体实现方式,在MySQL中,有两种不同形式的索引——BTREE索引和HASH索引 。在存储引擎为MyISAM和InnoDB的表中只能使用BTREE,其默认值就是BTREE;在存储引擎为MEMORY或者HEAP的表中可以使用HASH和BTREE两种类型的索引,其默认值为HASH 。
index_colname
- index_col_name表示需要创建索引的字段名称,我们还可以针对多个字段创建复合索引,只需要在多个字段名称之间以英文逗号隔开即可 。此外,对于CHAR或VARCHAR类型的字段,我们还可以只使用字段内容前面的一部分来创建索引,只需要在对应的字段名称后面加上形如(length)的指令即可,表示只需要使用字段内容前面的length个字符来创建索引 。在这里,我们以customers表的cust_name字段(类型为VARCHAR(50))为例,使用cust_name字段的6个字符前缀来创建索引 。
推荐阅读
- mysql行列转换
- mysql查询条件字段值末尾有空格也能查到数据问题
- MySQL性能指标实时监控--awk命令实现
- MySQL连表Update修改数据
- MySQL数据库的SQL预处理技术,优化数据库必备
- MySql 三大知识点,索引、锁、事务,原理分析
- MySQL基于GTID的多线程同步方案
- 11条MySQL规范,你知道的有几个? Java架构师追风 2019-08-28 16:36:08
- MySQL索引原理
- MySQL、SQL Server、Oracle对比,你必须了解的三大数据库区别
