代码小白产品经理,要懂的mysql语言(三)

代码小白产品经理,要懂的mysql语言(一)

代码小白产品经理,要懂的mysql语言(二)

19.主键与自增

主键primary key 此列不重复,能够区分每一行。

自增auto_increament为数值递增,一张表中只能有一列自增列,且此列必须加索引。

    -> create tabel B <

    -> id int primary key

    -> name char <2>

    -> insert into B values <3,li>

    ->

    -> create tabel B <

    -> id int primary key auto_increament

    -> name char <2>

    -> >

20.列的增删改

modify只能改列属性,不能改列名,*int为*属性

    -> alter table B

    -> add height tinyint unsigned not null default 0

    -> desc B

    ->

    -> alter table drop column height

    ->

    -> alter table B change height shengao smallint

    ->

    -> alter table B modify shengao tinyint

21.视图view

从一个表中抽出部分列作结果集,再查询,请将该结果集存起来。

    -> create view goods2 as select goods_id,goods_name,(market_price-shop_price) as sheng from goods

更改原表(即物理表)的数据,现表(即虚拟视图)也发生变化。

view视图能否增、删、改:

若视图每一行与物理表一一对应,则可以,若view行由物理表多行经计算得到,则不可以。

    -> update goods set age=age+1 where set_id=3

22.视图algorithm(视图算法)

视图放哪了?

对于简单查询形成的view,再对view查询时,如where、order等,可以把建视图语句加查视图语句合并形成查物理的语句,这种视图算法叫marge合并。

    -> veiw algorithm

    -> creat view goods2 as select goods_id,goods_name,shop_price,shop_market from goods

    -> select * from goods2 order by shop_price limit 3

    ->

    -> creat view goods as select goods_id,goods_name,shop_price,shop_market from goods order by shop_price limit 3

    ->

    -> create algorithm=marge view  goods3 as select goods_id,goods_name from goods

23.表/视图管理语句

show tables:查表,查看库下有哪些表

desc B:查表/视图的结构,有哪几列,列类型是什么

drop table:删除表,若不能正确执行,会报错

drop view:删除视图

show create table A 、show create view A:查看建表/视图过程,两者可正常执行,且一样(即show create table A = show create view A)

show table status:查看表信息,查看所有表

    -> show table status where name='goods'

更改表名称

    -> rename table goods to good=goods

清空表数据

    -> delet from B where id=2

    -> insert into B values

    -> drop table B

24.索引概念

索引是数据目录,可以快速定位行数据的位置;

索引提高了查询速度,降低了增删改的速度,但是,并非加的越多越好;

一般在查询较频繁的列上加,且重复度低的列上加效果更好;

key:普通索引

primary key:主键索引

unique key:唯一索引

full text:全文索引,中文环境下,全文索引无效,要分词+索引,一般引用第三方解决方案

    -> create table B <

    -> name char(10)

    -> email char(20)

    -> key name(name)

    -> >

    -> 

    -> create table B <

    -> name char(10)

    -> email char(20)

    -> unique key email(email)

    -> >

    -> desc B

    -> insert into B values <'lilei','lilei.com>

索引长度:建索引时,可以只索引列的前一部分内容,比如前10个字符;

索引仅是目录中部分,并不影响插入字符长度;

多列索引:把2列或多列值看成一个整体;

冗余索引:在某个列上,可能存在多个索引。

代码小白产品经理,要懂的mysql语言(四)

你可能感兴趣的:(代码小白产品经理,要懂的mysql语言(三))