sql常用

SQL常用增删改查语句

#仅记录自己常用 备作参考

DQL(数据查询语言)

查看数据库信息:

  • 注释:-- 文本, /* 文本 */
  • SHOW DATABASES
  • USE DATABASE
  • SHOW TABLES FROM database
  • DESC table

1.select

语法:select 字段 from 表名

  • 查询的结果是一个虚拟表;

一、查询常量

SELECT 100;

二、查询表达式

SELECT 100 % 3;

三、查询字段

SELECT name FROM students;
SELECT ID,name,sex FROM students;
SELECT * FROM students; --查询所有字段

四、查询(调用)函数+起别名

SELECT database();
SELECT version();
SELECT user();
SELECT ID,salary,IF(salary>3000,'A','B') AS rank
FROM emplpyees;
SELECT ID,salary,
	CASE WHEN salary <= 3000 THEN 'D'
	CASE WHEN salary <= 5000 THEN 'C'
	CASE WHEN salary <= 8000 THEN 'B'
	ELSE 'A'
	END AS rank
FROM employees;

五、去重

SELECT DISTINCT a
FROM b;

2.join

内连接(显示两张表的交集)

  • 语法:
  • (SQL92标准)
    select 查询对象 from 表1 别名,表2 别名
    where 连接条件;
  • (SQL99标准)
    select 查询对象 from 表1 别名
    join 表2 别名
    on 连接条件;
  1. 等值连接 (优化:大表放join左边,小表放join右边)
  2. 非等值连接
  3. 自连接

外连接(显示主表所有信息,从表能匹配上显示,匹配不上显示null)

  • 语法:
  1. (左外连接,join左边为主表)
    select 查询对象 from 表1 别名
    left join 表2 别名
    on 连接条件;
  2. (右外连接,join右边为主表)
    select 查询对象 from 表1 别名
    right join 表2 别名
    on 连接条件;
  • 外连接连接条件为 ‘=’

3.where

  1. 按关系表达式筛选
    <        >        =        >=        <=        <>(也可用‘!=’但不建议)

  2. 按逻辑表达式筛选
    and         or         not

  3. 模糊查询
    LIKE/NOT LIKE        IN/NOT IN        BETWEEN…AND/NOT BETWEEN…AND        IS NULL/IS NOT NULL

    like一般搭配通配符使用:
    ‘_’:任意单个字符   ‘%’:任意多个字符
    转义字符:
    LIKE '$_%’ ESCAPE ‘$’;(查询以_开头的字符串)

4.group by

按字段分好组之后如果不按分组函数查询则显示的是该组第一行数据!

5.having

6.order by

7.limit

8.执行顺序

常用函数

1.字符型

1. concat(‘str’,‘str’,‘str’,…) 拼接字符串

和‘+’的区别:

  • ‘+’:
    1. 数值+数值
    2. 其中一个为字符型—>强制转换为数值型,若无法转换则换成‘0’
    3. 其中一个为null,结果为null(将null看做正无穷)
  • concat:
    1. 字符型拼接
    2. 将数值转换为字符型进行拼接

2. substr(‘str’,local,length) 截取字符串

  • local为起始位置,length为截取长度

2.逻辑型

1. IFNULL(表达式1,表达式2)

  • 表达式1不为null,显示表达式1,否则显示表达式二

2. EXIST(子查询语句)

  • 返回布尔值,若子查询语句不为空返回真,为空返回假。
  • NOT EXIST相反
  • 由于IN效率较低,故可由EXIST或者表连接代替,NOT IN同理
--查询某课程成绩大于60分的学生姓名
SELECT s.sname
FROM student s
WHERE s.sno IN (SELECT sno FROM scores WHERE degree > 60);
---------------------------------------------------------
 SELECT s.sname
 FROM students s
 WHERE EXIST (SELECT degree FROM scores 
 				WHERE degree > 60
 				AND sno = s.sno);
----------------------------------------------------------
SELECT s.sname
FROM students s
JOIN scores sc
ON s.sno = sc.sno
WHERE sc.degree > 60;

窗口函数

插入连续序号列(无视重复)

row_number() over(partition by 字段 order by 字段)

create index

create 索引类型 index 索引名 on 表名(字段)
/创建索引,提高搜索速度/

  • 一般在 1.数据量大 2.经常被查询的字段 建立索引

  • 普通索引和唯一性索引性能差不多,但唯一性索引要求建立字段中数据唯一

  • 对于复合索引on(a,b,c)只对a|a,b|a,b,c这3种查询有效果,其他顺序无效。

  • 优点:提高查询速度

  • 缺点:1.占用一定储存空间 2.增加或修改表中数据时会动态修改索引,降低表中数据更新维护速度

详见 https://www.cnblogs.com/hyd1213126/p/5828937.html

DDL

create database

drop database

create table

alter table

drop table

复制表

DML

insert into

update set

delete from

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值