mysql基础总结 语法篇

来源:互联网 发布:2015公安部上牌数据 编辑:程序博客网 时间:2024/05/16 11:37

关系
-------------------------------------------------------------------------
将实体与实体之间的关系反映到数据库的表中:一对一,一对多,多对多;所有的关系都是表与表的关系

一对一:一张表的一条记录只能与另一张表的一条记录相对应;

一对多:一张表的一条记录可以对应另一张表的多条记录,但反过来,另一张表的一条数据只能对应一条记录;


范式:Normal Format,是为了解决一种数据存储与优化的问题:保存数据后,凡是能通过关系找出来的数据,坚决不重复存储,减少冗余。

范式是一种分层结构规范,一共六层:每一层都比上一层严格:若要满足下一层范式,前提是满足上一层。

3NF:就是解决传递依赖的问题。
运用范式就代表着数据库效率降低,却能减少空间冗余,数据库一般运用三范式就行了,更高的范式会降低效率;


数据高级操作
----------------------------------------------------------------------

新增数据

主键冲突:当主键冲突时,可以选择性进行处理:更新和替换
更新:
Insert into 表名 (字段列表)valeus(值列表) on duplicate key uopdate 字段=新值;
替换:
Replace 表名 (字段列表) vlaues(值列表);

蠕虫复制
从已有数据中先查询数据在复制数据,数据成倍增长,蠕虫复制可测试表的压力及效率。
复制表
create table 表名 like 目标表名;
数据复制(也可复制自己的数据)
insert into 表名 select * from 目标表名;

高级更新
updata 表名 set 字段=值 [where条件] [limit 更新数量];//限制更新条数
高级删除
删除后,自增长主键id不会还原,数据删除不会改变表结构。
delete table [where 条件]   [limite 数量];
Truncate 表名;//先删除表,再创建表查询语法

 

完整语法
—————————————————————————————————————
Select [select选项] [字段别名]  from 数据源 [where条件][group by 子句][having子句][order by子句][limite子句] 

select选项:投影结果处理方式
all:投影全部,不给值默认为all
distinct:除去重复

字段别名
当数据进行查询时候,多表查询可能会有重名字段,需要对字段进行重命名
例:
select
id,
number as 学号,
name as 姓名 from my_student; //可以加as也可以不加

数据源
关系型数据库的来源都是数据表,本质上类似二维表的数据都可以做数据源。

多表数据源:select * from 表一,表二;//作笛卡尔积运算,交叉连接

子查询:select * from(select * from 表名)as ch;


where 子句
用于判断数据,进行筛选;返回1或0(true或false)。
比较运算符:<,>,>=,<=,!=,<>,=,like,between and,in/not in
逻辑运算符:&&(and),||(or),!(not)

group by 子句 desc;//降序
分组是为了进行数据统计,count()统计分组后的记录数:每一组有多少记录;
Max(),Min(),Avg(),Sum();
例:
select sex ,count(*),max(height),avg(age),sum(age)from my_student group by sex;

回溯:with rollup;


having 子句
与where字句一样,进行条件判断的,
where在对磁盘数据进行筛选判断,进入内存后再分组:而分组结果就需要having处理,所以统计后的筛选只能用having。
如:统计人数大于2的房间号
   select room,count(*) from my_class group by room having count(*)>2;
   count()可使用别名优化资源
   select room,count(*) as num from my_class group by room having num>2;

Order by 子句
依赖校对集进行排序。
order by 字段名 [asc|desc];//asc升序(默认)


多字段排序:先总体排序,再内部排序
 select * from my_class order by  sex,height;(先分男女,再男女分开排身高)


Limit 子句
1.限制数量
limit 数量;

2.限制起始位置,显示数量,实现分页功能;
limite 起始位置,长度;

 

 

1 0
原创粉丝点击