推荐设备MORE

免费的情话小程序—企业官网

免费的情话小程序—企业官网

行业知识

Mysql基本撰写sql实例(一),sql数据信息库课程内容

日期:2021-02-19
我要分享

Mysql基本撰写sql实例(一),sql数据信息库课程内容设计方案实例

数据信息库里边的数据信息库sql文档:GongmissYan/article/details/

#基本查寻
 英语的语法:、
 select 查寻目录
 from 表名;
查寻目录能够是,表格中的字段名,变量定义值 表述式,涵数
查寻的报表是一个虚似的表
# 查寻单独字段名
select last_name from employees
# 查寻好几个字段名
select last_name ,salary,email from employees
#查寻表格中的全部字段名(尽可能不必应用*假如字段名确立应用字段名)应用*号的次序是和初始表的次序是一样的
select * from employees
#查寻变量定义值
SELECT 100 as 这一是100
#查寻涵数
select VERSION()
#起别称(在查寻的情况下假如有重名的状况,能够根据别称来区别)
select 100 as 这儿是别称
select 100 这儿是别称
 假如别称里边包括了重要字最好根据引号引入起來
#去重复:根据DISTINCT来来去去重
SELECT DISTINCT department_id from employees
# +号的功效
#sql中的+号的功效仅仅作为计算符
* select 100+902个实际操作数全是标值型,则做加减法计算
* select '123' + 90 假如一方为标识符串种类,标识符标值变换成标值种类
* 假如变换取得成功就开展加减法计算
* 假如变换不成功就将标识符型标值置为0
* select null + 90 在加减法计算中无论那一方为Null結果全是null
SELECT FROM employees
#标识符串拼凑(在标识符串拼凑的情况下应用的是CONCAT)
select CONCAT(last_name,first_name) from employees
# 标准查寻
select 查寻目录 From 表名 where 挑选标准
# 按标准表述式挑选
select * from employees where salary 12000
#查寻职工单位序号并不是90的职工我名字和单位的ID
select CONCAT(last_name,first_name) as 职工名,e.department_id from employees e WHERE department_id 90
#查寻薪水在10000到20000中间的职工名,薪水及其奖励金
SELECT
 CONCAT( last_name, first_name ) AS 职工名,
 salary AS 薪水,
 commission_pct * salary AS 奖励金 
 employees 
WHERE
 salary 10000 
 AND salary 20000
# 查寻单位序号并不是在90到110中间,或是薪水高过15000的职工信息内容
SELECT
 employees 
WHERE
 department_id 90 AND department_id 110 
 OR salary 15000
# 模糊不清查寻
* like
* between and
* is null |is not null
# LIKE
* %随意多的标识符包括0个
* _ 随意单独标识符
SELECT
 employees 
WHERE
 last_name LIKE ( '%a%' )
#查寻职工姓名第三字符为e每五个标识符为a的
SELECT * from employees WHERE last_name LIKE '__e_a%'
#查寻第二字符是_的
SELECT last_name FROM employees WHERE last_name LIKE '_\_%';
SELECT last_name FROM employees WHERE last_name LIKE '_$_%' ESCAPE '$';
#between and
# 包括2个临界值值的
# 2个临界值值不能以交换的
#查寻职工序号在100 到120中间的职工信息内容
SELECT * FROM employees WHERE department_id BETWEEN 100 and 120
# 查寻职工的技术工种序号
SELECT
 last_name,
 job_id 
 employees 
WHERE
 job_id IN ( 'AD_PRES', 'AD_VP', 'IT_PROT' )
# is null
# 实例:查寻沒有奖励金的职工名和奖励金率
SELECT
 last_name,
 commission_pct 
 employees 
WHERE
 commission_pct IS NULL
#实例:查寻有奖励金的职工名和奖励金率
SELECT
 last_name,
 commission_pct 
 employees 
WHERE
 commission_pct IS NOT NULL
# 实例:查寻职工号为176的职工的名字和单位号和薪资
SELECT
 last_name,
 salary * 12 *(mission_pct,0))
 FROM employees
 WHERE employee_id = '176'
# 查寻沒有奖励金,且薪水低于18000的salay,last_name
SELECT
 salary,
 last_name 
 employees 
WHERE
 commission_pct IS NULL 
 AND salary 18000
# 查寻employees表格中,job_id不以'IT'或是薪水为12000的职工信息内容
SELECT
 employees 
WHERE
 job_id 'IT' 
 OR salary = 12000
# 查询Departments构造
DESC departments
# 查寻departments表格中涉及到来到什么部位的序号
SELECT DISTINCT
 location_id 
 departments 
WHERE
 location_id IS NOT NULL
