mysql 基础注意点

cmd--mysql mysql/bin

zerofill not null default xxxx

unsigned not null default XXXX

auto_increment primary key 

show create table goods;查看见表语句

c 终止命令

create table test5 (
-> ts timestamp default CURRENT_TIMESTAMP --当前时间 XXXX-XX-XX XX:XX:XX格式
-> ,
-> id int
-> )engine myisam charset utf8;

alter table XXX modify / change 的区别

max,min,sum,avg,count 注意null列 null count(*)  count(id)注意null影响

select goods_id,sum(goods_number) from goods; 错误的 goods_id是第一次粗线的值

select name,count(score<60) as k,avg(score) from stu group by name; 错误

select name,sum(score < 60) as gk ,avg(score) as pj from stu group by name having gk >=2

取出点击量前三名到前5名的商品 select goods_id,goods_name,click_count from ecs_goods order by click_count desc limit 2,3;

group by having 顺序注意

注意聚合函数max min sum 之类如果连带查name 的附属列 ,注意name不一定是要的值

例子 每个栏目下id最大的XXX

select goods_id,goods_name from
(select goods_id,cat_id,goods_name,shop_price,add_time from goods
order by cat_id,goods_id desc) as tmp
GROUP BY cat_id order by goods_id

select goods_id,goods_name from goods where goods_id in (
select max(goods_id) from goods GROUP BY cat_id
)

exists的用法 下面有内容的项目

select cat_id,cat_name from category
where exists (select * from goods where goods.cat_id=category.cat_id);

null的判断方式注意!count(*) count(id) 对于 null值那一行的统计有什么不同

select from table1,table2 并集  t1Xt2

create table minigoods like goods; 创建某表像goods表的结构

select 'A' = 'a';

A left join B 以A为基准  A不会有null B则可能有null

A right join B 以B为基准,A可能有null B不一定有null

inner join 不允许有 null 包含行

 union 会去除相同的重复行,每个列 

union all 则是并集 

列名不同,列类型不同,可以union / union all

 create view viewname as

select XXXXXXXXXXXXXX from XXX

where XXXXXXXXXXXXXXXXXXXXX

使用视图操作表数据

(一)、通过视图添加表数据
使用INSERT语句实现。 注意:视图是虚拟表,其本身不存储数据(来自其引用表),添加的数据是存储于视图参照的数据表中。
条件分析:1)用户有向数据表插入数据的权限;2)视图只引用表中部分字段,插入数据时只能是明确其应用的字段取值;3)未引用的字段应具备下列条件之一: 允许空值;设有默认值;是标识字段;数据类型是timestamp或uniqueidentifer;4)视图不能包含多个字段的组合5)视图不能包含使用统计函数的结果;6)视图不能包含DISTINCT或GROUP BY子句;7)定义视图使用WITH CHECK OPTION,则插入数据应符合相应条件;8)若视图引用多个表,一条INSERT语句只能同一个基表表中数据;
例:首先创建了一个新的视图:
CREATE VIEW ygb_view AS SELECT * FROM 员工表 WHERE 员工表.性别=‘女’ with check option
然后,通过执行以下语句使用该视图向基表添加一条新的数据记录:INSERT INTO ygb_view(姓名,性别,工资) values(‘李立平’,‘女’,2300)
(二). 更新数据记录 使用视图可以更新基表数据记录(注意使用INSERT时的限制同样适用)。例子3:(1) update 项目_view set 项目负责人= ‘王大力’ where 项目负责人= ‘王立兵’(2) update 项目_view set 结束日期= DATEADD(day,50,结束日期) where 客户名称=‘CCH公司’
(三)、删除数据记录  利用DELETE语句,使用视图删除记录,可以删除任何基表中的记录。 注意: 必须指定在视图中定义过的字段来删除记录; 视图引用多个表时,无法用DELETE命令删除数据。例子4:delete ygb_view where 员工工资<1500

 视图仅仅是一个虚拟表,本身不具有任何数据

原文地址:https://www.cnblogs.com/zy2012/p/3590969.html