MySQL学习笔记3 (SQL语言 、Mysql 语法、查询操作)

SQL语言 、Mysql 语法、查询操作

  • 一、SQL语言 的分类
  • 二、Mysql 语法规范
  • 三、基本查询操作
    • 1、基础查询
    • 2、条件查询
    • 3、模糊查询
    • 4、排序查询

一、SQL语言 的分类

DQL语言:Data Query Language          数据查询语言    select
DML语言:Data Manipulate Language     数据操纵语言    insert、update、delete
DDL语言:Data Define Language         数据定义语言    create、alter、drop
DCL语言:Data Control Language        数据控制语言    commit、rollback

二、Mysql 语法规范

1. 不区分大小写
 2. 每句话用;或\g结尾 
 3. MySQL的注释: 
          单行注释:#
          单行注释:-- 
          多行注释:/*  */ 
  4. sql语句可以写在一行或多行,各子句一般分行写 
  5. 关键字不能缩写也不能分行 
 6. 用缩进提高语句的可读性

三、基本查询操作

1、基础查询

(1)基础查询
      select:查看、选择、显示
(2) 语法:
select 字段 from 表;
(3)字段可以是:
	①常量
	②表达式
	③函数
	④字段,但要显示字段必须添加from 表名

1)显示常量
	SELECT 100;
	SELECT 'john';

2)显示表达式
	SELECT 98*23;

3)显示函数(方法)
	SELECT LENGTH('john');
	SELECT VERSION();

4)显示表中的字段
	SELECT last_name FROM employees;

5)显示表中的多个字段
	SELECT `last_name`,`phone_number`,`first_name`,`salary`
	FROM `employees`;

6)显示表中所有字段
	SELECT * FROM employees;

7)起别名
	#方式一:
		SELECT last_name AS 姓,first_name AS 名 FROM employees;

	#方式二:
		SELECT last_name 姓,first_name  名 FROM employees;
8)如何去重
		-- distinct
	#查询employees表中的所有部门编号
	SELECT DISTINCT department_id FROM employees;

2、条件查询

(1)概念:根据指定的条件过滤出数据
(2)语法:
	select 字段 from 表名
	where 条件;
(3)分类:
	①按条件表达式查询
		条件运算符:> 、< 、>=、 <=、 =、 !=、 <>、 ,<=>安全等于,用于判断是否为null

	②按逻辑表达式查询
		逻辑运算符:
			and、&&  两个条件都为true,结果为true,反之为false
			or、||  两个条件只要有一个为true,结果为true,反之为false
			not、!   如果连接的条件本身为false,结果为true,反之为false
		优先级:
			not > and > or

3、模糊查询

1.like
	一般搭配着通配符使用,用作字符型的判断
	通配符:
		% 任意多个字符
		_ 任意单个字符  

#案例1:查询姓名中包含字符 e的员工信息
SELECT * FROM employees
WHERE last_name LIKE ‘%e%’;

#案例2:查询姓名中第二个字符为e,第四个字符为a的员工信息
SELECT * FROM employees
WHERE last_name LIKE ‘_e_a%’;

2.between and
	特点:在...之间
   		①等价于 使用  字段>=值1 and 字段<=值2
		②两个临界值是包含的  [1,10]  
		③两个临界值不能颠倒顺序

案例1:显示出表employees部门编号在80-100之间 的姓名、职位
SELECT last_name,job_id,department_id
FROM employees
WHERE department_id BETWEEN 80 AND 100;

WHERE department_id BETWEEN 100 AND 80; 这样写是错误的,必须小数在前
等价于
SELECT last_name,job_id,department_id
FROM employees
WHERE department_id<=100 AND department_id>=80;

3. in
特点:判断某个字段的值是否在某个列表内
	in(值1,值2,...)

注意:in 等价于 or
#案例1:显示出表employees的manager_id 是 100,101,110 的员工姓名、职位
SELECT last_name,job_id,manager_id
FROM employees
WHERE manager_id IN(100,101,110);

#等价于
SELECT last_name,job_id,manager_id
FROM employees
WHERE manager_id=100 OR manager_id=101 OR manager_id = 110;

4. is null/is not null

#案例1:查询没有奖金的员工
SELECT * FROM employees
WHERE commission_pct IS NULL;

#案例2:查询有奖金的员工
SELECT * FROM employees
WHERE commission_pct IS NOT NULL;

注意:
斜线 \ -> window 斜线
反斜线 / -> Linux 斜线

4、排序查询

(1)语法:
		select 字段|表达式|常量
		from 表
		[where 条件]
		order by 排序的字段;
(2)注意
	1. 升序 asc(默认)
  	   降序 desc
	2.可以按表达式、函数、别名、多个字段进行排序
	3.一般来讲order by放到查询的语句的最后,在不使用分页的情况下

#一、按单个字段进行排序
SELECT * FROM employees ORDER BY salary ;
SELECT * FROM employees ORDER BY salary DESC;

#二、按多个字段进行排序
SELECT * FROM employees
ORDER BY salary DESC,employee_id ASC;

#三、按表达式排序
#案例:按年薪降序
SELECT ,salary12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY salary12(1+IFNULL(commission_pct,0)) DESC;

#四、按别名排序
#案例:按年薪降序
SELECT ,salary12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 DESC;

#五、按函数排序
#案例:按姓名中的字节长度大小降序
SELECT last_name,LENGTH(last_name)
FROM employees
ORDER BY LENGTH(last_name) DESC;

你可能感兴趣的:(MYSQL,数据库,mysql)