SQL语句复习(常见的单表查询语句)

SHOW

  • show + databases/tables; ====>返回数据库中可用的(数据库/表)一个列表。
  • show columns from + table====>返回表中每一个字段的信息(如:允许为NULL,键信息,默认值,以及其他)。
  • show status;====>用于显示广泛的服务器状态信息。
  • show create database/table;====>分别用来显示创建特定数据库或表中的MySQL语句。
  • show grants;====>用来显示授予用户(所有用户或特定用户)的安全权限。

SELECT

检索数据

  • select * from student;====>搜索student表中全部内容。
  • select name form student;====>搜索student表中name列的内容(单列检索)。
  • select id,name from dtudent;====>搜索student表中id,name中的内容(多列检索)。
  • select DISTINCT vend_id from products;====>搜索product表中vend_id的值并且去重。
  • select id from student LIMIT 5;====>返回搜索内容的前五行。
  • select id from student LIMIT 5,5;====>返回搜索内容行5开始的5行
  • select id from student LIMIT 4 OFFSET 3;====>意为行3开始取4行
  • select student.id from student;====>使用完全限定的名字来引用类(同时使用表名和列字)

排序检索数据(ODER BY)

  • select id form student ODER BY id; ====>检索后的id 进行排序
  • select id ,name form student ODER BY id,name;====>检索后进行先按id 进行排名,在按name进行排名。
  • select id, name from student ODER BY id,name DESC;====> 按照降序排序不写DESC或者ASC默认为升序
  • 使用ODER BY + LIMIT 找出最贵重的roducts
    • select price from products ODER BY price DESC LIMIT 1;

过滤数据(WHERE)

  • select * from student WHERE id = 2;====>检索id为2 的学生信息。
WHERE子句操作符

在这里插入图片描述

  • BETWEEN

    • select * from student WHERE id BETWEEN 5 AND 10;====>检索id为 5 到10 的学生
  • 空值检查

  • select * from student WHERE email IS NULL;====>检索邮箱为空的学生

  • AND

    • select * from WHERE id = 2 AND name =‘张三’;====>检索id 为2,并且名字为张三的数据。
  • OR

    • select * from WHERE id = 2 OR name =‘张三’;====>检索id 为2,或者名字为张三的数据。
  • 关于AND 和 OR ,AND 优先级更高,两者配合可以进行更高级的过滤。但是为了更好的得到想要的结果时,使用圆括号可以进行解决不必要的麻烦。

  • IN

    • select * from student WHERE id IN (10,25) ;检索学号为10或者25的学生。与OR的功能相同。
    • IN操作符相对于OR的优点
      • 更清楚更直观
      • 计算的次序更容易管理
      • IN一般比OR操作符清单执行更快
      • 可以包含其他select 语句,能够更动态的创建where子句。
  • NOT

    • select * form student WHERE id NOT NOT ( 10,25) ODER BY name;检索学号为10,25并且按照顺序排列。

通配符进行过滤(LIKE)

  • %
    • select * from student WHERE name LIKE ‘刘%’; 找出姓刘的学生,不管刘后面跟几个字都会输出。
  • _
    • select * from student WHERE name LIKE ‘刘_’;找出姓刘的并且刘后面只跟一个字。

使用数据处理函数

使用实例:

  • 使用Upper() 函数来进行将文本转换为大写
    • select english_name, upper(english_name) AS english_name FROM student ODER BY name;
  • 文本处理函数
    在这里插入图片描述
  • 日期和时间处理函数
    在这里插入图片描述
  • 常用数值处理函数
    在这里插入图片描述

聚集函数

在这里插入图片描述

  • AVG使用示例
    • select AVG(price) AS avg_price FROM products;====>使用AVG返回所有产品的平均价格。 avg_price 是一个别名。
  • COUNT注意
  • 使用COUNT(*)时,返回整张表数据的行数,不管是空值还是非空值。

分组数据(GROUP BY/HAVING)

  • GROUP BY

    • 使用 GROUP BY 创建分组。GROUP BY子句指示MYSQL分组数据,然后对每个组而不是整个结果集进行聚集。
    • 在这里插入图片描述
  • 使用 GROUP BY 的注意事项

    • GROUP BY子句可以包含任意数目的列。这使得能对分组进行嵌套,
      为数据分组提供更细致的控制。
    • 如果在GROUP BY子句中嵌套了分组,数据将在最后规定的分组上
      进行汇总。换句话说,在建立分组时,指定的所有列都一起计算
      (所以不能从个别的列取回数据)。
    • GROUP BY子句中列出的每个列都必须是检索列或有效的表达式
      (但不能是聚集函数)。如果在SELECT中使用表达式,则必须在
      GROUP BY子句中指定相同的表达式。不能使用别名。
    • 除聚集计算语句外, SELECT语句中的每个列都必须在GROUP BY子
      句中给出。
    • 如果分组列中具有NULL值,则NULL将作为一个分组返回。如果列
      中有多行NULL值,它们将分为一组。
    • GROUP BY子句必须出现在WHERE子句之后, ORDER BY子句之前
  • ** GROUP BY 与ODER BY 的区别**
    在这里插入图片描述

  • HAVING

    • 使用having 来过滤分组
    • 删选出分组中的总数大于或等于2的id在这里插入图片描述
  • HAVING和WHERE的差别

    • WHERE在数据分组前进行过滤, HAVING在数据分组后进行过滤。
    • WHERE排除的行不包括在分组中。这可能会改变计算值,从而影响HAVING子句中基于这些值过滤掉的分组。
    • HAVING 可以使用聚集函数,而WHERE不可以。
  • SELECT 子句及顺序
    在这里插入图片描述

INSERT

  • 插入完整的一行====>INSERT INTO student(id,name,email) VALUES(1,‘张三’,‘123456@qq.com’);
  • 插入行的一部分即省略列。必须满足以下某个条件
    • 该列定义允许为NULL值。
    • 在表定义中给出默认值。
    • 如果对表中不允许NULL值并且没有默认值的列不给出值,则插入不成功。
  • 插入多行数据
    • INSERECT INTO 表(字段1, …, 字段N) values
      (value1, …),
      (value2, …),
      (value3, …) ;

UPDATE/DELETE

  • UPDATE
    • 更新表中特定行====>UPDATE student SET email = ‘345678@qq.com’ WHERE name=‘张三’ ;更新名字为张三的邮箱。
    • 用where语句特定某一行,如果没有where限定,会改掉全部表中的某列的值
    • 更新表中多个列====>UPDATE student SET name=‘张三’,email='1234567@qq.com’WHERE name =‘李四’;将李四的名字和邮箱修改。
  • DELETE
    • DELETE FROM student where name=‘张三’;删除张三的内容
    • DELETE删除的不是表,而是表的内容
  • ****

CREATE/ALTER/DROP

  • CREATE

    • 创建一张学生表
      CREATE TABLE student (
      id INT,
      sn INT comment ‘学号’,
      name VARCHAR(20) comment ‘姓名’,
      qq_mail VARCHAR(20) comment ‘QQ邮箱’ NULL
      );
  • ALTER

  • 添加一个新列====>ALTER TABLE student ADD telephone VARCHAR(20) comment ‘电话号码’;增加一个新列,必须制定其数据类型

  • 删除一个新列====>ALTER TABLE student DROP telephone ;删除一个电话号码列。

  • DROP

  • drop table student;====>删除student表

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值