SQL基础(上)

一、 SQL语言基础

什么是SQL:
结构化查询语言(Structured Query Language)简称SQL,是
一种特殊目的的编程语言,是一种数据库查询和程序设计语言,
用于存取数据以及查询、更新和管理关系型数据库系统。

SQL语句分类

1、数据查询语句【(DQL)Data Query Language】Select 查询
2、数据操作语句(DML)【Data Manipulation Language】

  • insert 插入
  • Update 更新
  • Delete 删除

3、数据定义语句(DDL)【Data Definition Language】

  • Create 新建
  • Alter 修改结构
  • Drop 删除(库、表等)
  • Rename 重命名
  • Truncate 删除(表的数据)

4、事务控制语句(TCL)【Transaction Control Language】

  • Commit 提交
  • Rollback 事务回滚
  • Savepoint 存储点

5、数据控制语言(DCL)【Data Control Language】

  • Grant 授权
  • Revoke 解除授权

1.基本的SELECT 命令

实例:

SELECT * FROM emp;   #  select:表示查找内容,from:查询哪一个表,*:表示查询所有,

在这里插入图片描述

2、选择指定的列

实例:

SELECT ename,sal from emp;  #,:列名与列名之间用英文逗号间隔  查询emp表的名字和工资

在这里插入图片描述

3、注释

实例:

