标签(空格分隔): MySQL
mysql常见的命令语句
- 查看所有的数据库
show databases ;
查看数据库:select database();
- 打开指定的库
use 库名 ;
- 查看当前库的所有表
show tables ;
- 查看其他库的所有表
show tables form 库名;
- 创建表
create table 表名( 列名 列类型, 列名 列类型, 。。。 );
- 查看表结构
desc 表名 ;
- 查看服务器的版本
方法一:登录到mysql服务器 select version(); 方式二:没有登陆到MySQL服务端 MySQL --version 或
MySQL --v
- 查看表中的所有数据
select * from 表名 ;
- 表中加入数据
mysql的语法规范
- 不区分大小学,但建议关键字大写,表名,列名小写。
- 每条命令最好以分号结尾
- 每条命令根据需要,可以进行缩进或换行
- 注释
单行注释:#注释文字
单行注释:-- 注释文字
多行注释:/* 文字 */
进阶一:基础查询
$\underline{查询前写出你要查询的库}$
USE 库名 ;
语法:
select 查询列表 from 表名 ;(不严格要求循序)
类似于:system.out.println(打印东西) ;
1、 查询列表可以是:表中的字段、常量值、表达式、函数
2、 查询的结果是一个虚拟的表格
- 查询表中的单个字段
例:SELECT last_name FROM employees ;
- 查询表中的多个字段(逗号隔开不同的查询列表)
例:SELECT last_name,salary,email FROM employees ;
- 查询表中的所有字段
方法一:
SELECT (哪里不会点哪里),(哪里不会点哪里) FROM employees ; 方法二:
SELECT * FROM employees ;(按循序)
- 查询常量值
SELECT 100 ;
SELECT 'john' ;
5.查询表达式
SELECT 100%98 ;
-
查询函数
SELECT VERSION() ;
-
起别名
方式一:使用asSELECT 100%98 AS 结果 ;
方式二:使用空格
SELECT last_name 姓, first_name 名 FROM employees ;
好处:便于理解
如果查询的字段有重名的情况,使用别名可以区分开来。
当别名里有特殊符号时,用双引号引住,或单引号
案例:查询salary, 显示结果为 out put
SELECT salary AS "out put" FROM employees ;
- 去重
方法:在字段名前面加上DISTINCT
SELECT DISTINCT 字段名 FROM 表名 ;
案例:查询员工表中涉及到的部门编号
SELECT DISTINCT department_id FROM employees ;
- +号的作用
Java中的+号:
1、运算符,两个操作数都为数值型
2、连接符,只要有一个操作数作为字符串
MySQL中的+号:
仅仅只有一个功能:运算符
select 100+90 ;两个操作数都为数值型,则做加法运算
selsct 'join'+90 ;
只要其中一方为字符型,试图将字符型转换为数值型
如果转换成功,则继续做加法运算
如果转换不成功,则将字符型转换成0
selsct null+10 ;只要其中一方为null,则结果肯定为null
连接词:concat(,)
案例:
SELECT
CONCAT(last_name ,first_name) AS 姓名
FROM
employees ;
换行:用逗号隔开
案例:
SELECT last_name,first_name,salary AS sal FROM employees ;
输出的结果:last_name | first_name|sal(salary的别名)
对存在null的表的处理方法(null判断语句)
语法:IFNULL(表,null的取值)
案例1:
SELECT DISTINCT
IFNULL(`commission_pct`,0) AS 奖金率,
`commission_pct`
FROM `employees` ;
案例2:
SELECT
CONCAT(`first_name`, ',' ,`last_name`, ',' ,`job_id`, ',' ,IFNULL(`commission_pct`,0)) AS out_put
FROM
`employees` ;
进阶二:条件查询
语法:select 查询列表 from 表名 where 筛选条件
分类:
一、按条件表达式筛选
条件运算符:> < = != <> >= <=
二、按逻辑表达式筛选
逻辑运算符:
&& or
|| and
! not
三、模糊筛选
>like
>between and
>in
>is null
1. 按条件筛选
案例:查询工资>1200的员工信息
USE `myemployees` ;
SELECT
*
FROM
employees
WHERE
salary>12000 ;
案例:查询部门编号不等于90号的员工名和部门编号
SELECT
`last_name`,
`department_id`
FROM
`employees`
WHERE
`department_id`!=90 ;
2.按逻辑表达式筛选
案例:查询工资在10000到20000之间的员工名,工资以及奖金
SSELECT
`last_name`,
`salary`,
`commission_pct`
FROM
`employees`
WHERE
`salary`>=10000 AND `salary`<=20000 ;
案例:查询部门编号不是在90到110之间,或者工资高于15000的员工信息
写法一:
SELECT
*
FROM
`employees`
WHERE
`department_id`<90 OR `department_id`>110 OR `salary`>15000 ;
写法二:
SELECT
*
FROM
`employees`
WHERE
NOT(`department_id`>=90 AND `department_id`<=110) OR `salary`>15000 ;
3. 模糊查找
like
特点:
1. 一般和通配符搭配使用
通配符:
%任意多个字符,包含0个字符
_任意单字符
between and in is null |is not null
1. like
案例一:查询员工名字中包含字符a的员工信息
SELECT
*
FROM
`employees`
WHERE
`last_name` LIKE '%b%' ;
案例二:查询员工名中第三个字符为i,第五个字符为a的员工和工资
SELECT
`last_name`,
`department_id`
FROM
`employees`
WHERE
`last_name` LIKE'__i_a%' ;
案例三:查询员工名中第二个字符为_的员
SELECT
`last_name`
FROM
`employees`
WHERE
`last_name` LIKE '_\_%' ;
SELECT
`last_name`
FROM
`employees`
WHERE
`last_name` LIKE '_$_%' ESCAPE '$' ;
2.between and
特点:
1. 使用between and 可以提高语句的整洁度
2. 包含临界值
3.临界值不能调换循序
案例:查询员工编号在100到120之间的员工信息
SELECT
*
FROM
`employees`
WHERE
`department_id` BETWEEN 100 AND 120 ;
3. in
含义:判断某字段的值是否属于in列表中的某一项
特点:
1. 使用in提高语句简洁度
2. in列表的值类型必须一致或兼容
案例:查询员工的工种编号是 it_prog、ad_vp、ad_pres中的一个员工名与工种编号
SELECT
`last_name`,
`job_id`
FROM
`employees`
WHERE
`job_id` IN('it_prot','ad_vp','ad_pres') ;
4. is null
特点:
1.=或<>不能用于判断null值
2.is null或者 is not null 可以判断null值
3. is不能用于判断其他值
案例:查询没有奖金的员工和奖金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` IS NULL ;
案例:查询有奖金的员工和奖金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` IS NOT NULL ;
安全等于<=>
判断是否等于,等于则返回true,
案例1:查询没有奖金的员工和奖金率
SELECT
`last_name`,
`commission_pct`
FROM
`employees`
WHERE
`commission_pct` <=> NULL ;
案例2:查询工资为12000的员工
SELECT
`last_name`,
`salary`
FROM
`employees`
WHERE
`salary` <=> 12000 ;
is null pk <=>
is null:仅仅可以判断null值,可读性较高,建议使用
<=> :既可以判断null值,又可以判断普通的数值,可读性较低
进阶三:排列查询
引入: select * from employees
语法: select 查询列表 from 表 【where 筛选条件】
order by 排序列表【ascldesc】
order by 排序列表 【asc(升序) | desc(降序)】
特点:
1. asc表示升序,desc表示降序,如果不写,默认为升序
- order by子句中可以支持单个字段,多个字段,表达式,函数,别名
- order by子句一般是放在查询语句的最后面,limit子句除外
案例1:查询员工信息,要求工资从高到低排序
SELECT
*
FROM
`employees`
ORDER BY
salary DESC
案例2:查询部门编号>=90的员工信息,按入职时间的先后进行排序【添加筛选条件】
SELECT * FROM `employees`
WHERE `department_id` >= 90
ORDER BY `hiredate` ASC ;
案例3:按年薪的高低显示员工的信息和年薪【按表达式排序】
方法一:
SELECT * ,`salary` * 12 * (1 + IFNULL(`commission_pct`,0)) AS 年薪
FROM `employees`
ORDER BY `salary` * 12 * (1 + IFNULL(`commission_pct`,0)) DESC;
方法二:
SELECT * ,`salary` * 12 * (1 + IFNULL(`commission_pct`,0)) AS 年薪
FROM `employees`
ORDER BY 年薪 DESC;
案例4:按姓名的长度显示员工的姓名和工资【按函数排列】
SELECT LENGTH(last_name) 字节长度,`first_name`,`salary`
FROM `employees`
ORDER BY LENGTH(last_name) DESC ;
案例5:查询员工信息,要求先按工资排序,再按员工编号排序【按多个字段排序】
SELECT * FROM `employees`
ORDER BY `salary` ASC, `employee_id` DESC ;
案例6:查询员工信息,要求先按工资升序,zai'an'yuan
进阶四:常见函数
概念:类似于java的方法,将一组逻辑语句封装的方法中,对外暴露方法名
好处:
1、隐藏了实现细节 2、提高代码的重要性
调用:select 函数名 (实参列表) 【from 表】;
特点1、叫什么(函数名)
2、干什么(函数功能)
分类:1、单行函数
如 concat、length、ifnull等
2、分组函数
功能:做统计使用,又称为统计函数、聚合函数、组函数
标签:last,name,employees,基础,查询,学习,MySQL,null,SELECT
From: https://www.cnblogs.com/fengmian13wl/p/18348588