数据库概念
数据库是用于存储和管理数据的仓库。 数据库是对大量的信息进行管理的高效的解决方案。
数据库英文单词为Database。简称 DB!它的存储空间很大,可以存放百万条、千万条、上亿条数据。由瑞典 MySQL AB 公司开发,后被 Oracle 公司收购。免费(6 版本之前)。
数据库作用
-
持久化存储数据的。其实数据库就是一个文件系统
-
方便存储和管理数据
-
使用了统一的方式操作数据库 -- SQL
数据库存储数据的特点
1、将数据放到表中,表再放到库中。
2、一个数据库中可以有多个表,每个表都有一个的名字,用来标识自己。表名具有唯一性。 ?
3、表具有一些特性,这些特性定义了数据在表中如何存储,类似java中 “类”的设计。 ?
4、表由列组成,我们也称为字段。所有表都是由一个或多个列组成的,每一列类似java 中的”属性” ?。
5、表中的数据是按行存储的,每一行类似于java中的“对象”。
MySQL
MySQL是一个轻量级关系型数据库管理系统。关联数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,就增加了速度并提高了灵活性。
由于分布式和集群的出现,MySQL也用于大型的网站上。
MySQL安装与配置
一、安装
1、打开下载的mysql安装文件mysql-5.5.40-win64.zip,双击解压缩,运行“setup.exe”。
2、选择安装类型,有“Typical(默认)”、“Complete(完全)”、“Custom(用户自定义)”三个选项,选择“Custom”,按“next”键继续。
3、点选“Browse”,手动指定安装目录。
确认一下先前的设置,如果有误,按“Back”返回重做。按“Install”开始安装。
4、正在安装中,请稍候,直到出现下面的界面, 则完成MYSQL的安装
二、配置
1、安装完成了,出现如下界面将进入mysql配置向导。
2、选择配置方式,“Detailed Configuration(手动精确配置)”、“Standard Configuration(标准配置)”,我们选择“Detailed Configuration”,方便熟悉配置过程。
3、选择服务器类型,“Developer Machine(开发测试类,mysql占用很少资源)”、“Server Machine(服务器类型,mysql占用较多资源)”、“Dedicated MySQL Server Machine(专门的数据库服务器,mysql占用所有可用资源)”
4、选择mysql数据库的大致用途,“Multifunctional Database(通用多功能型,好)”、“Transactional Database Only(服务器类型,专注于事务处理,一般)”、“Non-Transactional Database Only(非事务处理型,较简单,主要做一些监控、记数用,对MyISAM数据类型的支持仅限于non-transactional),按“Next”继续。
5、选择网站并发连接数,同时连接的数目,“Decision Support(DSS)/OLAP(20个左右)”、“Online Transaction Processing(OLTP)(500个左右)”、“Manual Setting(手动设置,自己输一个数)”。
6、是否启用TCP/IP连接,设定端口,如果不启用,就只能在自己的机器*问mysql数据库了,在这个页面上,您还可以选择“启用标准模式”(Enable Strict Mode),这样MySQL就不会允许细小的语法错误。如果是新手,建议您取消标准模式以减少麻烦。但熟悉MySQL以后,尽量使用标准模式,因为它可以降低有害数据进入数据库的可能性。按“Next”继续
7、就是对mysql默认数据库语言编码进行设置(重要),一般选UTF-8,按 “Next”继续。
8、选择是否将mysql安装为windows服务,还可以指定Service Name(服务标识名称),是否将mysql的bin目录加入到Windows PATH(加入后,就可以直接使用bin下的文件,而不用指出目录名,比如连接,“mysql.exe -uusername -ppassword;”就可以了,不用指出mysql.exe的完整地址,很方便),我这里全部打上了勾,Service Name不变。按“Next”继续。
9、询问是否要修改默认root用户(超级管理)的密码。“Enable root access from remote machines(是否允许root用户在其它的机器上登陆,如果要安全,就不要勾上,如果要方便,就勾上它)”。最后“Create An Anonymous Account(新建一个匿名用户,匿名用户可以连接数据库,不能操作数据,包括查询)”,一般就不用勾了,设置完毕,按“Next”继续。
10、确认设置无误,按“Execute”使设置生效,即完成MYSQL的安装和配置。
MySQL彻底卸载
以下操作以Window7操作系统为例:
*1)停止window的MySQL服务。*
找到“控制面板”-> “管理工具”-> “服务”,停止MySQL后台服务。
*2)卸载MySQL安装程序。*找到“控制面板”-> "程序和功能",卸载MySQL程序。
*3)删除MySQL安装目录下的所有文件。*
*4)删除c盘ProgramDate隐藏目录中关于MySQL的目录。*
4.1 打开window系统的“显示隐藏文件”功能,以便查看到系统的所有隐藏文件
4.1 找到ProgramData目录
4.2 删除MySQL目录
MySQL常见问题
1.MySQL忘记root密码的解决办法
1、 首先检查mysql服务是否启动,若已启动则先将其停止服务,可在开始菜单的运行,使用cmd,在dos命令窗口中输入如下命令: net stop mysql
2、再打开一个cmd窗口,使用cd命令,进入到mysql安装路径的bin目录,输入下列命令(敲回车后,保持窗口的状态,不要关闭该窗口,直接进行下面的步骤即可;):
/下面语句中的文件路径需要改成你自己的文件路径/ mysqld --defaults-file="D:\MyStudySoft\MySQL5\bin\my.ini" --console --skip-grant-tables
注释: 该命令通过跳过权限安全检查,开启mysql服务,这样连接mysql时,可以不用输入用户密码。
3、打开第二个cmd窗口,使用cd命令,进入到mysql安装路径的bin目录,输入下列命令: mysql -uroot -p
出现下面的提示时直接敲回车,不用输入密码: Enter password:
然后就就会出现登录成功的信息,
4、继续输入如下命令: use mysql;
5、输入如下命令更改root密码:
/下面语句中的newpassword需要改成你自己想要设置的密码/ UPDATE user SET Password=PASSWORD(‘newpassword‘) where USER=‘root‘;
6、输入如下命令刷新权限: FLUSH PRIVILEGES;
7、输入如下命令即可退出: quit
8、重新登录,测试是否修改成功: mysql -uroot -p
出现输入密码提示,输入新的密码即可登录:
Enter password: ***
显示登录信息: 成功 就一切ok了,如果不成功,从新执行第4-8步直到成功为止; 9、此时可以关闭所有的dos窗口了; 10、手动启动mysql的服务即可,正常使用了;(或在dos命令行输入:net start mysql 命令也可以实现启动mysql的服务!)
2.MySQL错误提示(10061)解决方法
MySQL ‘localhost‘ (10061)解决方法 1、首先检查MySQL 服务有没有启动》如果没有启动,则要启动这个服务,即可解决; 2、如果问题还是没有解决请尝试下面的步骤:
第一步: 删除MySQL安装路径下面的my.ini
第二步: 打开MySQL安装路径的\bin\winmysqladmin.exe 输入用户名 和密码
第三步: 在dos下 输入:mysqld-nt -remove
第四步: 在dos下接着输入:mysqld-nt -install
第五步: 在dos下接着输入:mysql
MySQL目录结构
│-- bin:mysql相关的可执行文件*.exe
│-- MySQLInstanceConfig.exe mysql的配置程序
│-- data: mysql自带的数据库文件(不用关注)
│-- include: c语言的头文件(不用关注)
│-- lib: 存放mysql使用到的dll动态库(相当于jar包,不用关注)
│-- my.ini mysql的配置文件,配置了mysql的相关信息
打开和关闭MySQL服务
登录MySQL的方式
dos命令行登录和退出MySQL
登录格式1:登录本机的MySQL
-- mysql -u用户名 -p密码
-- 示例:mysql -uroot -proot
后输入密码方式:(密码不可见安全一点)
mysql -uroot -p回车
下一行输入密码
登录格式2:登录远程的MySQL
-- mysql –h远程主机的ip地址 -u用户名 -p密码
-- 示例:mysql -h127.0.0.1 -uroot -proot
退出MySQL
-- exit 或 quit或ctrl+C
SQLyog登录MySQL
SQLyog使用
MySQL常见数据类型
SQL
SQL概念
SQL(Structured Query Language):结构化查询语言。其实就是定义了操作所有关系型数据库的一种规则。
SQL作用
通过SQL语句我们可以方便的操作数据库、表、数据。 SQL是数据库管理系统都需要遵循的规范。不同的数据库生产厂商都支持SQL语句,但都有特有内容。
通用语法规则
SQL 语句可以单行或多行书写,以分号结尾 可使用空格和缩进来增强语句的可读性 MySQL 数据库的 SQL 语句不区分大小写,关键字建议使用大写 单行注释:-- 注释内容 #注释内容(MySQL特有) 多行注释:/* 注释内容 */
SQL 分类
DDL (Data Definition Language) :数据定义语言。用来操作数据库,表,列等。 DML (Data Manipulation Language) :数据操作语言。用来对数据库中表的数据进行增删改。 DQL (Data Query Language) :数据查询语言。用来查询数据库中表的记录(数据)。 DCL (Data Control Language) :数据控制语言。用来定义数据库的访问权限和安全级别,及创建用户。
名称 | 解释 | 命令 |
---|---|---|
DDL | 定义和管理数据对象,如:数据库,数据表等 | create,drop,alter |
DML | 用于操作数据库对象所包含的数据 | insert,delete,update |
DQL | 用于查询数据库对象所包含的数据 | select |
DCL | 用于管理数据库,包括管理权限和数据更改 | grant,commit,rollback |
DDL操作数据库和数据表
数据库、数据表、数据的关系
MySQL服务器中可以创建多个数据库 每个数据库中可以包含多张数据表 每个数据表中可以存储多条数据记录 客户端通过数据库管理系统来操作MySQL数据库
DDL查询和创建数据库
--查询所有数据库
SHOW DATABASES;
--创建数据库
CREATE DATABASE 数据库名称;
--创建数据库(判断,如果不存在则创建)
CREATE DATABASE IF NOT EXISTS 数据库名称;
--创建数据库(指定字符集)
CREATE DATABASE 数据库名称 CHARACTER SET 字符集名称;
--查询数据库的创建语句
SHOW CREATE DATABASE 数据库名称;
具体操作:
-
直接创建数据库db1
CREATE DATABASE db1;
-
判断是否存在并创建数据库db2
CREATE DATABASE IF NOT EXISTS db2; -- 如果不加判断那么本来存在(再创建)或者不存在(删除库时)对该数据库进行操作,会报错。
-
创建数据库db3并指定字符集为gbk
CREATE DATABASE db2 CHARACTER SET gbk;
-
查看所有的数据库
-
查看某个数据库的定义信息
SHOW CREATE DATABASE 数据名;
DDL修改、删除、使用数据库
--修改数据库(修改字符集)
ALTER DATABASE 数据库名称 CHARACTER SET 字符集名称;
--删除数据库
DROP DATABASE 数据库名称;
--删除数据库(判断,如果存在则删除)
DROP DATABASE IF EXISTS 数据库名称;
--使用数据库
USE 数据库名称;
--查看当前使用的数据库
SELECT DATABASE(); -- 这个select类似Java中的打印语句
具体操作:
-
将db3数据库的字符集改成utf8
ALTER DATABASE db3 DEFAULT CHARACTER SET utf8;
删除数据库
DROP DATABASE 数据库名;
?
DROP: 删除
具体操作:
-
删除db2数据库
DROP DATABASE db2;
具体操作:
-
查看正在使用的数据库
SELECT DATABASE();
-
使用db1数据库
USE db1;
DDL创建数据表
--创建数据表
CREATE TABLE 表名 (
列名 数据类型,
列名 数据类型,
...
列名 数据类型
);
?
--常用数据类型
int:整数类型
double:小数类型
varchar(长度):字符串类型
date 表示日期类型 yyyy-MM-dd
-- 目标 : 创建一个school数据库
-- 创建学生表(列,字段)
-- 学号int 登录密码varchar(20) 姓名,性别varchar(2),出生日期(datatime),家庭住址,email
-- 创建表之前 , 一定要先选择数据库
?
CREATE TABLE IF NOT EXISTS `student` (
`id` int(4) NOT NULL AUTO_INCREMENT COMMENT ‘学号‘,
`name` varchar(30) NOT NULL DEFAULT ‘匿名‘ COMMENT ‘姓名‘,
`pwd` varchar(20) NOT NULL DEFAULT ‘123456‘ COMMENT ‘密码‘,
`sex` varchar(2) NOT NULL DEFAULT ‘男‘ COMMENT ‘性别‘,
`birthday` datetime DEFAULT NULL COMMENT ‘生日‘,
`address` varchar(100) DEFAULT NULL COMMENT ‘地址‘,
`email` varchar(50) DEFAULT NULL COMMENT ‘邮箱‘,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8
?
CREATE TABLE ‘表名‘ (
‘字段名‘ 列类型 [属性] [索引] [注释],
‘字段名‘ 列类型 [属性] [索引] [注释],
‘字段名‘ 列类型 [属性] [索引] [注释]
)[表类型][字符集设置]
?
SHOW CREATE DATABASE student; -- 显示建数据库语句
SHOW CREATE TABLE student; -- 显示建表语句
DDL查询数据表
--查询所有的数据表
SHOW TABLES;
--查询表结构
DESC 表名;
--查看创建表的SQL语句
SHOW CREATE TABLE 表名;
--快速创建一个表结构相同的表(复制表结构)
CREATE TABLE 表名 LIKE 其他表;
?
--删除数据表
DROP TABLE 表名;
?
--删除数据表(判断,如果存在则删除)
DROP TABLE IF EXISTS 表名;
具体操作:
-
查看MySQL数据库中的所有表
SHOW TABLES;
-
查看student表的结构
DESC student;
-
查看student的创建表SQL语句
SHOW CREATE TABLE student;
具体操作:
-
直接删除表s1表
DROP TABLE s1;
-
判断表是否存在并删除s1表
DROP TABLE IF EXISTS s1;
DDL 修改数据表
--修改表名
ALTER TABLE 表名 RENAME TO 新表名;
--修改表的字符集
ALTER TABLE 表名 CHARACTER SET 字符集名称;
--单独添加一列
ALTER TABLE 表名 ADD 列名 数据类型;
--修改某列的数据类型
ALTER TABLE 表名 MODIFY 列名 新数据类型;
--修改列名和数据类型
ALTER TABLE 表名 CHANGE 列名 新列名 新数据类型;
--删除某一列
ALTER TABLE 表名 DROP 列名;
?
--规律: 所有的修改表结构的语句都是
ALTER TABLE 表名 XXX;
?
具体操作:
-
为学生表添加一个新的字段remark,类型为varchar(20)
ALTER TABLE student ADD remark VARCHAR(20);
修改字段类型
ALTER TABLE 表名 MODIFY 字段名 新类型;
具体操作:
-
将student表中的remark字段的改成varchar(100)
ALTER TABLE student MODIFY remark VARCHAR(100);
修改字段名
ALTER TABLE 表名 CHANGE 老字段名 新字段名 类型;
具体操作:
-
将student表中的remark字段名改成intro,类型varchar(30)
ALTER TABLE student CHANGE remark intro varchar(30);
删除字段
ALTER TABLE 表名 DROP 字段名;
具体操作:
-
删除student表中的字段intro
ALTER TABLE student DROP intro;
修改表名
RENAME TABLE 表名 TO 新表名;
具体操作:
-
将学生表student改名成student2,再删除student2表
RENAME TABLE student TO student2;
DROP TABLE student2;
修改表的字符集
ALTER TABLE 表名 DEFAULT CHARACTER SET 新字符集;
具体操作:
-
将sutden2表的编码修改成gbk
ALTER TABLE student2 character set gbk;
DDL规律
DML表数据的增删改
DML新增表数据(增)
添加一条数据
INSERT INTO `表名`(`字段1`,`字段2`,...) VALUES (值1,值2,...),(值1,值2,...),...
给全部列添加一条数据
INSERT INTO 表名 VALUES (值1, 值2, …);
批量添加数据(一次加入多条数据)
INSERT INTO 表名 VALUES (值1, 值2, …), (值1, 值2, …), (值1, 值2, …);
插入部分数据
只需要指定要插入数据的字段
INSERT INTO 表名 (字段名1, 字段名2...) VALUES (字段值1, 字段值2);
没有添加数据的字段会使用NULL
具体操作:
-
插入部分数据,往学生表中添加 id, name, age, sex数据
INSERT INTO student (id, NAME, age, sex) VALUES (1, ‘张三‘, 20, ‘男‘);
-
向表中插入所有字段
-
所有的字段名都写出来
INSERT INTO student (NAME, id, age, sex, address) VALUES (‘李四‘, 2, 23, ‘女‘, ‘广州‘);
-
不写字段名
INSERT INTO student VALUES (3, ‘王五‘, 18, ‘男‘, ‘北京‘);
-
插入数据注意事项 值与字段必须对应,个数相同,类型相同值的数据大小必须在字段的长度范围内除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)如果要插入空值,可以不写字段,或者插入NULL
DML修改和删除表数据(改、删)
修改表中的数据
UPDATE 表名 SET 列名1=值1, 列名2=值2, … [WHERE 条件];
-- 修改语句中必须加条件,如果不加条件,则会将所有数据都修改。
具体操作:
-
不带条件修改数据,将所有的性别改成女
UPDATE student SET sex=‘女‘;
-
带条件修改数据,将id号为2的学生性别改成男
UPDATE student SET sex=‘男‘ WHERE id=2;
-
一次修改多个列,把id为3的学生,年龄改成26岁,address改成北京
UPDATE student SET age=26, address=‘北京‘ WHERE id=3;
删除表中的数据
DELETE FROM 表名 [WHERE 条件];
-- 删除语句中必须加条件,如果不加条件,则会将所有数据都删除。
具体操作:
-
带条件删除数据,删除id为3的记录
DELETE FROM student WHERE id=3;
-
不带条件删除数据,删除表中的所有数据
DELETE FROM student;
DOS命令窗口操作数据乱码问题
当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败
错误原因:因为MySQL的客户端设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码
解决方案:
-
快捷设置
在DOS命令行输入:
set names gbk; -- 让服务器使用GBK解码
注意:以上方式为临时方案,退出DOS命令行就失效了,需要每次都配置
-
修改MySQL安装目录下的my.ini文件,重启服务所有地方生效。此方案将所有编码都修改了[不建议]
DQL表数据的查询
DQL表数据查询-无条件查询
--查询指定字段的数据
SELECT 字段名1, 字段名2, 字段名3 FROM 表名;
--查询所有字段的数据
SELECT * FROM 表名;
--去除重复查询
SELECT DISTINCT 列名1 FROM 表名;
--计算列的值(四则运算)
SELECT 列名1 (+ - * /) 列名2 FROM 表名;
--起别名查询
SELECT 列名1 AS 别名1, 列名2 AS 别名2 FROM 表名;
--取别名时AS关键字可以省略
SELECT 列名1 别名1, 列名2 别名2 FROM 表名;--(用空格隔开)
具体操作:
SELECT id, NAME ,age, sex, address FROM student;
使用*表示所有列
SELECT * FROM 表名;
具体操作:
SELECT * FROM student;
查询student表中的name 和 age 列
SELECT NAME, age FROM student;
别名查询
-
查询时给列、表指定别名需要使用AS关键字
-
使用别名的好处是方便观看和处理查询到的数据
SELECT 字段名1 AS 别名, 字段名2 AS 别名... FROM 表名;
注意: AS关键字可以省略
具体操作:
-
查询sudent表中name 和 age 列,name列的别名为”姓名”,age列的别名为”年龄”
SELECT NAME AS 姓名, age AS 年龄 FROM student;
清除重复值
查询指定列并且结果不出现重复数据
SELECT DISTINCT 字段名 FROM 表名;
具体操作:
-
查询address列并且结果不出现重复的address
SELECT DISTINCT address 城市 FROM student;
查询结果参与运算
-
某列数据和固定值运算
SELECT 字段名 + 值 FROM 表名;
-
某列数据和其他列数据参与运算
SELECT 字段1 + 字段2 FROM 表名;
注意: 参与运算的必须是数值类型
-
需求:
-
添加数学,英语成绩列,给每条记录添加对应的数学和英语成绩
-
查询的时候将数学和英语的成绩相加
-
-
实现:
-
修改student表结构,添加数学和英语成绩列
ALTER TABLE student ADD math INT;
ALTER TABLE student ADD english INT; -
给每条记录添加对应的数学和英语成绩
-
-
查询math + english的和
SELECT math + english FROM student;
结果确实将每条记录的math和english相加,但是效果不好看
-
查询math + english的和使用别名”总成绩”
SELECT math + english 总成绩 FROM student;
-
查询所有列与math + english的和并使用别名”总成绩”
SELECT *, math + english 总成绩 FROM student;
-
查询姓名、年龄,将每个人的数学增加10分
SELECT name, math + 10 FROM student;
DQL表数据查询-条件查询
select
要查询的字段|表达式|常量值|函数
from
表名
where
条件 ;
准备数据
CREATE TABLE student3 (
id int,
name varchar(20),
age int,
sex varchar(5),
address varchar(100),
math int,
english int
);
?
INSERT INTO student3(id,NAME,age,sex,address,math,english) VALUES (1,‘马云‘,55,‘男‘,‘杭州‘,66,78),(2,‘马化腾‘,45,‘女‘,‘深圳‘,98,87),(3,‘马景涛‘,55,‘男‘,‘香港‘,56,77),(4,‘柳岩‘,20,‘女‘,‘湖南‘,76,65),(5,‘柳青‘,20,‘男‘,‘湖南‘,86,NULL),(6,‘刘德华‘,57,‘男‘,‘香港‘,99,99),(7,‘马德‘,22,‘女‘,‘香港‘,99,99),(8,‘德玛西亚‘,18,‘男‘,‘南京‘,56,65);
比较运算符
符号 | 功能 |
---|---|
> | 大于 |
< | 小于 |
<= | 小于等于 |
>= | 大于等于 |
= | 等于 |
<>或!= | 不等于 |
具体操作:
-
查询math分数大于80分的学生
SELECT * FROM student3 WHERE math>80;
-
查询english分数小于或等于80分的学生
SELECT * FROM student3 WHERE english<=80;
-
查询age等于20岁的学生
SELECT * FROM student3 WHERE age=20;
-
查询age不等于20岁的学生
SELECT * FROM student3 WHERE age!=20;
SELECT * FROM student3 WHERE age<>20;
逻辑运算符
具体操作:
-
查询age大于35且性别为男的学生(两个条件同时满足)
SELECT * FROM student3 WHERE age>35 AND sex=‘男‘;
-
查询age大于35或性别为男的学生(两个条件其中一个满足)
SELECT * FROM student333 WHERE age>35 OR sex=‘男‘;
-
查询id是1或3或5的学生
SELECT * FROM student3 WHERE id=1 OR id=3 OR id=5;
范围
in关键字 语法格式:
SELECT * FROM 表名 WHERE 字段名 IN (值1, 值2);
in
里面的每个数据都会作为一次条件,只要满足条件的就会显示
具体操作:
-
查询id是1或3或5的学生
SELECT * FROM student3 WHERE id IN (1,3,5);
-
查询id不是1或3或5的学生
SELECT * FROM student3 WHERE id NOT IN (1,3,5);
范围
SELECT * FROM 表名 WHERE 字段名 BETWEEN 值1 AND 值2;
比如:age BETWEEN 80 AND 100
相当于: age>=80 && age<=100
具体操作:
-
查询english成绩大于等于75,且小于等于90的学生
SELECT * FROM student3 WHERE english>=75 AND english<=90;
SELECT * FROM student3 WHERE english BETWEEN 75 AND 90;
NULL的处理
模糊查询语法
SELECT * FROM 表名 WHERE 字段名 LIKE ‘通配符字符串‘;
/* MySQL通配符有两个:
%: 表示任意多个字符
_: 表示一个字符
具体操作:
-
查询姓马的学生
SELECT * FROM student3 WHERE NAME LIKE ‘马%‘;
-
查询姓名中包含‘德‘字的学生
SELECT * FROM student3 WHERE NAME LIKE ‘%德%‘;
-
查询姓马,且姓名有三个字的学生
SELECT * FROM student3 WHERE NAME LIKE ‘马__‘;
DQL表数据查询-排序查询
排序查询语法
SELECT 列名列表 FROM 表名 [WHERE 条件] ORDER BY 列名 排序方式;
/*排序方式:
ASC: 升序
DESC: 降序
如果有多个排序条件,只有当前边的条件值一样时,才会判断第二条件。
单列排序就是使用一个字段排序
具体操作:
-
查询所有数据,使用年龄降序排序
select * FROM student3 order by age DESC;
上面的例子中,年龄是有相同的。当年龄相同再使用math进行排序
具体操作:
-
查询所有数据,在年龄降序排序的基础上,如果年龄相同再以数学成绩降序排序
SELECT * FROM student3 ORDER BY age DESC, math DESC;
执行顺序
特点
1、 asc代表的是升序,可以省略,desc代表的是降序
2、 order by 子句可以支持 单个字段、别名、表达式、函数、多个字段
3、 order by 子句在查询语句的最后面,除了limit子句