目录

1. DQL:查询语句

  1. 排序查询
  2. 聚合函数
  3. 分组查询
  4. 分页查询

2. 约束

3. 多表之间的关系

4. 范式

DQL:查询语句

1. 排序查询

语法:order by 子句
order by 排序字段1 排序方式1 , 排序字段2 排序方式2...
排序方式:
ASC:升序,默认的。
DESC:降序。
SELECT * FROM aniki ORDER BY age DESC, insert_time ASC;

注意:如果有多个排序条件,则当前边的条件值一样时,才会判断第二条件。

2. 聚合函数:将一列数据作为一个整体,进行纵向的计算。

1. count:计算个数

一般选择非空的列:主键,当选择的列有为null的值时,数量会相应减少。
count()
SELECT COUNT(sex) AS 兄贵数 FROM aniki;

SELECT COUNT(
) AS 兄贵数 FROM aniki;

2. max:计算最大值

SELECT MAX(age) 最Old_Ass FROM aniki;

3. min:计算最小值

SELECT MIN(age) 最Boy_next_door FROM aniki;

4. sum:计算和

SELECT SUM(age) 兄の和 FROM aniki;

5. avg:计算平均值

SELECT AVG(age) 最平♂家boy FROM aniki;

注意:聚合函数的计算,排除null值。
解决方案:
选择不包含非空的列进行计算
IFNULL函数

3. 分组查询:

语法:group by 分组字段;
注意:
分组之后查询的字段:分组字段、聚合函数
where 和 having 的区别:
where 在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来
where 后不可以跟聚合函数,having可以进行聚合函数的判断。

-- 按照sex分组。分别查询年龄,人数 要求:年龄低于20的人,不参与分组,分组之后。人数要大于2个人
SELECT sex , AVG(age),COUNT(name) FROM aniki WHERE age> 20 GROUP BY sex HAVING COUNT(name) > 2;

4. 分页查询

  1. 语法:limit 开始的索引,每页查询的条数;
  2. 公式:开始的索引 = (当前的页码 - 1) * 每页显示的条数
    -- 每页显示3条记录
    SELECT * FROM aniki LIMIT 0,3; -- 第1页

SELECT * FROM aniki LIMIT 3,3; -- 第2页

SELECT * FROM aniki LIMIT 6,3; -- 第3页

  1. limit 是一个MySQL"方言"

约束

概念: 对表中的数据进行限定,保证数据的正确性、有效性和完整性。

主键约束:primary key

主键约束:primary key。
注意:
含义:非空且唯一
一张表只能有一个字段为主键
主键就是表中记录的唯一标识

在创建表时,添加主键约束
-- 主键约束
CREATE TABLE cat (
id INT PRIMARY KEY, -- id 为主键
NAME VARCHAR(20),
age INT
);
DESC cat;

删除主键
ALTER TABLE cat DROP PRIMARY KEY;

创建完表后,添加主键
ALTER TABLE stu MODIFY id INT PRIMARY KEY;

非空约束:not null

非空约束:not null,某一列的值不能为null
创建表时添加约束
CREATE TABLE dog (
id INT,
NAME VARCHAR(20) NOT NULL,
gender CHAR(1)
);
创建表完后,添加非空约束
ALTER TABLE dog MODIFY NAME VARCHAR(20) NOT NULL;

删除name的非空约束
ALTER TABLE dog MODIFY NAME VARCHAR(20);

唯一约束:unique

唯一约束:unique,某一列的值不能重复
注意:唯一约束可以有NULL值,但是只能有一条记录为null
在创建表时,添加唯一约束
CREATE TABLE person(
id INT,
phone_number VARCHAR(20) UNIQUE -- 手机号
);

删除唯一约束
ALTER TABLE stu DROP INDEX phone_number;
在表创建完后,添加唯一约束
ALTER TABLE stu MODIFY phone_number VARCHAR(20) UNIQUE;

外键约束:foreign key

外键约束:foreign key,让表于表产生关系,从而保证数据的正确性。
在创建表时,可以添加外键
语法:
create table 表名(
....
外键列
constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
先有主表,然后有附表的外键,外键可以为null(新来的未分配)。



删除外键ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
创建表之后,添加外键
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称);

自动增长:

概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

