SELECT cust_name, COUNT(cust_address) AS addr_numFROM Customers GROUP BY cust_name;
分组后排序
SELECT cust_name, COUNT(cust_address) AS addr_numFROM Customers GROUP BY cust_nameORDER BY cust_name DESC;
HAVING
- HAVING 用于对汇总的 GROUP BY 结果进行过滤 。
- HAVING 要求存在一个 GROUP BY 子句 。
- WHERE 和 HAVING 可以在相同的查询中 。
- HAVING vs WHERE
- WHERE 和 HAVING 都是用于过滤 。
- HAVING 适用于汇总的组记录;而 WHERE 适用于单个记录 。
SELECT cust_name, COUNT(*) AS numFROM CustomersWHERE cust_email IS NOT NULLGROUP BY cust_nameHAVING COUNT(*) >= 1;
(以下为 DDL 语句用法)七、数据定义
DDL 的主要功能是定义数据库对象(如:数据库、数据表、视图、索引等) 。数据库(DATABASE)创建数据库
CREATE DATABASE test;
删除数据库DROP DATABASE test;
选择数据库USE test;
数据表(TABLE)创建数据表普通创建
CREATE TABLE user (id int(10) unsigned NOT NULL COMMENT 'Id',username varchar(64) NOT NULL DEFAULT 'default' COMMENT '用户名',password varchar(64) NOT NULL DEFAULT 'default' COMMENT '密码',email varchar(64) NOT NULL DEFAULT 'default' COMMENT '邮箱') COMMENT='用户表';
根据已有的表创建新表CREATE TABLE vip_user ASSELECT * FROM user;
删除数据表DROP TABLE user;
修改数据表添加列ALTER TABLE userADD age int(3);
删除列ALTER TABLE userDROP COLUMN age;
修改列ALTER TABLE `user`MODIFY COLUMN age tinyint;
添加主键ALTER TABLE userADD PRIMARY KEY (id);
删除主键ALTER TABLE userDROP PRIMARY KEY;
视图(VIEW)定义创建视图
视图是基于 SQL 语句的结果集的可视化的表 。
视图是虚拟的表,本身不包含数据,也就不能对其进行索引操作 。对视图的操作和对普通表的操作一样 。
作用
简化复杂的 SQL 操作,比如复杂的联结;
只使用实际表的一部分数据;
通过只给用户访问视图的权限,保证数据的安全性;
更改数据格式和表示 。
CREATE VIEW top_10_user_view ASSELECT id, usernameFROM userWHERE id < 10;
删除视图DROP VIEW top_10_user_view;
索引(INDEX)作用创建索引
通过索引可以更加快速高效地查询数据 。
用户无法看到索引,它们只能被用来加速查询 。
注意
更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新 。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引 。
唯一索引
唯一索引表明此索引的每一个索引值只对应唯一的数据记录 。
CREATE INDEX user_indexON user (id);
创建唯一索引CREATE UNIQUE INDEX user_indexON user (id);
删除索引ALTER TABLE userDROP INDEX user_index;
约束SQL 约束用于规定表中的数据规则 。
- 如果存在违反约束的数据行为,行为会被约束终止 。
- 约束可以在创建表时规定(通过 CREATE TABLE 语句),或者在表创建之后规定(通过 ALTER TABLE 语句) 。
- 约束类型
- NOT NULL - 指示某列不能存储 NULL 值 。
- UNIQUE - 保证某列的每行必须有唯一的值 。
- PRIMARY KEY - NOT NULL 和 UNIQUE 的结合 。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录 。
- FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性 。
- CHECK - 保证列中的值符合指定的条件 。
- DEFAULT - 规定没有给列赋值时的默认值 。
CREATE TABLE Users (Id INT(10) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT '自增Id',Username VARCHAR(64) NOT NULL UNIQUE DEFAULT 'default' COMMENT '用户名',Password VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '密码',Email VARCHAR(64) NOT NULL DEFAULT 'default' COMMENT '邮箱地址',Enabled TINYINT(4) DEFAULT NULL COMMENT '是否有效',PRIMARY KEY (Id)) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';
(以下为 TCL 语句用法)
推荐阅读
- 上饶也有一处洞天福地——神农源景区
- 前端测试框架Jest——语法篇
- 分类算法其实也可做回归分析——以knn为例
- 什么是杜比全景声——沉浸式环绕声?
- 今日头条算法原理—— 3分钟了解今日头条推荐算法原理
- 开淘宝店必备的软件 手机淘宝开店软件哪个最好用
- 2020年最值得阅读的十本程序员书
- 医保卡——如何提现、如何使用?
- 网络程序员的一款“军刀”Postman
- 关于Java并发工具,90%的程序员需要了解的那些技术栈