mysql学习笔记(三)
2016-04-22 11:21
405 查看
-- 主键冲突(duplicate key) insert into user(id,username,address) values(1,'xujian','anhui'); insert into user(id,username,address) values(2,'xiewei','anhui'); insert into user(id,username,address) values(2,'luyang','anhui');-- 主键冲突了 -- 可以选择性的进行处理,更新或替换 -- 主键冲突:更新操作 insert into user(id,username,address) values(2,'xiewei','liuan') on duplicate key update address='liuan'; -- 主键冲突:替换操作 replace into user(id,username,address) values(2,'luyang','hefei'); select * from user; -- 蠕虫复制:从已有的数据中去获取数据,然后将数据又进行新增操作,数据将成倍增加 -- 表创建高级操作:从已有表创建新表 create table copyuser like user; -- 只复制结构,不复制数据 -- 蠕虫复制:先查出数据,然后将查出的数据新增一遍 insert into copyuser select(id,username,address) from user; -- 蠕虫复制的意义 -- 1、从已有表拷贝数据到新表中 -- 2、可以顺序让表中的数据膨胀到一定的数量级:测试表的压力以及效率 -- 更新数据 -- 基本语法: update user set username='wanghui' where id=1; -- 删除:如果表中存在主键自增长,那么当删除之后,自增长不会还原 -- 数据的删除是不会改变表结构只能删除表后重建表 truncate 表名; -- 清空数据,但是保留表的结构 -- 高级查询 -- 去掉重复数据(所有字段都一样) select distinct * from my_info; -- 字段别名:当数据进行查询出来的时候,有时候名字并不一定就满足需求, -- (多表查询的时候,会有同名字段),需要对字段名进行重命名 select name as 姓名,numbers as 学号 from my_info; select * from my_student,studentinfo; -- 从一张表中取出一条记录,去另一张表中匹配所有的记录,而且全部保留:(记录数和字段数) -- 将这种结果称为:笛卡尔积(交叉连接) -- 子查询:数据的来源是一条查询语句(查询语句的结果是二维表) select * from (select * from my_student) as s; -- where子句:返回的结果:0或1,0代表false,1代表true -- where是唯一一个直接从磁盘获取数据的时候就开始判断的条件:从磁盘取出一条记录,开始where判断,判断的结果如果成立保存到内存,如果失败直接放弃 -- group by 子句 :根据某个字段进行分组(相同的放一组,不同的分到不同的组) -- 分组的意义:是为了统计数据(安祖统计:按组字段进行数据统计) -- count:统计分组后的记录数(每一组有多少记录) -- max:统计每组中最大的值 -- min:统计最小值 -- avg: 统计平均值 -- sum:统计和 select count(*),gender,avg(age) as 平均年龄,max(age) as 最大年龄,min(age) as 最小年龄,sum(age) as 年龄总和 from studentinfo group by gender; -- 分组会自动排序:根据字段默认排序 -- group by 字段[asc|desc]; 对分组的结果然后合并之后的整个结果进行排序 -- Having子句:与where子句一样,进行条件判断 -- where是针对磁盘数据进行判断,进入到内存之后,会进行分组操作,分组结果就需要having来做 -- Having能做where能做的几乎所有事情,但是where却不能做having能做的很多事情 -- 1.分组统计的结果或者说统计函数都只有having能够使用 -- 2.Having能够使用字段别名,where不能 -- order by排序:根据某个字段进行升序或者降序,依赖校对集 select * from studentinfo order by age asc; -- limit子句:是一种限制借结果的子句,限制数量 -- 有两种使用方式: -- 方案一:只用来限制长度(数据量) select * from studentinfo limit 2; -- 方案二:限制起止位置,限制数量:limit 起始位置,限制数量 -- 主要用来实现数据的分页 select * from studentinfo limit 1,3;
相关文章推荐
- mysql建表---级联删除
- MySQL ibdata1文件太大的解决办法
- Install MySQL 5.7 Enterprise Server in 10 minutes
- ERROR 1130: Host '' is not allowed to connect to this MySQL server
- 4000 MySQL5.7多源复制(Multi-Source Replication)
- Windows 下连接mysql工具NavicatForMysql
- cnetos7安装mysqlsla
- Mysql函数汇总
- Emoji表情符号录入MySQL数据库报错的解决方案
- MySQL编译安装
- MySQL集群搭建
- 四种mysql存储引擎
- mysql存储过程加事务
- 很全面的Mysql数据库、数据库表、数据基础操作笔记(含代码)
- MySql数据基本操作sql语句
- 用distinct在MySQL中查询多条不重复记录值
- mysql视图学习总结
- mysql教程导出数据库教程几种方法
- mysql 5.7 版本,密码无法登陆,更改密码时出现ERROR 1054 (42S22): Unknown column 'password' in 'fie
- MySQL安装过程net start mysql 启动失败 报“错误2,系统找不到文件”的解决办法