MYSQL

目录

数据库的常见概念

数据库的特点

常见命令

基础查询

查询表中的单个字段

 查询表中的多个字段

查询表中的所有字段

查询常量值

查询表达式

 查询函数

起别名

去重(distinct)

+号

 案例

条件查询

按条件表达式筛选

按逻辑表达式筛选

模糊查询

 #附加 安全等与<=>


数据库的常见概念

DB 数据库(database):存储数据的“仓库”。它保存了一系列有组织的数据。

DBMS 数据库管理系统(Database Management System)。数据库是通过DBMS创建和操作的容器。

SQL 结构化查询语言(Structure Query Language):专门用来与数据库通信的语言。

数据库的特点

1.将数据放到表中,表再放到库中。

2.一个数据库中可以有多个表,每个表都有一个名字,用来标识自己。表名具有唯一性。

3.表具有一些特性,这些特性定义了数据在表中如何储存。

4.表由列组成,我们也称为字段。所有表都是由一个或多个列组成的。

5.表中的数据是按行储存的。

常见命令

基础查询

先了解一个myemployees的数据库

MYSQL_第1张图片

MYSQL_第2张图片

语法:

select 查询列表 from 表名;

特点:1.查询列表可以是表中的字段,常量值,表达式,函数。

2.查询结果是一个虚拟的表格。

查询表中的单个字段

SELECT last_name FROM employees;

 查询表中的多个字段

SELECT last_name,salary,email FROM employees;

查询表中的所有字段

#查询表中的所有字段
SELECT * FROM employees;

查询常量值

#查询常量值
SELECT 100;
SELECT 'join';

查询表达式

#查询表达式
SELECT 100+20;

 查询函数

#查询函数
SELECT VERSION();

起别名

优点:

1.便于理解

2.有重名的情况可以区分

#起别名
SELECT last_name AS 姓,first_name AS 名 FROM employees;(AS可省略)

去重(distinct)

#去重
#查询员工表中涉及到的所有部门编号
SELECT DISTINCT department_id FROM employees; 

+号

作用:

运算符

1.100+90 两个操作数都为数值型,做加法运算。

2.‘123’+90 其中一方为字符型,将字符型数值转换成字符型

转换成功,继续做加法运算

转换失败,将字符型数值转化成0

3.null+90  只要其中一方为null结果肯定为null

#+号运算符
SELECT 100+20;#120
SELECT '100'+20;#120
SELECT 'jone'+20;#20
SELECT 'ss'+'rr';#0
SELECT NULL+22;#null

 案例

#案例
#查询员工名和姓并连接成字串(concat),显示为姓名
SELECT CONCAT(last_name,first_name)AS 姓名 FROM employees;
#显示表departments的结构,并查询其中的全部数据
DESC departments;
SELECT * FROM `departments`;
#显示出employees中的全部job—id(不能重复)
SELECT DISTINCT job_id FROM employees;
#显示出表employees的全部列,格列之间用逗号隔开,列头显示out——put
SELECT CONCAT(first_name,',',last_name,',',job_id,',',IFNULL(commission_pct,0))AS out_put
FROM employees;

条件查询

语法:

select 

     查询列表

from

    表名

where

   筛选条件

分类:

1.按条件表达式筛选

条件运算符:> < = != <> >= <=

2.按逻辑表达式筛选

逻辑运算符:

&&,||,!

and,or,not

3.模糊查询

like,between and,in,is null

按条件表达式筛选

#按条件表达式筛选
#案例:查询工资>12000的员工信息(>)
SELECT 
    *
FROM
   employees
WHERE
   salary>12000;
#案例:查询部门编号不等于90号的员工名和部门编号(<>)
SELECT `last_name`,`department_id`
FROM employees
WHERE department_id<>90;
 

按逻辑表达式筛选

#按逻辑表达式筛选
#案例:查询工资在10000到20000之间的员工名,工资及奖金(between and)
SELECT last_name,salary,commission_pct
FROM employees
WHERE salary BETWEEN 10000 AND 20000;
#查询部门编号不是在90到100之间,或者工资高于15000的员工信息(not or)
SELECT *
FROM employees
WHERE NOT(department_id BETWEEN 90 AND 100)OR salary>15000;
 

模糊查询

#1.like
/*
特点:
1.一般和通配符搭配使用
    通配符:
    % 任意多个字符,包含0个字符
    - 任意单个字符
*/
#案例:查询员工名中包含’a‘的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '%a%';
#案例:查询员工名中第三个字符为c第五个字符为h的员工信息
SELECT *
FROM employees
WHERE last_name LIKE '__c_h%';
#案例 查询员工中第二个字符为_的员工名(分割 escape)
SELECT last_name 
FROM employees
WHERE last_name LIKE '_&_%'ESCAPE '&';
#2.between and
/*
1.使用between and可以提高语句的简洁度
2.包含临界值
3.两个临界值不能调换顺序
*/
#案例:查询员工编号在100到200之间的员工信息
SELECT *
FROM employees
WHERE department_id BETWEEN 100 AND 200;
#3.in
/*
含义:判断莫字段的值是否属于in列表中的一项
特点:
1.提高语言简洁度
2.in列表中的值必须一致或兼容

*/
#案例:查询员工的工种编号是IT_PROG,AD_VP,AD_PRES中的一个员工名和工种编号
SELECT last_name,job_id
FROM employees
WHERE job_id IN('IT_PROG','AD_VP','AD_PRES');
#4.is null
/*
1.=或>=不可以判断null值
2.is null或is not null 可以判断null值
*/
#案例:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct IS NULL;

 #附加 安全等与<=>

#附加 安全等与<=>
#案例:查询没有奖金的员工名和奖金率
SELECT last_name,commission_pct
FROM employees
WHERE commission_pct<=>NULL;

IS NULL:仅仅可以判断NULL值,可读性较高

<=>:既可以判断NULL值,又可以判断普通数值,可读性较低 

你可能感兴趣的:(mysql)