집 >데이터 베이스 >MySQL 튜토리얼 >MySQL 학습을 위한 DDL, DML, DQL의 기본 요약
이 기사는 mysql에 대한 관련 지식을 제공하며, 운영 데이터 테이블, 운영 데이터베이스, 단순 쿼리 데이터 등 DDL, DML, DQL에 관련된 내용을 주로 소개합니다. 함께 알아보시기 바랍니다. 모두를 돕습니다.
추천 학습: mysql 동영상 튜토리얼
데이터를 저장하는 창고입니다. 이는 우리 컴퓨터에 소프트웨어나 파일 시스템으로 구현됩니다. 그런 다음 이러한 특수 파일에 데이터를 저장하고, 파일의 데이터를 작동하려면 고정된 언어(SQL 언어/문)를 사용해야 합니다.
- 데이터를 체계적으로 저장하는 창고
- 영문명:
DataBase
, 약칭은DataBase
,简称 DB
数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行
增
、删
、改
、查
操作,数据库是对大量的信息进行管理的高效的解决方案。
常见的关系型数据库管理系统
我们开发应用程序的时候,程序中的所有数据,最后都需要保存到专业软件中。这些专业的保存数据的软件我们称为数据库。我们学习数据库,并不是学习如何去开发一个数据库软件,我们学习的是如何使用数据库以及数据库中的数据记录的操作。而数据库软件是由第三方公司研发。
常用数据库:Java开发应用程序主要使用的数据库:MySQL(5.6)、Oracle、DB2。(原因:开源,免费,功能足够强大,足以应付web开发)
在开发软件的时候,软件中的数据之间必然会有一定的关系存在。比如商品和客户之间的关系,一个客户是可以买多种商品,而一种商品是可以被多个客户来购买的。
需要把这些数据保存在数据库中,同时也要维护数据之间的关系,这时就可以直接使用上述的那些数据库。而上述的所有数据库都属于关系型数据库。
关系型数据:设计数据库的时候,需要使用E-R实体关系图来描述。
공통 관계형 데이터베이스 관리 시스템E-R 是两个单词的首字母,E表示
Entity
实体 R表示Relationship
DB
- 데이터베이스의 장점
- 데이터베이스는 데이터베이스입니다. 데이터를 특정 형식으로 저장하는 데이터는 파일로 저장되며, 대량의 데이터는 쉽게
추가
,삭제
,수정
,수정
할 수 있습니다. code>check SQL 문을 통해 >Operation, 데이터베이스는 많은 양의 정보를 관리하는 효율적인 솔루션입니다.- 공통 데이터베이스
애플리케이션을 개발할 때 프로그램의 모든 데이터는 전문 소프트웨어에 저장되어야 합니다. 데이터를 저장하는 이러한 전문 소프트웨어를 데이터베이스라고 합니다. 데이터베이스를 배울 때 우리가 배우는 것은 데이터베이스 소프트웨어를 개발하는 방법과 데이터베이스에서 데이터 레코드의 작동 방법을 배우는 것입니다. 데이터베이스 소프트웨어는 타사에서 개발되었습니다.
Oracle : 오라클의 대규모 관계형 데이터베이스입니다. 이 시스템은 휴대성이 좋고 사용이 간편하며 강력한 기능을 갖추고 있으며 다양한 대형, 중형, 소형 및 마이크로컴퓨터 환경에 적합합니다. 효율적이고 안전하며 신뢰할 수 있습니다. 하지만 수수료가 따릅니다.
🎜MYSQL🎜: 초기에는 MySQL AB라는 스웨덴 회사에서 개발했으며 나중에 Sun Company에 인수된 후 Oracle에 인수되었습니다. 작은 크기, 빠른 속도, 낮은 총 소유 비용, 특히 오픈 소스의 특성으로 인해 MySQL은 일반적으로 중소 규모 웹 사이트 개발을 위한 웹 사이트 데이터베이스로 선택됩니다. MySQL6.x 버전도 충전을 시작합니다. 🎜🎜🎜DB2🎜: IBM의 데이터베이스 제품, 유료. 뱅킹 시스템에서 자주 사용됩니다. 🎜🎜🎜SQLServer🎜: Microsoft에서 청구하는 중간 규모 데이터베이스입니다. C#, .net 등의 언어가 자주 사용됩니다. 🎜🎜🎜SyBase🎜: Sybase에서. 역사의 무대에서 사라졌습니다. 매우 전문적인 데이터 모델링 도구인 PowerDesigner를 제공합니다. 🎜🎜🎜일반적으로 사용되는 데이터베이스: Java 개발 애플리케이션에 주로 사용되는 데이터베이스: MySQL(5.6), Oracle, DB2. (이유: 오픈소스, 무료, 웹 개발에 대응할 수 있을 만큼 강력함)🎜🎜관계형 데이터베이스🎜🎜소프트웨어를 개발할 때 소프트웨어에 포함된 데이터 간에는 일정한 관계가 있어야 합니다. 예를 들어, 상품과 고객의 관계에서 한 고객이 여러 상품을 구매할 수도 있고, 한 상품을 여러 고객이 구매할 수도 있습니다. 🎜🎜이러한 데이터를 데이터베이스에 저장하고 데이터 간의 관계를 유지해야 합니다. 이 경우 위의 데이터베이스를 직접 사용할 수 있습니다. 위의 데이터베이스는 모두 관계형 데이터베이스입니다. 🎜🎜🎜관계형 데이터: 데이터베이스를 설계할 때 E-R 엔터티 관계 다이어그램을 사용하여 설명해야 합니다. 🎜🎜🎜🎜E-R은 두 단어의 첫 글자입니다. E는Entity
엔터티를 나타내고 R은 Relationship
관계를 나타냅니다. 🎜🎜🎜1. 데이터 테이블의 데이터에는 상품과 고객의 관계 등 일정한 관계가 있어야 합니다. 한 고객이 여러 상품을 구매할 수도 있고, 한 상품을 여러 고객이 구매할 수도 있습니다. 🎜🎜2. 데이터베이스를 설계할 때 ER 엔터티 관계 다이어그램을 사용하여 테이블 간의 관계를 설명할 수 있습니다. E는 엔터티를 나타내고 R은 관계를 나타냅니다. 3. 엔터티: Java 프로그램에서 객체로 이해될 수 있습니다. 예를 들어 제품, 고객 등은 모두 엔터티 개체입니다. E-R 다이어그램에서는 직사각형(직사각형)으로 표시됩니다. 🎜🎜4. 속성: 엔터티 개체에는 제품 이름, 가격 등과 같은 속성이 포함됩니다. 엔터티의 속성에 대해 우리는 E-R 다이어그램에서 타원으로 표시되는 이 엔터티의 데이터를 호출합니다. 🎜🎜5. 관계: 엔터티와 엔터티 간의 관계: E-R 다이어그램에서 다이아몬드로 표시됩니다. 🎜🎜🎜🎜🎜요구 사항: E-R 다이어그램을 사용하여 고객, 제품 및 주문 간의 관계를 설명합니다.🎜🎜🎜🎜🎜MySQL 데이터베이스🎜🎜SQL 소개🎜🎜🎜SQL이란 무엇입니까🎜🎜
구조적 쿼리 언어
구조적 쿼리 언어. SQL 문은 플랫폼에 종속되지 않으며 모든 데이터베이스에 공통됩니다. SQL 문을 사용하는 방법을 배운 후에는 모든 데이터베이스에서 사용할 수 있지만 모두 고유한 내용을 갖습니다. SQL 문은 강력하고, 배우기 쉽고, 사용하기 쉽습니다.Structured Query Language
结构化查询语言。SQL语句不依赖于任何平台,对所有的数据库是通用的。学会了SQL语句的使用,可以在任何的数据库使用,但都有特有内容。SQL语句功能强大、简单易学、使用方便。
SQL特点
SQL语句是一个非过程性的语言,每一条SQL执行完都会有一个具体的结果出现。多条语句之间没有影响
SQL作用
SQL语句主要是操作数据库,数据表,数据表中的数据记录
SQL通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- 可使用空格和缩进来增强语句的可读性。
- MySQL数据库的SQL语句不区分大小写,关键字开发中一般大写.
- 三种注释
- 单行注释:-- 注释内容
- 多行注释:/* 注释内容 */
-# 注释内容
:(mysql特有的单行注释)
SQL分类
SQL是用来存取关系数据库的语言,具有定义、操纵、控制和查询关系型数据库的四方面功能。所以针对四方面功能,我们将SQL进行了分类。
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create drop alter truncate(清空数据记录) show等DML(Data Manipulation Language)数据操作语言★★★
在数据库表中更新,增加和删除记录。如 update(更新), insert(插入), delete(删除) 不包含查询
DQL(Data Query Language) 数据查询语言★★★★★
数据表记录的查询。关键字select。DCL(Data Control Language)数据控制语言(了解)
是用来设置或更改数据库用户或角色权限的语句,如grant(设置权限),revoke(撤销权限),begin transaction等。这个比较少用到。
MySQL是一个需要账户名密码登录的数据库,登陆后使用,它提供了一个默认的root账号,使用安装时设置的密码即可登录。
启动数据库服务:在打开dos窗口中输入net start MySQL
命令
关闭数据库服务:在打开dos窗口中输入net stop MySQL
命令
连接MySQL:登录格式1:mysql -u用户名 -p密码
mysql -uroot -p123456
登录格式2:mysql[-h连接主机ip地址 -P端口号3306] -u 用户名 -p 密码
mysql -h 127.0.0.1 -P 3306 -u root -p 123456
如果连接的是本机:可以省略 -h -P 主机IP和端口。这样就可以登录mysql数据库了
退出:exit
命令
显示数据库: show databases;
SQL 기능
SQL 함수
SQL 문은 주로 데이터베이스, 데이터 테이블,데이터 테이블의 데이터 레코드
SQL 일반 구문을 조작하는 데 사용됩니다.
- 한 줄 주석: -- 주석 내용
- 여러 줄 주석: /* 주석 내용*/
- # 주석 내용
: (mysql 관련 단일 행 주석) li>
SQL 분류
SQL은 관계형 데이터베이스에 액세스하는 데 사용되는 언어입니다. 여기에는 관계형 데이터베이스 정의, 조작, 제어 및 쿼리라는 네 가지 기능이 있습니다. 따라서 우리는 네 가지 기능을 기준으로 SQL을 분류합니다.
는 데이터베이스 개체(데이터베이스, 테이블, 열 등)를 정의하는 데 사용됩니다. 키워드: create drop alter truncate(데이터 레코드 지우기) 표시 등
DQL (Data Query Language) 데이터 쿼리 언어 ★★★★★ 데이터 테이블 쿼리 기록. 키워드선택.
Data Control Language
) 데이터 제어 언어(이해)는 grant(권한 설정), revoke(해지)와 같은 데이터베이스 사용자 또는 역할 권한을 설정하거나 변경하는 데 사용되는 명령문입니다. 권한)), 거래 시작 등 이는 상대적으로 거의 사용되지 않습니다.
net start MySQL
명령을 입력하세요🎜🎜🎜데이터베이스 서비스 닫기🎜: 열린 도스 창에서 net stop MySQL
명령을 입력하세요🎜🎜🎜MySQL에 연결🎜: 로그인 형식 1: mysql -u 사용자 이름 -p 비밀번호🎜create database 数据库名;🎜🎜 로그인 형식 2:
mysql[-h 연결 호스트 IP 주소-P 포트 번호 3306] -u 사용자 이름-p 비밀번호
🎜create database if not exists 数据库名;🎜🎜🎜이 머신에 연결하는 경우: -h -P를 생략할 수 있습니다. 호스트 IP와 포트. 이 방법으로 mysql 데이터베이스🎜🎜🎜🎜Exit🎜에 로그인할 수 있습니다:
exit
명령🎜🎜🎜Showdatabases🎜: showdatabases;
🎜🎜🎜🎜SQL_DDL_Operate Databases🎜🎜DDL_Create and view 데이터베이스🎜🎜 🎜데이터베이스 생성: 🎜🎜🎜1. 데이터베이스를 직접 생성합니다. 🎜create database 数据库名 character set 字符集;🎜2. 데이터베이스가 있는지 확인하고 생성합니다. (존재하지 않으면 생성합니다.) 🎜
show databases;🎜3. 데이터베이스를 생성하고 문자 집합을 지정합니다. 인코딩 테이블) 🎜
show create database 数据库名;🎜🎜 설명: 문자 집합은 mysql에서 utf8🎜🎜🎜🎜 데이터베이스 보기: 🎜🎜🎜1 데이터베이스의 정의 정보를 봅니다. 🎜
select database();🎜3. 현재 사용 중인 데이터베이스 보기 🎜
use 数据库名;🎜🎜데이터베이스 사용 및 전환:🎜🎜
-- alter 表示修改alter database 数据库名 default character set 新字符集;🎜DDL_데이터베이스 수정 및 삭제🎜🎜🎜데이터베이스 수정:🎜🎜🎜1. 데이터베이스 수정을 위해 지정된 인코딩 테이블은 utf8입니다. utf-8을 쓰지 마세요🎜🎜
Java中的常用编码对应mysql数据库中的编码
Java | MySQL |
---|---|
UTF-8 | utf8 |
GBK | gbk |
GB2312 | gb2312 |
ISO-8859-1 | latin1 |
删除数据库:
1.直接删除
-- drop 删除数据库drop database 数据库名;
2.删除数据库时判断是否存在(如果存在,则删除)
drop database if exists 数据库名;
约束的概念:
约束是作用于表中列上的规则,用于限制加入表的数据
约束的存在保证了数据库中数据的正确性、有效性和完整性
约束的分类:
约束名称 | 关键字 | 描述 |
---|---|---|
非空约束 | NOT NULL |
保证列中所有数据不能有null空值 |
唯一约束 | UNIQUE |
保证列中所有数据各不相同 |
主键约束 | PRIMARY KEY |
主键是一行数据的唯一标识,要求非空且唯一 |
检查约束 | CHECK |
保证列中的值满足某一条件 |
默认约束 | DEFAULT |
保存数据时,未指定值则采用默认值 |
外键约束 | FOREIGN KEY |
外键用来让两个表的数据之间建立链接,保证数据的一致性和完整性 |
MySQL5.7不支持检查约束,但写入语句不会报错,MySQL8.0版本支持检查约束
非空约束
非空约束用于保证列中所有数据不能有NULL值
1.建表时添加约束
-- 创建表时添加非空约束create table 表名( 列名 数据类型 not null, ...);
2.建完表之后添加约束
-- 建完表之后添加约束alter table 表名 modify 字段名 数据类型 not null;
3.删除约束
alter table 表名 modify 字段名 数据类型;
唯一约束
唯一约束用于保证列中所有数据各不相同
1.创建表时添加唯一约束
-- 方式1create table 表名( 字段名 数据类型 UNIQUE, ...);-- 方式2create table 表名( 字段名 数据类型, ... [CONSTRAINT] [约束名称] UNIQUE(列名));
2.建完表之后添加唯一约束
-- 建完表后添加唯一约束alter table 表名 modify 字段名 数据类型 UNIQUE;
3.删除唯一约束
alter table 表名 drop index 字段名;
主键约束
1.创建表时添加主键约束
create table 表名( 字段名 数据类型 PRIMARY KEY [AUTO_INCREMENT], -- [AUTO_INCREMENT] 当不指定值时自动增长 ...);create table 表名( 列名 数据类型, [CONSTRAINT] [约束名称] PRIMARY KEY(列名))
2.建完表之后添加主键约束
alter table 表名 add PRIMARY KEY(字段名);
3.删除主键约束
alter table 表名 drop PRIMARY KEY;
默认约束
保存数据时,未指定值则采用默认值
1.创建表时添加默认约束
create table 表名( 字段名 数据类型 default 默认值, ...);
2.建完表后添加默认约束
alter table 表名 alter 列名 set DEFAULT 默认值;
3.删除约束
alter table 表名 alter 列名 drop DEFAULT;
前提 :创建数据库db1
并使用这个数据库
-- 创建数据库create database db1;-- 使用数据库use db1;
创建表:
create table 表名( 字段名1 字段类型 约束条件, 字段名2 字段类型 约束条件, ... 字段名n 字段类型 约束条件);-- 注意:最后一个字段不加逗号
创建一个表结构和其他表结构相同的表
create table 表名 like 其他表名;
MySQL中常用的数据类型
案列需求:
设计一张学生表,要求如下:
create table students( id int primary key auto_increment, name varchar(10) not null unique, sex enum('男','女') default null, class varchar(10), starttime date, math int default 60, english int);
查看表:
1.查看某个数据库中所有的表
show tables;
2.查看表结构
desc 表名;
3.查看创建表的SQL语句
show create table 表名;-- 根据该语句查看上面案列的建表sql语句show create table students;
删除表:
1.直接删除
drop table 表名;
2.删除表时判断表是否存在(如果存在,则删除)
drop table if exists 表名;
修改表:
1.修改表名
alter table 旧表名 rename to 新表名;
2.向表中添加一个字段(一列)
alter table 表名 add 字段名 数据类型;
3.修改表中字段数据类型
alter table 表名 modify 字段名 新的数据类型;
4.修改表中字段名(列名)和数据类型
alter table 表名 change 字段名 新的字段名 新的数据类型;
5.删除表中字段(列)
alter table 表名 drop 字段名;
1.插入全部字段
-- 全部字段写出来insert into 表名(字段1,字段2,...) values(值1,值2,...); -- 插入全部不写字段名insert into 表名 values(值1,值2,...); -- 给案例中的表插入数据insert into students(id,name,sex,class,starttime,math,english) values(1,'张三','男','高三1班','2022-03-02',80,69); insert into students values(2,'李四','女','高三2班','2022-03-01',70,80);
2.插入部分数据
-- 插入姓名,班级,入学时间,英语成绩-- id默认增长,性别默认null,数学默认60 insert into students(name,class,starttime,english) values('王五','高三3班','2022-03-02',78);
说明:插入部分数据的时候,要求列名一定书写出来。
3.批量插入数据
insert into 表名 values(字段值1, 字段值2...),(字段值1, 字段值2...),(字段值1, 字段值2...);
没有添加数据的字段会使用NULL
注意:
值与列一一对应。有多少个列,就需要写多少个值。如果某一个列没有值,可以使用null,表示插入空。
值的数据类型,与列被定义的数据类型要相匹配,并且值的长度,不能够超过定义的列的长度。
字符串:插入字符类型的数据,建议写英文单引号括起来。在mysql中,使用单引号表示字符串
date 时间类型的数据也得使用英文单引号括起来: 如
yyyy-MM-dd
1.不带条件修改数据
update 表名 set 字段名=新的值,字段名=新的值,...; -- 注意:不带条件的修改是将数据表中的整列都做修改 -- 修改students表中math的值为90update students set math=90;
2.带条件修改数据
update 表名 set 字段名=新的值,字段名=新的值,... where 条件; -- 修改students表中王五的性别为男,数学成绩设置为70update students set sex='男',math=70 where name='王五';
3.关键字说明
UPDATE: 表示修改记录 SET: 要改哪个字段WHERE: 设置条件
4.注意
- 不带条件的更新数据库记录:UPDATE 表名 SET 字段名=新的值;是将整个表中修改的列修改
- 带条件:UPDATE 表名 SET 字段名=新的值 WHERE 条件
1.不带条件删除
DELETE -- 删除记录DELETE FROM 表名;表还在,可以操作,只是删除数据。
2.带条件删除
DELETE FROM 表名 WHERE 条件;-- 删除学生表中的王五的信息DELETE FROM students WHERE name='王五';
3.truncate删除表记录(属于DDL)
truncate table 表名;
4.truncate和delete区别
- delete是将表中的数据一条一条删除
- truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
准备一张学生表,在这张表上进行查询操作
1.查询所有数据
select * from 表名; -- 查询学生表中所有的数据select * from students;
2.查询指定列的数据
select 字段名1,字段名2,... from 表名; -- 查询姓名和班级这两个字段select name,class from students;
3.查询到的字段设置别名
select 字段名1 as 别名1,字段名2 as 别名2 from 表名; -- 查询students表中的字段并设置别名select id as 学号,name as 姓名,sex as 性别,class as 班级 , starttime as 入学时间 from students;
4.查询到的数据去重
-- DISTINCT 去重复-- 查询班级字段结果不出现重复的select DISTINCT class from students;
1.条件查询语法
select 字段名1,字段名2,... where 条件列表;
2.条件运算符
符号 | 功能 |
---|---|
> | 大于 |
小于 | |
>= | 大于等于 |
小于等于 | |
= | 等于 |
或!= | 不等于 |
BETWEEN…AND… | 在某个范围内(都包括) |
IN(…) | 多选一 |
LIKE | 模糊查询,_单个任意字符,%多个任意字符 |
IS NULL | 为空 |
IS NOT NULL | 不为空 |
AND 或 && | 与,并且 |
OR 或 || | 或,或者 |
NOT 或 ! | 非,不是 |
3.查询数学成绩大于80并且性别为男的学生
-- 两个条件同时满足select * from students where math > 80 and sex='男';
4.查询英语成绩在60-80之间的学生
-- BETWEEN 值1 AND 值2 -- 表示从值1到值2范围,包头又包尾 select * from students where english between 60 and 80; select * from students where english>=60 && english<p><img src="https://img.php.cn/upload/article/000/000/067/01283e47128a89592860b85cda10b160-24.png" alt="MySQL 학습을 위한 DDL, DML, DQL의 기본 요약"><br><strong>5.查询学号为1或者2或者3的学生</strong></p><pre class="brush:php;toolbar:false">-- in里面的每个数据都会作为一次条件,只要满足条件的就会显示select * from students where id in (1,2,3);
LIKE
:表示模糊查询
select * from 表名 where 字段名 like '通配字符';
MySQL通配符有两个:
%
:表示0个或多个字符(任意字符)_
:表示一个字符1.查找名字中以孙开头的学生
-- '孙%'表示孙后面有任意个字符select * from students where name like '孙%';
2.查找名字中以孙开头的两个字的学习
-- '孙_'表示孙后面只能有一个字符select * from students where name like '孙_';
通过ORDER BY
子句,可以将查询出的结果进行排序(排序只是显示方式,不会影响数据库中数据的顺序)
-- ASC:升序排序(默认)-- DESC:降序排序select 字段 from 表名 order by 排序字段 [ASC|DESC];
1.单列排序
-- 查询学生的数学成绩按照升序排序select * from students order by math ASC;
2.组合排序
-- 查询数学成绩升序的基础上,英语成绩降序-- 组合排序就是先按第一个字段进行排序,如果第一个字段相同,才按第二个字段进行排序,依次类推。 select * from students order by math ASC,english DESC;
之前我们做的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,它是对一列的值进行计算,然后返回一个结果值;另外聚合函数会忽略空值,对于null
不作为统计。
1.五个聚合函数
函数名 | 功能 |
---|---|
count(列名) | 统计数量(一般选用不为null的列) |
max(列名) | 最大值 |
min(列名) | 最小值 |
sum(列名) | 求和 |
avg(列名) | 平均值 |
2.聚合函数语法
select 聚合函数名(列名) from 表名;
注意:null 值不参与所有聚合函数运算
3.查询学生总数
select count(id) from students;-- 通常使用select count(*) from students;
4.查询最高分和最低分
-- 查询数学最高分和英语最低分select max(math),min(english) from students;
5.求和求平均值
-- 求该表数学总分和平均值select sum(math),avg(math) from students;
6.ifnull()函数
-- ifnull(列名,默认值)函数表示判断该列是否为空值,如果为null,返回默认值,如果不为空,返回实际值ifnull(math,60); -- 如果数学成绩为null时,返回60,如果不为null,就返回实际值
分组: 按照某一列或者某几列。把相同的数据,进行合并输出。
1.注意
select
后面的内容是被分组的列,以及聚合函数sql
语句中的where
后面不允许添加聚合函数having
条件,表示分组之后的条件,在having
后面可以书写聚合函数2.查询各个班级的数学成绩总和
-- 查询每个班的数学成绩总和select class,sum(math) from students group by class;
3.having用法
having必须和group by 一起使用,having和where的用法一模一样,where怎么使用having就怎么使用,where不能使用的,having也可以使用,比如说where后面不可以使用聚合函数,但是在having后面是可以使用聚合函数的。
-- 查询每个班数学总成绩大于300分的班级并显示总成绩 select class,sum(math) from students group by class having sum(math)>300;
4.where和having的区别
having 通常与group by 分组结合使用。 where 和分组无关。
having 可以书写聚合函数 (聚合函数出现的位置: having 之后),例如having中的 聚合函数(count,sum,avg,max,min),是不可以出现where条件中。
where 是在分组之前进行过滤的,having 是在分组之后进行过滤的。
1.应用和概念
比如我们登录京东,淘宝,返回的商品信息可能有几万条,不是一次全部显示出来。是一页显示固定的条数。假设我们一每页显示5条记录的方式来分页。
-- 起始索引:从0开始,索引是0表示数据表第一行数据select 字段列表 from 表名 limit 起始索引,查询条目数;
计算公式:起始索引=(当前页码-1)* 每页显示的条数
注意:
- 分页查询
limit
是MySQL数据库的方言- Oracle分页查询使用
rownumber
- SQLServer分页查询使用
top
2.分页查询
<span style="font-family: " microsoft yahei sans gb helvetica neue tahoma arial sans-serif>-- 查询学生表中数据,每四条数据为一页<br>select * from students limit 0,4;<br>select * from students limit 4,4;<br>select * from students limit 8,4;<br>select * from students limit 12,4;<br>...<br>-- 注意:最后一行不够查询条目数,有多少就显示多少</span><br>
3.返回前几条或者中间某几行数据
-- 2表示分页查询的索引,对应数据表是第3行数据,4表示每页显示4条数据 -- 查询从第三行数据开始查询之后的四条数据 select * from students limit 2,4;
4.SQL执行顺序
SELECT 字段名(5) FROM 表名(1) WHERE 条件(2) GROUP BY 分组列名(3) HAVING 条件(4) ORDER BY 排序列名(6) LIMIT 跳过行数, 返回行数(7); 执行顺序:1234567
顺序:1234567
推荐学习:mysql视频教程
위 내용은 MySQL 학습을 위한 DDL, DML, DQL의 기본 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!