在创建表时,添加主键约束,并且完成主键自增长
CREATE TABLE emp (
id INT PRIMARY KEY AUTO_INCREMENT,
NAME VARCHAR(30),
age INT,
dep_name VARCHAR(30),
dep_location VARCHAR(30)
);
-- 添加数据
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('张三', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('李四', 21, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('王五', 20, '研发部', '广州');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('老王', 20, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('大王', 22, '销售部', '深圳');
INSERT INTO emp (NAME, age, dep_name, dep_location) VALUES ('小王', 18, '销售部', '深圳');

SELECT * FROM emp;

删除自动增长
ALTER TABLE stu MODIFY id INT;
添加自动增长
ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

级联操作(学了会雪崩,最好别学)

添加级联操作
语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称
FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;
分类:
级联更新:ON UPDATE CASCADE
级联删除:ON DELETE CASCADE

SQL中的DQL查询语句的更多相关文章

  1. Mysql中的DQL查询语句

    ----------------1.查询所有列 --查询 学生 表所有记录(行) select *from 学生 --带条件的查询 select *from 学生 where 年龄>19 --- ...

  2. SQL学习笔记——SQL中的数据查询语句汇总

    where条件表达式 --统计函数 Select count(1) from student; --like模糊查询 --统计班上姓张的人数 select count(*) from student ...

  3. DQL查询语句使用(select)

      9)DQL查询语句使用   SELECT语句在PL/SQL中使用,必须 采用下面用法:     select id INTO 变量   from t001 where id=5;    将记录字段 ...

  4. 对于Oracle中分页排序查询语句执行效率的比较分析

    转自:http://bbs.csdn.net/topics/370033478 对于Oracle中分页排序查询语句执行效率的比较分析 作者:lzgame 在工作中我们经常遇到需要在Oracle中进行分 ...

  5. 一道sql面试题(查询语句)

    一道sql面试题(查询语句)   id name age 1  a        11 2  b        11 3  c        12 4  d        13 5  e        ...

  6. Oracle SQL:select各类查询语句总结

    SQL查询语句总结 数据查询语言:即DML(Data Mannipulation Language)数据操纵语言,用于查询.操纵数据表资料行 本手册所有示例引用表均以TIPTOP GP  ERP数据库 ...

  7. 6.1课堂笔记—DML(数据操作语言),DQL查询语句

    一.DML(数据操作语言) InnoDB MyISAM 支持事务 不支持事务 不支持全文索引 支持全文索引 支持外键约束 不支持 命令查看默认存储引擎 show variables like '%st ...

  8. T-SQL:SQL Server-数据库查询语句基本查询

    ylbtech-SQL Server-Basic:SQL Server-数据库查询语句基本查询 SQL Server 数据库查询语句基本查询. 1,数据库查询语句基本查询   数据库 SQL Serv ...

  9. Odoo14 ir.rule 中的domain查询语句

    # ir.rule 中的domain查询语句 # 当你的字段是many2one.many2many.one2many的时候domain都会强制加上过滤域 # tree显示的时候也会过滤 # m.mod ...

随机推荐

  1. CF1111C Creative Snap 线段树

    用线段树模拟一下就好了~ code: #include <cstdio> #include <algorithm> #define lson ls[x] #define rso ...

  2. boost phoenix

    In functional programming, functions are objects and can be processed like objects. With Boost.Phoen ...

  3. git 往远端Dev推送

  4. Flutter 中的基本路由

    Flutter 中的路由通俗的讲就是页面跳转.在 Flutter 中通过 Navigator 组件管理路由导航,并提供了管理堆栈的方法.如:Navigator.push 和 Navigator.pop ...

  5. intellijidea查看git窗口

    version control null

  6. 6105 - deauth after EAPOL key exchange sequence

    wifi无法连接公司的网络 Warning Error in Event Log - deauth after EAPOL key exchange sequence https://forums.i ...

  7. 术语-MOSS-微软协作工具:MOSS(微软协作工具)

    ylbtech-术语-MOSS-微软协作工具:MOSS(微软协作工具) MOSS -- Microsoft Office Sharepoint Server,是一款为企业客户而设计的.基于web的内容 ...

  8. WebBrowser元素定位的常用方法

    在delphi中想要使用WebBrowser控件,需要一了解一些浏览器和网站制作的知识.操作元素(增删改查).需要提前了解HTML DOM.

  9. 控制banner内容

    Spring Boot启动的时候默认的banner是spring的字样,看多了觉得挺单调的,Spring Boot为我们提供了自定义banner的功能. 自定义banner只需要在resource下新 ...

  10. js实现的页面加载完毕之前loading提示效果

    页面加载readyState的五种状态 原文如下: 0: (Uninitialized) the send( ) method has not yet been invoked. 1: (Loadin ...