SQL基础知识整理

本文是对SQL相关内容的一个梳理。首先SQL语言的分类主要有四大类

DDL数据定义语言:

关键字有CREATE、ALERT、DROP创建一个新的表或者表的视图或者对象;

  • 操作数据库
    创建:create database mydb2 character set gbk COLLATE gbk_chinese_ci;
    查询:show create database mydb2;
    修改:alter database mydb2 character set utf8;
    删除:drop database mydb2;
    其他:select database(); //查看当前使用的数据库
    use mydb3; //切换使用的数据库
  • 操作数据表
    语法:
    create table 表名(
    字段1 字段类型,
    字段2 字段类型,

    字段n 字段类型
    );

DML数据操作语言:

主要有INSERT、UPDATE、DELETE对应对表中的数据进行增,改,删除;

  • 插入操作:
    语法: INSERT INTO 表名(列名1,列名2 …)VALUES(列值1,列值2…);
    注意:列名与列值的类型、个数、顺序要一一对应;
    值不要超出列定义的长度
    如果插入空值,请使用null
    插入的日期和字符一样,都使用引号括起来。
  • 修改操作:
    语法:UPDATE 表名 SET 列名1=列值1,列名2=列值2 。。。 WHERE 列名=值
  • 删除操作:
    语法 : DELETE FROM 表名 [WHERE 列名=值]

DCL数据控制语言:

用于授予或收回数据库的某些权限或事务提交。
GRANT:授权;ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。

DQL数据查询语言:

由SELECT子句WHERE子句FROM子句构成的查询块。
数据查询语言不会修改数据,而是将查询的结果集返回到客户端。
语法:
SELECT selection_list /*要查询的列名称 */
FROM table_list /*要查询的表名称 */
WHERE condition /*行条件 */
GROUP BY grouping_columns /*对结果分组 */
HAVING condition /*分组后的行条件 */
ORDER BY sorting_columns /*对结果分组 */
LIMIT offset_start, row_count /*结果限定 */

基础查询

  • 查询所有列 SELECT * FROM stu;
  • 查询指定列 SELECT sid, sname, age FROM stu;

条件查询

条件查询即再WHERE子句中,同时WHERE子句中可以使用如下关键字:

  • =、!=、<>、<、<=、>、>=;
  • BETWEEN…AND;
  • IN(set);
  • IS NULL; IS NOT NULL;
  • AND;OR;NOT;
    eg:
    查询性别为女,并且年龄50的记录
    SELECT * FROM stu WHERE gender=‘female’ AND ge<50;
    查询学号为S_1001,S_1002,S_1003的记录
    SELECT * FROM stu WHERE sid IN (‘S_1001’,‘S_1002’,‘S_1003’);

模糊查询

当想查询姓名中包含a字母的学生时就需要使用模糊查询了。模糊查询需要使用关键字LIKE。其中通配符有:

  • _ 任意一个字符 ‘张_’
  • %:任意0~n个字符 ‘%张%’

字段控制查询

  • 去重:DISTINCT关键字
    SELECT DISTINCT sal FROM emp;
  • 查询某几列的和:这几列都是数值类型的时候可以相加
    SELECT *,sal+comm FROM emp;
  • 添加别名: as关键字

聚合函数

用来做纵向运算的函数

  • COUNT():统计指定列不为NULL的记录行数;
    MAX():计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算;
  • MIN():计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算;
  • SUM():计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
  • AVG():计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果为0;

分组查询

当需要分组查询时需要使用GROUP BY子句,例如查询每个部门的工资和,这说明要使用部门来分组。

  • GROUP BY子句
    查询每个部门的部门编号和每个部门的工资和:
    SELECT deptno, SUM(sal) FROM emp GROUP BY deptno;
  • HAVING子句
    查询工资总和大于9000的部门编号以及工资和:
    SELECT deptno, SUM(sal) FROM emp GROUP BY deptno HAVING SUM(sal) > 9000;

LIMIT

SELECT * FROM emp LIMIT x, y;
从x行起查询y行记录。

查询语句书写顺序:select – from- where- group by- having- order by-limit
查询语句执行顺序:from - where -group by - having - select - order by-limit

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值