-- 单行注释    #注意--后面必须有一个空格
#单行注释     
/*多
 * 行
 * 注
 * 释

在这里插入图片描述

二、一般的编写规范

  • sql语句不区分大小写,系统的关键字、保留字、函数名称大写,表名、列名小写。
  • sql语句可以用空格间隔每个单词,也可以用回车。
  • 复杂的语句要加上注释予以说明,系统不会执行注释的内容

其他注意事项:

  • SQL 命令大小写不敏感
  • SQL 命令可写成一行或多行
  • 一个关键字不能跨多行
  • SQL语句之间用分号 ;作为分隔符,系统读取到分号才会执行语句

1、算数

  • 对数值型数据可用算数运算创建表达式
    实例:、
select ename,sal,sal+200
from emp;

运算的优先级

  • 乘法和除法的优先级高于加法和减法

  • 同级运算的顺序是从左到右

  • 表达式中使用小括号()可强行改变优先级的运算顺序
    实例:

select ename,sal,12*sal+200
from emp;

在这里插入图片描述

在这里插入图片描述

2、定义空值

实例:

select ename,job,comm 
from emp;

在这里插入图片描述

在这里插入图片描述

3、别名

实例:

select ename name,sal salary
from emp;
select ename ASname,sal ASsalary
from emp;

在这里插入图片描述

4、文字字符串

1.如果查询的数据跟表没关系,都是手动输入的 。在mysql中可以不写
from,只写select
实例:

SELECT 24*360;  #注: 如果是oracle数据库, 则必须有from, 可以from dual表。dual表是一个空表。

在这里插入图片描述
2.日期和字符型文字字符必须用单引号括起来。数字不用
实例:

SELECT 'Hello World',123;

在这里插入图片描述
3.可以输入判断表达式,为真则显示1,为假则显示0
实例:

SELECT 10>9;
SELECT ename, sal>1000 FROM emp;

在这里插入图片描述
4.如果从表中查询手动输入的表达式,显示的结果条数和表中的
行数一致
实例:

SELECT 123,24*360 FROM emp;

在这里插入图片描述

5.重记录

实例:

SELECT deptno
FROM emp;

在这里插入图片描述

SELECT DISTINCT deptno  #使用DISTINCT关键字可使显示结果去掉重复行
FROM emp

在这里插入图片描述

SELECT DISTINCT job,deptno
FROM emp;

在这里插入图片描述

三、限定和排序数据

1.使用选择限定

实例:

select * from emp where deptno =10;

在这里插入图片描述

2.使用WHERE子句

实例:

SELECT ename, job, deptno
FROM emp
WHERE job='CLERK';

在这里插入图片描述

注意:在Where子句中

  • 字符串和日期要用单引号引起来, 数字不用
  • 字符串大小写默认不敏感
  • 不能使用列的别名作为where的条件

3.比较运算符

在这里插入图片描述

实例:

SELECT ename, sal, comm
FROM emp
WHERE sal<comm;

在这里插入图片描述

其它的比较运算符

4.使用BETWEEN运算符

实例:

SELECT ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 1500;

使用BETWEEN运算符显示某一值域范围的记录(包含范围的
这两个值)
在这里插入图片描述

5.使用IN运算符

实例:

SELECT empno, ename, sal, mgr
FROM emp
WHERE mgr IN (7902, 7566, 7788);

使用IN运算符获得匹配列表值的记录
在这里插入图片描述

6.使用LIKE运算符

实例:

SELECT ename
FROM emp
WHERE ename LIKE 'S%';
  • 使用LIKE运算符模糊匹配查询
  • 查询条件可包含文字字符或数字
  • % 表示零个或多个任意字符 _ 表示任意一个字符
    在这里插入图片描述
    使用组合方式匹配字符
    实例:
SELECT ename
FROM emp
WHERE ename LIKE '_A%';

在这里插入图片描述
匹配包含%或_本身的字符, 在左边加上 \ 符号,比如 % 和 _
实例:

SELECT ename
FROM emp
WHERE ename LIKE '%A\_B%';

7.使用IS NULL运算符

实例:

SELECT ename, mgr
FROM emp
WHERE mgr is NULL;

查询包含空值的记录
在这里插入图片描述

逻辑运算符

在这里插入图片描述

8.使用AND运算符

实例:

SELECT empno, ename, job, sal
FROM emp
WHERE sal>=1100
AND job='CLERK';

AND 需要同时满足两个条件才符合
在这里插入图片描述

9.使用OR运算符

实例:

SELECT empno, ename, job, sal
FROM emp
WHERE sal>=1100
OR job='CLERK';

OR 只要满足其中一个条件就符合
在这里插入图片描述

10.使用NOT运算符

实例:

SELECT ename, job
FROM emp
WHERE job NOT IN ('CLERK','MANAGER');

NOT 表示不满足某条件 就符合查询要求
在这里插入图片描述

11.优先级规则

  • 小括号() 最优先
  • 其次再看如下顺序,优先级从高到低排序
    在这里插入图片描述
    实例:使用括号提高优先级

在这里插入图片描述
1.在这里插入图片描述
2.在这里插入图片描述

12.ORDER BY 子句

使用ORDER BY 子句将记录排序
• ASC: 升序, 默认可以不写
• DESC: 降序
ORDER BY 子句在SELECT语句的最后
实例:

select ename,job,deptno,hiredate
from emp order by hiredate asc; 

在这里插入图片描述

select ename,job,deptno,hiredate
from emp order by hiredate desc;

在这里插入图片描述

13.使用列的别名排序

实例:

select empno, ename, sal*12 nianxin
from emp
order by nianxin;

在这里插入图片描述

14.多个列排序

实例:

select ename, deptno, sal
from emp
order by deptno asc, sal desc;

在这里插入图片描述

15.限定结果显示行数

实例:

select ename
from emp
limit 3;

在这里插入图片描述

16.限定结果显示行数

实例:

select ename
from emp
limit 1,2;

在这里插入图片描述

四、函数

数字函数

实例:

select round(123.456,2);  #将数字m精确到小数点后n位(四舍五入)
select mod(8,5);  #返回m除以n的余数
select abs(6);  #返回n的绝对值

使用大小写转换函数

实例:
显示小写名字

select lower(ename)
from emp;

显示大写名字

select upper(ename)
from emp;

使用字符处理函数

将字符串连接在一起
实例:

select concat(ename,'的工资是',sal) from emp;

在这里插入图片描述
返回字符串的字节个数
实例:

select length('qwe');
select char_length('qwe');

获取字符串str最左边的n个字符
实例:

select left('qwerty',2);

在这里插入图片描述

select right('qwerty',2);

在这里插入图片描述
获取字符串str第m个字符开始,长度为n的字符n可以不写, 则到字符串末尾
实例:

select mid('wahaha',2,3);

在这里插入图片描述

select mid('wahaha',2);

在这里插入图片描述

select substr('qwerty',2,3);
select substring('qwerty',2,3);

在这里插入图片描述

时间和日期函数

实例:
时期

select curdate();

在这里插入图片描述
时间

select curtime();

日期和时间

select now();
select year(now());  #年份
select month(now());  #月份
select day(now());  #日

给日期date加上n个type的时间单位,n可以是负数type可以是year month day

实例:

select date_add('1976-11-13',interval 2 day);
select date_add(curdate(),interval -1 month);

计算 date1 - date2 的间隔天数

实例:

select datediff(curdate(),'2018-07-31');

在这里插入图片描述

条件判断函数if

if(逻辑条件,value1,value2)
如果条件成立则返回value1,不成立则返回value2

实例:

select if(10>8,'真','假');
select if(10<8,'真','假');
select ename 姓名,sal 工资,if(sal>3000,'富','穷') 称号 from emp;

在这里插入图片描述

条件判断函数ifnull

ifnull(value1,value2)
对value1进行判断,如果value1不为空则返回value1,
如果value1为空则返回value2

select ename,job,sal,comm,12*(sal+ifnull(comm,0)) income from emp;
select ename,sal,comm,ifnull(sal+comm,sal) from emp;  #员工工资加奖金的总和

在这里插入图片描述

条件判断函数case

根据员工不同的职位,显示不同的中文职位名称
clerk显示为 ‘办事员’,salesman显示为 ‘销售员’
manager显示为 ‘经理’,其他人显示为 ‘其他岗’

实例:

select
	ename,
	job,
	case
		job
	when
		'clerk' then '办事员'
		when 'salesman' then '销售员'
		when 'manger' then '经理'
		else '其他岗位'
	end 职位
from
	emp;

在这里插入图片描述

  • 14
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值