# 排列查寻
* select 查寻目录 from 表 【where挑选】 order by 排列目录[asc 升序|desc 降序]
* 默认设置是asc asc能够不写
# 实例:查寻职工的信息内容,规定薪水从高到低排列
SELECT
 employees 
ORDER BY
 salary DESC
# 实例:查寻单位序号 = 90 的职工信息内容,按新员工入职時间
SELECT * FROM employees WHERE department_id = 90 
ORDER BY
 hiredate DESC
# 实例:按薪资的高矮显示信息职工的信息内容和薪资【按表述式】
SELECT
 salary * 12 + ( 1+ IFNULL( commission_pct, 0 ) ) a 
 employees 
ORDER BY
 a DESC
# 查寻名字的长短来显示信息职工的名字和薪水【按涵数排列】
SELECT LENGTH(last_name) a,salary FROM employees ORDER BY a DESC
# 查寻职工信息内容,规定先按职工资排列,再按职工序号排列
SELECT
 employees 
ORDER BY
 salary ASC,
 employee_id DESC
# 查寻职工的名字和单位号和薪资,按薪资降序,按名字升序
SELECT
 last_name,
 department_id,
 12 * salary + ( 1+ IFNULL( commission_pct, 0 ) ) 薪资
 employees
ORDER BY 薪资 DESC,last_name ASC
# 挑选薪水没有8000到17000的职工的名字和薪水,按薪水降序
SELECT
 last_name,
 salary 
 employees 
WHERE
 !(salary BETWEEN 8000 
 AND 17000)
ORDER BY
 salary DESC
# 查寻电子邮箱中包括e的职工信息内容,并按电子邮箱的字节数数降序,再按单位号升序
SELECT
 employees 
WHERE
 email LIKE '%e%' 
ORDER BY
 LENGTH( email ) DESC,
 department_id ASC
# 普遍涵数
* 单行涵数:
* 标识符涵数
* length、concat、upper、lower、substr、instr、trim、lpad、rpad、replace
* 数学课涵数
* round、ceil、floor、truncate
* 时间涵数
* now、curdate、curtime、year、day、month、monthname、str_to_date、date_format
* 其他涵数
* version、database、user
* 步骤操纵涵数
* if、case
# 实例:将姓增大写,名就可以小写,随后拼凑
SELECT CONCAT(UPPER(first_name),'_',LOWER(last_name)) FROM employees;
# 名字中首英文字母英文大写,其他的标识符小写,随后根据_拼凑,显示信息出去
SELECT
 CONCAT(
 UPPER( SUBSTR( last_name, 1, 1 ) ),
 '_',
 LOWER( SUBSTR( last_name, 1 ) ) 
 employees;
# instr用以回到子串在父串里边的起止数据库索引(第一次出現的数据库索引)
# trim 除掉前后左右面的空格符
# 实例除掉标识符串里边的前后左右的a
SELECT TRIM('a' FROM 'aaaaaaaBaaaa')
# lpad 假如标识符串的长短不以二参值,便会根据 来铺满左边
SELECT lpad('兔兔',10,' ')
# rpad 假如标识符串的长短不以二参值,便会根据 来铺满左边
SELECT rpad('兔兔',10,' ')
#更换成zz
SELECT replace('bbccaa','cc','zz')
#四舍五入
SELECT ROUND(-1.5)
#小数点后边保存俩位
SELECT ROUND(-1.5456,2)
#往上取整
SELECT ceil(1.10)
#往下取整
SELECT FLOOR(1.1)
# truncate 断开
SELECT TRUNCATE(1.8999,1)
# mod取余
SELECT MOD(10,3)
# now回到当今系统软件时间+時间
SELECT now();
# curdate回到当彰系统软件的时间 不包括時间
SELECT CURDATE()
#curtime 回到当今的時间,不包括时间
SELECT CURTIME()
#能够获得特定的一部分
SELECT year(NOW())
SELECT MONTH(NOW()
SELECT DAY(now())
SELECT MONTHNAME(NOW())
# 将标识符串的时间变换成date文件格式
SELECT STR_TO_DATE('2020-07-9','%Y-%c-%d')
#将时间变换成标识符
SELECT DATE_FORMAT(NOW(),'%y年%c月%d日')
#查寻有奖励金的职工名和新员工入职时间(xx月/xx日 xx年)
 SELECT
 last_name,
 DATE_FORMAT( hiredate, '%m月/%d日 %Y年' ) 
 FROM
 employees 
 WHERE
 commission_pct IS NOT NULL
 # 查寻职工是不是有奖励金有就显示信息有木有就显示信息沒有
 SELECT
 last_name,
 commission_pct,
 ( commission_pct, '有', '沒有' ) 
 FROM
 employees
# 查寻职工名,名字,薪水,及其薪水提升百分之20%后的結果
SELECT last_name,salary,salary * 1.2 FROM employees 
# 将职工的名字按首标识符排列,并写成名字的长短(length)
 SELECT
 last_name
 FROM
 employees ORDER BY SUBSTR( last_name, 1, 1 ) ASC
#排序涵数
* 作用:作为统计分析应用,别称为汇聚涵数或统计分析涵数或组涵数
* 归类:
* sum求饶 avg 均值 Max min count
* sum avg 不能以放标识符种类 时间都不能够
* max min 是可使用标识符的 时间也适用
* count 测算不以null数量,适用全部的种类 myisam储存模块下高效率最大,由于它有一个內部的电子计数器
# 查寻职工表格中的较大新员工入职時间和最少新员工入职時间,并测算出他们的相距的天数
SELECT
 DATEDIFF( MAX( hiredate ), MIN( hiredate ) ) 
 employees;
# 查寻职工序号为90的职工数量
SELECT
 COUNT( * ) 
 employees 
WHERE
 department_id = 90;
# 排序查寻
#查寻每一个单位的均值薪水
SELECT
 AVG( salary ) 均值薪水,
 department_id 单位序号 
 employees 
GROUP BY
 department_id;
# 查寻每一个技术工种的最大薪水
SELECT
 MAX( salary ) 最大薪水,
 job_id 
 employees 
GROUP BY
 job_id
#查寻电子邮箱中包括a标识符的,每一个单位的均值薪水
SELECT
 AVG( salary ),
 department_id
 employees 
WHERE
 email LIKE '%a%'
GROUP BY department_id
#查寻有奖励金的每一个领导干部手底下职工的最大薪水
SELECT
 MAX( salary ),
 manager_id
 employees 
WHERE
 commission_pct IS NOT NULL
GROUP BY manager_id
# 查寻哪个单位的职工数量超过2
SELECT
 count( * ) a,
 department_id 
 employees 
GROUP BY
 department_id 
HAVING
# 查寻每一个技术工种有奖励金的职工的最大薪水 12000的技术工种序号和最大薪水
# 1. 查寻每一个技术工种有奖励金的职工的最大薪水
SELECT
 MAX( salary ),
 job_id 
 employees 
 WHERE
commission_pct is not NULL
GROUP BY
 job_id
# 在1的基本上結果上挑选 最大薪水超过12000的
SELECT
 MAX( salary ) a,
 job_id 
 employees 
WHERE
 commission_pct IS NOT NULL 
GROUP BY
 job_id 
HAVING
 a 12000
# 查寻领导干部序号 102的每一个领导干部手底下的最少薪水 5000的领导干部序号是哪一个,
#及其其最少薪水
SELECT
 MIN( salary ) a,
 manager_id 
 employees 
WHERE
 manager_id 102 
GROUP BY
 manager_id 
HAVING
 a 5000
# 实例:按职工名字的长短排序,查寻每一组的职工数量,
# 挑选职工数量超过5的有这些
SELECT
 count(*) c,LENGTH(last_name)
 employees 
GROUP BY
 LENGTH( last_name )
HAVING c 5
# 查寻每一个单位每一个技术工种的职工的均值薪水
SELECT AVG(salary) a,department_id,job_id
FROM employees
GROUP BY department_id,job_id
# 查寻每一个单位每一个技术工种的职工的均值薪水 依据均值薪水的高矮来排列
SELECT AVG(salary) a,department_id,job_id
FROM employees
GROUP BY department_id,job_id
ORDER BY a DESC
#查寻各job_id的职工薪水的较大值,最少值,均值值,总数,并按job_id升序
SELECT
 MAX( salary ),
 MIN( salary ),
 AVG( salary ),
 SUM( salary ),
 job_id
 employees 
GROUP BY
 job_id
ORDER BY job_id
# 查寻职工最大薪水和最少薪水的差别
SELECT MAX(salary) - MIN(salary) FROM employees;
#查寻各管理方法者手底下职工的最少薪水,在其中最少薪水不可以小于6000
# 沒有管理方法者的职工不可以测算以内
SELECT
 MIN( salary ) m,
 manager_id 
 employees 
WHERE
 manager_id IS NOT NULL 
GROUP BY
 manager_id 
HAVING
 m 6000
# 查寻全部单位的序号,职工总数和薪水均值值,并按均值薪水降序
SELECT
 department_id,
 COUNT( * ) , AVG( salary ) a
 employees 
GROUP BY
 department_id 
ORDER BY
 a DESC
# 挑选具备每个job_id 的职工总数
SELECT
 COUNT(*) 
 employees 
GROUP BY
 job_id

dengb.TechArticleMysql基本撰写sql实例(一),sql数据信息库课程内容设计方案实例 数据信息库里边的数据信息库sql文档:GongmissYan/article/details/ #基本查寻/* 语...