mysql以前笔记

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhazhaji/article/details/81035170

dml: (基于数据表数据操作的命令)

select, update delete, insert into

ddl:(操作表结构属性有关的命令)

alter(add, modify, change,drop)

drop , create


dml基本语法

select * from table

update table set field='value'

delete from table

insert into table(field, field) values ('value', 'value'), ('value', 'value')

ddl本语法

create table 表名 (

  字段名 类型(长度)| enum('value', 'value') 约束 comment '备注',

  primary key(字段名),

  unique(字段名),

  unique index 名字(字段名),

  index(字段名),

  constraint 外键名 foreign key(本表字段名) references 外表名(外表字段名)

)ENGINE=INNODB DEFAULT charset=utf8 COMMENT '表备注';

create view

alter table add 字段名 类型(长度) 约束

alter table add constraint 外键名 foreign key(本表字段名) references 外表名(外表字段名)

alter table add index


分组函数

group by 与 count, avg, sum, avg, having, where

select avg(number) as avg_number from score group by user_id having avg_number > 60 where status = 1;

解释:从score表中 获取status = 1的结果集中,根据user_id分组,计算每个user_id的avg(number) 平均分得到的结果集后 再筛选平均分大于60的数据。

优先级 where > group by > having

distinct 从结果集中并去重


多表查询(子查询,联合查询)

子查询

select (select xxx) from (select xxx) join (select xxx) on where id in (select xxx)

联合查询

内连 inner join

外联

left join 获取join的右边表字段为空时设为null

right join 获取join的左边表字段为空时,设为null

内连与外联在于 ,前者需在所有联合的表中on的条件下 同时满足则返回数据,后者则如果不满足on条件,则获取的join表的字段为空时设为NULL

储存引擎

myisam 和 innodb (常用)

myisam

数据和索引储存在内存中,一旦断电,则可能丢失数据

多用于查询用,效率高

表级锁

可转换压缩文件,并提供只读,省空间

innodb

多用于数据更新

支持事物回滚

行级锁

支持联级表更新删除

数据库崩溃可自动恢复

视图

可以把查询复杂的语句存到视图中,减少工作量,提高开发效率

create view myview as select * from a join b on b.id = a.b_id

Show create view myview

Drop view if exists myview

如果a和b表数据更改了,view也更改,但创建view以后,开发人员直接是select * from myview 代替上面的复杂语句

数据库设计

一对一

一对多

多对多

猜你喜欢

转载自blog.csdn.net/zhazhaji/article/details/81035170
今日推荐