操作表的SQL语句、表查询关键字、多表查询 | 您所在的位置:网站首页 › 查找表格中的关键字 › 操作表的SQL语句、表查询关键字、多表查询 |
目录操作表的SQL语句表查询关键字一、数据准备二、select 与 from1.SQL语句的关键字编写顺序与执行数据是不一致的!!2.编写SQL语句针对select和from可以先写个固定模板三、where筛选1.查询id大于等于3小于等于6的数据2.查询薪资是20000或者18000或者17000的数据3.查询员工姓名中包含o字母的员工姓名和薪资4.查询员工姓名是由四个字符组成的员工姓名与其薪资5.查询id小于3或者大于6的数据6.查询薪资不在20000,18000,17000范围的数据7.查询岗位描述为空的员工名与岗位名三、group by 分组1.介绍2.写SQL时是否需要分组,根据需求分析分配组合常见的有聚合函数3.以组为单位统计组内数据3.1.每个部门的最高工资 max3.2.每个部门的最低工资 min3.3.每个部门的平均工资 avg3.4.每个部门的工资总和 sum3.5.每个部门的人数 count计数3.6.分组之后的每个部门名称和每个部门下的员工姓名 group_concat(字段名)四、having 过滤1.介绍2.统计各部门年龄大于30岁的员工的平均薪资,并保留平均工资大于10000的部门五、distinct 去重1.前提:数据必须一模一样六、older by 排序1.升序2.降序3.先按照age降序排,在年龄相同的情况下再按照薪资升序排4.统计各部门年龄在10岁以上的员工平均薪资,并且保留平均薪资大于3000的部门,然后对平均工资进行排序七、limit 分页1.限制展示条数2.查询工资最高的人的详细信息3.分页展示八、regexp 正则1.正则表达式回顾1.1.不同字符组的意义1.2.特殊符号1.3.量词2.实践使用regexp多表查询一、多表查询思路1.子查询2.连表操作3.代码演示作业添加salary字段,并修改数据值
操作表的SQL语句
1.修改表名
alter table 表名 rename 新表名;
2.新增字段
alter table 表名 add 字段名 字段类型(数字) 约束条件;
alter table 表名 add 字段名 字段类型(数字) 约束条件 after 已经存在的字段; # 在某个字段后面添加字段
alter table 表名 add 字段名 字段类型(数字) 约束条件 first; # 添加在最前面
3.修改字段
alter table 表名 change 旧字段名 新字段名 字段类型(数字) 约束条件; # 修改字段名、字段类型
alter table 表名 modify 字段名 新的字段类型(数字) 约束条件; # 只能修改字段类型
4.删除字段
alter table 表名 drop 字段名;
表查询关键字
一、数据准备
create table emp(
id int not null unique auto_increment,
name varchar(20) not null,
sex enum('male','female') not null default 'male', #大部分是男的
age int(3) unsigned not null default 28,
hire_date date not null,
post varchar(50),
post_comment varchar(100),
salary double(15,2),
office int, #一个部门一个屋子
depart_id int
);
#三个部门:教学,销售,运营
insert into emp(name,sex,age,hire_date,post,salary,office,depart_id) values
('jason','male',18,'20170301','浦东第一帅形象代言',7300.33,401,1), #以下是教学部
('tom','male',78,'20150302','teacher',1000000.31,401,1),
('kevin','male',81,'20130305','teacher',8300,401,1),
('tony','male',73,'20140701','teacher',3500,401,1),
('owen','male',28,'20121101','teacher',2100,401,1),
('jack','female',18,'20110211','teacher',9000,401,1),
('jenny','male',18,'19000301','teacher',30000,401,1),
('sank','male',48,'20101111','teacher',10000,401,1),
('哈哈','female',48,'20150311','sale',3000.13,402,2),#以下是销售部门
('呵呵','female',38,'20101101','sale',2000.35,402,2),
('西西','female',18,'20110312','sale',1000.37,402,2),
('乐乐','female',18,'20160513','sale',3000.29,402,2),
('拉拉','female',28,'20170127','sale',4000.33,402,2),
('僧龙','male',28,'20160311','operation',10000.13,403,3), #以下是运营部门
('程咬金','male',18,'19970312','operation',20000,403,3),
('程咬银','female',18,'20130311','operation',19000,403,3),
('程咬铜','male',18,'20150411','operation',18000,403,3),
('程咬铁','female',18,'20140512','operation',17000,403,3);
二、select 与 from
1.SQL语句的关键字编写顺序与执行数据是不一致的!!
eg:
select name from emp;
肯定是线支持from确定表,之后执行select确定字段
where和having的功能其实是一样的,都是用来筛选数据 只不过where用于分组之前的筛选,而having用于分组之后的筛选 为了人为的区分,所以叫where是筛选,having是过滤 2.统计各部门年龄大于30岁的员工的平均薪资,并保留平均工资大于10000的部门 select post,avg(salary) from emp where age>30 group by post having avg(salary) > 10000;在没有量词修饰的情况下,一次只会针对一个数据值 字符组 意义 [0-9] 0~9任意数字 [A-Z] A~Z任意字母 [a-z] a~z任意字母 [0-9a-zA-Z] 任意数字、大写字母或小写字母 1.2.特殊符号在没有量词修饰的情况下,一个符号一次只会针对一个数据值 特殊符号 意义 . 匹配除换行符以外的任意字符 \w 匹配字母、数字或下划线 \W 匹配非(字母、数字或下划线)的任意字符 \d 匹配数字 ^ 匹配字符串开头 $ 匹配字符串结尾 ^...$ 精确匹配具体数值,只能匹配^和$质按进度数据值 a|b 匹配字符a或b () 给正则表达式分组 [] 匹配[ ]内的所有字符 [^] 匹配除了[ ]内的所有字符 1.3.量词不能单独使用,必须跟在表达式后面,只能影响紧挨着的左边那个,默认贪婪匹配 量词 意义 * 重复零次或多次 + 重复一次或多次 ? 重复零次或一次 {n} 重复n次 {n,} 至少重复n次 {n,m} 重复n到m次 2.实践使用regexp # 查询name是j开头,n或y结尾的数据 select * from emp where name regexp '^j.*(n|y)$';将一张表的查询结果括号括起来当做另外一条SQL语句的条件 eg:类似于日常生活中解决问题的方式 第一步做…… 第二步基于第一步的结果做…… 2.连表操作先将所有涉及到结果的表全部都拼接到一起,形成一张大表,然后从大表中查询数据 3.代码演示 # 1.建表 create table dep1( -> id int primary key auto_increment, -> name varchar(32)); create table emp1( -> id int primary key auto_increment, -> name varchar(32), -> gender enum('male','female')not null default 'male', -> age int, -> dep_id int); # 2.添加数据 insert into dep1 values -> (200,'技术'), -> (201,'人力资源'), -> (202,'销售'), -> (203,'运营'), -> (204,'安保'); insert into emp1(name,gender,age,dep_id)values -> ('jason','male',18,200), -> ('jassi','female',28,201), -> ('tony','female',18,201), -> ('kevin','female',18,202), -> ('kello','male',28,203), -> ('nicole','male',18,203), -> ('jerry','male',48,204); |
CopyRight 2018-2019 实验室设备网 版权所有 |