SQL常用函数总结(一)

SQL从功能上大致分为三类:


  • DDL(Data Definition Languages数据定义语言),主要语句关键字有:CREATE、DROP、ALTER、RENAME、TRUNCATE(清空)
  • DML(Data Manipulation Languages数据操作语言),主要语句关键字有:INSERT、DELETE、UPDATE、SELECT
  • DCL(Data Control Languages数据控制语言),主要关键字有:GRANT(授予权限)、REVOKE(回收权限)、COMMIT(提交)、ROLLBACK(回滚)、SAVEPOINT(保存点)

!MySQL在windows环境下大小写不敏感,在linux环境下大小写敏感。oracle大小写敏感

一、基础语句

1.导入现有数据表、表的数据

方式1:在命令行导入:source+文件的全路径名

方式2:基于具体的图形化界面的工具导入数据eg:SQLyog中,选择“工具”--“执行sql脚本”--选择xxx.sql即可

2.基本的select语句

(1)SELECT 字段1,字段2,…FROM 表名

eg:

SELECT employee_id,last_name FROM employees;

(2)列的别名

①as 全称alias,可省略

②使用一对双引号" "引起来

③空格即可eg:

SELECT employee_id  emp_id,last_name as lname,department_id  "dept_id''

FROM employees;

(3)去除重复行DISTINCT

#正确去重情况
SELECT DISTINCT department_id FROM employees;
#错误去重情况(未报错但无意义)
SELECT DISTINCT department_id,salary FROM employees;#不知道该根据哪个字段去重

(4)空值null

①空值null不等同于0

②空值null参与运算,结果一定为空

涉及此情况时,常使用ifnull(xx,0)若xx为null则拿0替换

(5)着重号``

反引号``,英文状态下数据1左边键,当字段名与sql的关键字重复时代码通过会报错,此时需要用着重号,将字段名引起来

(6)查询常数

若查询原表中没有的常数,显示时会给每一行都加上该常数

(7)显示表结构

使用DESCRIBE或DESC查询表中字段的详细信息

DESC employees;#employees为表名

 (8)过滤数据

通常使用WHERE关键词+条件进行过滤数据

3.运算符

(1)算术运算符:+、-、*、/ 或者div、取模%或mod

SELECT 100+0,100-0,100+50,11+50*30,100+35.5,100-35.5,12%3,12 mod -5
FROM DUAL#dual是伪表

sql中,+没有连接的作用,只表示加法运算,当二者数据类型不一致时,存在隐式转换,例如

SELECT 100+'1' FROM DUAL #此处1为字符串,100为int,会将1转为数值,结果为101
SELECT 100+'a' FROM DUAL #a等不是数值的字符串通通转化为0处理
SELECT 100+null FROM DUAL #null参与运算,结果为null

(2)比较运算符

左右进行比较,结果为真返回1,结果为假返回0,其他情况返回null

①=,安全等于<=>,不等于!<>,!=,<,<=,>,>=

SELECT 1=2,1!=2,1='1',1='a',0='a' FROM DUAL
#结果分别为:0,1,1,0,1
#字符串存在隐式转换,若转换数值不成功,则看作0
SELECT 'a'='a','ab'='ab','a'='b' FROM DUAL
#结果分别为:1,1,0 第三种情况两边都是字符串则按照ANSI的比较规则进行比较
SELECT 1=null,null=null FROM DUAL
#结果分别为 null, null

 <=>完全等于,为NULL而生

SELECT 1<=>NULL,NULL<=>NULL FROM DUAL
#结果分别为0,1

②IS NULL、IS NOT NULL、ISNULL

SELECT last_name,salary,commission_pct FROM employees
WHERE commission_pct IS NULL
WHERE commission_pct IS NOT NULL
WHERE ISNULL(commission_pct )
WHERE NOT commission_pct <=> NULL
#1,3种效果一样,2,4种效果也一样

③LEAST()、GREATEST()最小、最大

SELECT LEAST('g','b','t','m'),GREATEST('g','b','t','m')
FROM DUAL;
#结果为:b,t

 常与LENGTH()同用,返回长度最短、最长的字段

④BETWEEN 条件1 AND 条件2  查询条件1和条件2范围内的数据,包括边界。

#查询工资在6000到8000的员工信息
SELECT employee_id,last_name,salary FROM employees
WHERE salary BETWEEN 6000 AND 8000
#或者WHERE salary >= 6000 && salary<=8000;

#查询工资不在6000到8000的员工信息
SELECT employee_id,last_name,salary FROM employees
WHERE salary NOT BETWEEN 6000 AND 8000
#或者WHERE salary <= 6000 or salary>=8000;

⑤ in (set)、not in (set)

#查询部门为10,20,30部门的员工信息
SELECT last_name,salary,department_id FROM employees
WHERE department_id IN(10,20,30);

#查询工资不是6000,7000,8000的员工信息
SELECT last_name,salary,department_id FROM employees
WHERE salary NOT IN(6000,7000,8000);

LIKE:模糊查询

%代表不确定个数的字符(0,1,多个),_代表一个不确定的字符,

转义字符为\,例如\_表示该字符是‘_’,而不是一个不确定的字符

SELECT last_name FROM employees
#查询名字中包含a的员工信息
WHERE last_name LIKE '%a%';
#查询以a开头的员工名字
WHERE last_name LIKE 'a%';
#查询名字中包含a且包含e的员工信息
WHERE last_name LIKE '%a%' AND last_name LIKE '%e%'
WHERE last_name LIKE '%a%e%' OR last_name LIKE '%e%a%'#写法2
#查询第二个字符是a的员工名字
WHERE last_name LIKE '_a%';
#查询第三个字符是a的员工名字
WHERE last_name LIKE '__a%';
#查询第二个字符是_且第三个字符是a的员工名字
WHERE last_name LIKE '_\_a%';

⑦正则表达式 REGEXP、RLIKE

[a-z]匹配任何字母,[0-9]匹配任何数字,‘X*’匹配任何数量的X字符,“*”匹配任何数量的任何字符,“·”匹配任何一个单字符,[…]匹配方括号内任何字符

#⑥中最后一个可以用正则表达式写
#查询第二个字符是_且第三个字符是a的员工名字
WHERE last_name LIKE '_$_a%' ESCAPE '$';
#^表示以shk开头的,$表示以t结尾的,最后一个表示包含hk的
SELECT 'shkstart' REGEXP '^shk' ,'shkstart' REGEXP 't$','shkstart' REGEXP 'hk' FROM DUAL;

⑧逻辑运算符 OR,|| 或;AND,&& 与;NOT,! 非; XOR,异或。

OR满足一个条件即可

AND两个条件都满足

XOR满足条件1,不满足条件2;不满足条件1,满足条件2.

OR、AND可一起使用,AND优先级高于OR,使用(),优先级更高

⑨位运算符 &与,|或,^异或,~取反,>>按位右移,<<按位左移

  • 24
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值