windows2008 iis 网站,苏州整站优化,网站运营和seo的区别,html5设计网页代码在刷了上百道sql题后#xff0c;发现所有的题目都是基于某一个或几个知识点来做考察的#xff0c;所以理清基础的知识细节#xff0c;才能在题目考察到任意知识点时#xff0c;找到解决线索。温故而知新#xff0c;学习在于总结#xff0c;于是我再次对已经学习过的mysql…在刷了上百道sql题后发现所有的题目都是基于某一个或几个知识点来做考察的所以理清基础的知识细节才能在题目考察到任意知识点时找到解决线索。温故而知新学习在于总结于是我再次对已经学习过的mysql的知识进行梳理得到基础和进阶两篇知识框架的总结。如果对你有帮助建议点赞收藏本文是MySQL基础知识的总结主要涵盖增、删、改、查四个方面内容大纲一、增创建数据库create database 数据库名称create database taobao;创建表create table 表名列 格式 null设置·····主键设置primary key (主键列)CREATE TABLE ProductIns(
product_id char(4) NOT NULL,
product_name VARCHAR(100) NOT NULL,
product_type VARCHAR(32) NOT NULL,
sale_price INTEGER DEFAULT 0,
purchase_price INTEGER ,
regist_date DATE,
PRIMARY KEY (product_id));根据查询创建新表create table 表名 as select ·············create table user_lc AS select count(DISTINCT user_id) as 第一天新增用户数
from userbehavior
where dates 2017-11-25;创建新列alter table 表名 add column 列名 格式alter table lc_copy add column ListingId varchar(20);二、删慎用删除数据库drop database 数据库名称drop database school;删除数据表drop table 表名drop table product;只删数据不删表delete from 表名指定条件 wheredelete from product
where sale_price 400三、改修改表名alter table 旧表名 rename to 新表名alter table score rename to score2;向表中插入数据insert into 表名列名···values‘数据’····INSERT INTO productins(id,name,type)
VALUES(001,T恤衫,衣服);从其他表复制数据插入insert 新表 (列名···select 列名··from 旧表insert into producttype(pr_type,sum_sale,sum_purchase)
select pr_type,sum(sale),sum(purchase)
from product
group by type;修改列值update 表名 set 列名 表达式指定条件 where多列更新set 列名1 表达式列名2 表达式update product set regist_date 2009-10-10
where product_id 008;四、查重点基本select某列select 列名 from 表名select id from score;全表select * from 表名select * from score;去重select distinct 列名 from 表名--查询不同ID
select distinct id from score;--统计不同ID个数
select count(distinct id) from score;--优化写法
select count(*) from
(select distinct id from score) as a聚合count/sum/avg/max/min-- 统计最大/最小/平均薪水
select max(salary), min(salary),avg(salary)
from employee分组group by--查询每个班平均成绩
select avg(score) from student
group by class;筛选where指定行对应条件不可用聚合函数select score from student
where id 001;having指定组对应条件可用聚合函数select avg(score) from student
group by class
having avg(score)80;排序order by升序Asc 降序Desc多个排序order by 列名1列名2从左到右优先原则SELECT 学号,成绩 from score2
ORDER BY 成绩 Desc;limit从查询结果中取出指定行进阶limit N返回 N 条记录offset M跳过 M 条记录M 默认为 0limit M,N跳过M条记录返回 N 条记录SELECT 学号,成绩 from score2
ORDER BY 成绩 Desc
LIMIT 1,2;表连接重点两张学生表左表右表join/ inner join内连接左表右表都匹配的记录SELECT a.id,年龄,性别
from student1 a join student2 b
on a.idb.id;left join 左连接以左表位置准向右表匹配对应字段有多条则逐次列出无匹配则显示NULL。SELECT a.id,年龄,性别
from student1 a LEFT JOIN student2 b
on a.idb.id;right join :右连接以右表位置准向左表匹配对应字段有多条则逐次列出无匹配则显示NULL。SELECT b.id,年龄,性别
from student1 a RIGHT JOIN student2 b
on a.idb.id;outer / full join全连接包含两个表全部连接结果左、右表缺失的数据会显示为NULL。cross join交叉连接 / 笛卡尔积生成3X3结果的表格SELECT a.id,年龄,性别
from student1 a CROSS JOIN student2 b;表合并合并两表相同字段union去重合并union all非去重合并coursecourse2-- 去重合并
select * from course
UNION
SELECT * from course2;-- 非去重合并
select * from course
UNION ALL
SELECT * from course2;视图视图是不保存实际数据的临时表相当于直接调用由select语句查询结果在实际工作中视图可以减少写sql语句时的嵌套。create view 视图名称 as select··········示例如下图创建一个名为“用户行为”的临时表create view 用户行为 as
select user_id,count(behavior)as 用户行为总数,
sum(if(behavior pv,1,0))as 点击量,
sum(if(behavior fav,1,0))as 收藏数,
sum(if(behavior cart,1,0))as 加购数,
sum(if(behavior buy,1,0))as 购买量
from userbehavior
group by user_id;后续可以直接写sql语句调用该表select
sum(点击量) as 总点击量,
sum(收藏数) as 总收藏数,
sum(加购数) as 总加购数,
sum(购买量) as 总购买量
from 用户行为;复杂查询子查询也就是常说的嵌套即将定义视图的select语句直接用于from子句中。子查询层数无上限。scoreselect 学号
from (select * from score GROUP BY 学号)as a标量子查询返回1行1列结果的子查询可在select和where中使用-- 查询高于平均成绩的学号及对应信息
select *
from score
where 成绩(select avg(成绩) from score);关联子查询where中使用子查询SELECT 学号,课程号,成绩
from score as s1
WHERE 成绩(
SELECT avg(成绩)
FROM score as s2
-- 关联条件按课程号来对表分组同一组的数据与这一组的平均成绩进行比较
WHERE s1.课程号 s2.课程号
GROUP BY 课程号);