您的位置:首页 > 数据库 > MySQL

mysql基础总结 语法篇

2017-03-25 22:58 211 查看
关系
-------------------------------------------------------------------------

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

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

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

范式: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 起始位置,长度;

 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: