MySQL基础知识
2021/11/10 2:09:53
本文主要是介绍MySQL基础知识,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
MySQL基础知识
1 基础查询语法
/* 基础语法: select 查询列表 from 表名; 特点: 1.查询列表可以是:字段,常量值,表达式,函数 2.查询的结果是一个虚拟的表格 */ --eg1:字段 select * from employees; --eg2:常量值 select 100; select 'test'; --eg3:表达式 select * from 100*2; --eg4:函数 select VERSION();
1.1 取别名
/* 取别名(两种方式): 1.as关键字, 2.空格 */ --第一种方式: select last_name as 姓,first_name as 名 from employees; --第二种方式: select last_name 姓,first_name 名 from employees; --案例1:查询salary,显示结果为out put(需要使用双引号,单引号也行,MySQL建议使用双引号) select salary as "out put" from employess;
1.2 去重
/* distinct关键字:去重 */ --eg:查询员工表中涉及到的所有的部门编号 select distinct department_id from employess;
1.3 +号的作用
/* java中的+号作用: 1.运算符:两个操作数都是数值型 2.连接符:只要有个一个操作数为字符串 MySQL中的+号作用: 仅仅有一个作用:运算符 1.如果两个操作数都是数值型,则做加法运算; 2.如果其中一方为字符型,则试图将字符型数值转换成数值型,如果转换成功,则继续做加法运算,如果转换失败,则将字符型数值转换成0 3.如果只要其中一方为null,则结果一定为null */ --eg1:数值型+数值型 select 100 + 90; >> 190 --eg2:字符型+数值型 select 'shutterbug' + 90; >> 90 --eg3:null+数值型 select null + 90; >> null /* concat函数: 作用:连接字符串 语法:concat(str1/字段1,str2/字段2,...) 说明:在连接字符串时,只要其中一个是null,则返回null eg1:select concat('11','22','33'); >> 112233 eg2:select concat('11','22',null); >> null */ --案例1:查询员工名和姓连接成一个字段,并显示为姓名 --错误sql:select last_name + first_name as 姓名 from employees; select concat(last_name,' ',first_name) as 姓名 from employess; >> Chen John
2 条件查询
/* 分类: 1.按照条件表达式筛选 简单条件运算符:> < = != <> >= <= 2.按照逻辑表达式筛选 逻辑运算符:&& || ! and or not (作用于连接条件表达式) && 或 and:两个条件都为true,结果为true,否则为false || 或 or:只要一个条件为true,结果为true,否则为false ! 或 not:连接条件本身为false,结果为true,否则为false 3.模糊查询 like between and in is null */
2.1 按照条件表达式筛选
--eg1:查询工资>12000的员工信息 select * from employees where salary > 12000; --eg2:查询部门编号不等于90的员工名和部门编号 select last_name,department_id from employees where department_id != 90; 或者 select last_name,department_id from employees where department_id <> 90; 或者 select last_name,department_id from employees where department_id > 90 or dempartment_id < 90;
2.2 按照逻辑表达式筛选
--eg1:查询工资在10000到20000之间的员工名,工资以及奖金 select last_name,salary,commission_pct where salary >= 10000 and salary <= 20000; --eg2:查询部门编号不是在90到110之间,或者工资高于15000的员工信息 select * from employees where not(department_id >= 90 and department_id <= 110) or salary >= 15000;
2.3 模糊查询-like
/* 特点:一般和通配符搭配使用 通配符: %:任意多个字符,包含0个字符 _:任意单个字符 */ --eg1:查询员工名中包含a的员工信息 select * from employees where last_name like '%a%'; 或 /*使用concat函数模糊匹配-不推荐*/ select * from employees where last_name like concat("%","a","%"); --eg2:查询员工名中第三个字符为s,第五个字符为i的员工信息 select * from employees where last_name like '__s_i%'; --eg3:查询员工名中第二个字符为_的员工名 select last_name from employees where last_name like '_\_%'; /* escape关键字: 指定一个字符代替"\"的使用 */ select last_name from employees where last_name like '_$_%' escape '$';
2.4 模糊查询-between and
/* 特点: 1.使用between and可以提高语句的简洁度 2.包含临界值 3.两个临界值不能调整顺序 */ --eg1:查询员工编号在100到120之间的员工信息 select * from employees where employee_id >= 100 and employees <= 120; 或 /*这两条语句是等价的*/ select * from employees where employee_id between 100 and 120;
2.5 模糊查询-in
/* 含义:判断某字段的值是否属于in列表中的某一项 特点: 1.提高了语句的简洁度 2.in列表中的值类型必须一致或者兼容 3.in类表中不支持通配符 */ --eg1:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号 select last_name,job_id from employees where job_id = "IT_PROG" or job_id = "AD_VP" or job_id = "AD_PRES"; 或 select last_name,job_id from employees where job_id in("IT_PROG","AD_VP","AD_PRES");
2.6 模糊查询-is null
/* is null 或 is not null:可以判断null值 = 或 <>:不能用于判断null值 <=>:安全等于即可判断null值,又可判断普通类型的数值 */ --eg1:查询没有奖金率的员工名和奖金率 select last_name,commission_pct from employees where commission_pct is null; --eg2:查询有奖金率的员工名和奖金率 select last_name,commission_pct from employees where commission_pct is not null; --eg3:查询工资为12000的员工名和奖金率(错误查询语句示例) select last_name,commission_pct from employees where salary is 12000; /*使用<=>*/ --eg4:查询没有奖金率的员工名和奖金率 select last_name,commission_pct from employees where commission_pct <=> null; --eg5:查询工资为12000的员工名和奖金率 select last_name,commission_pct from employees where salary <=> 12000; /* ifnull(parm1,parm2)函数: 如果第一个参数为null,则返回第二个参数的值 */ --eg6:显示出first_name,last_name,job_id,commission_pct列,各个列之间用逗号连接,列头显示成out_put select concat(first_name,"_",last_name,"_",job_id""_",ifnull(commission_pct,0)) as out_put from employees;
3 排序查询
/* 语法: select 查询列表 from 表名 where 筛选条件 order by 排序的字段或者表达式 特点: 1.asc代表升序,可以省略 2.desc代表的是降序 3.order by子句可以支持单个字段,别名,表达式,函数,多个字段 4.order by子句在查询语句的最后面,除了limit子句 */ -- 一:按单个字段排序 select * from employees order by salary desc; --案例1:查询部门编号>=90的员工信息,并按员工编号降序 select * from employees where department_id >= 90 order by employee_id desc; -- 二:按表达式排序 --案例2:查询员工信息,并按年薪降序 select *,salary*12*(1+ifnull(commission_pct,0)) as 年薪 from employees order by salary*12(1+ifnull(commission_pct,0)) desc; -- 三:按别名排序 --案例3:查询员工信息,并按年薪升序 select *,salary*12(1+ifnull(commission_pct,0)) as 年薪 from employees order by 年薪 asc; -- 四:按函数排序 --案例4:查询员工名,并且按照名字的长度降序 select last_name,length(last_name) from employees order by length(last_name) desc; select last_name,length(last_name) name_len from employees desc; -- 五:按多个字段排序 --案例5:查询员工信息,要求先按工资降序,再按员工编号升序 select * from employees order by salary desc,employee_id asc;
这篇关于MySQL基础知识的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-21MySQL集群部署资料:新手入门教程
- 2024-09-21MySQL集群资料:初学者入门指南
- 2024-09-21部署MySQL集群资料:新手入门教程
- 2024-09-20MySQL集群部署教程:新手入门指南
- 2024-09-20MySQL集群教程:初学者必备指南
- 2024-09-20部署MySQL集群项目实战:新手入门教程
- 2024-09-20如何部署MySQL集群:简单教程
- 2024-09-20MySQL集群部署:新手入门指南
- 2024-09-20部署MySQL集群学习:入门指南
- 2024-09-20部署MySQL集群入门教程