Mysql 数据库
1.什么是数据库
简单来说,就是按照数据结构组织,存储和管理数据的仓库。
2.数据库的特点以及作用
1.持久性的保存
2.方便数据的存储查询
3.处理并发访问
4.更加安全的权限管理访问机制
3.常见的数据库
- MySQL
- ORACLE
- PostgreSQL
- SQL Server
- redis —— (内存管理数据库)
- mongoDB —— (文档型数据库)
4 MySQL基本命令
4.1 登录MySQL
C:\WINDOWS\system32>mysql -u root -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 1
Server version: 5.6.20 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
4.2 查看当前MySQL中所有库
mysql> show databases
-> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test03 |
+--------------------+
4 rows in set (0.01 sec)
如上所示,前者回车会进入下一行;有“;”后回车才会显示结果。
4.3 库和表的概念&关系
- 库就像是文件夹,库中可以有很多个表
- 表就像是我们的excel表格文件一样
- 每一个表中都可以存储很多数据
- MySQL中可以有很多不同的库,库中可以有很多不同的表
- 表中可以定义不同的列(字段),
- 表中可以根据结构去存储很多的数据
4.4 创建自己的库
create database 库名 default charset=utf8;
【举例】
mysql> create database XiaoAiFu default charset=utf8;
Query OK, 1 row affected (0.01 sec)
--查看库
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test03 |
| xiaoaifu |
+--------------------+
5 rows in set (0.00 sec)
--进入库
mysql> use XiaoAiFu;
Database changed
4.5 创建表
--创建表的语法
create table 表名( 字段名 类型 字段约束, 字段名 类型 字段约束, 字段名 类型 字段约束, )engine=innodb default
charset=utf8;
--创建用户表
mysql> create table user(
-> name varchar(20),
-> age int,
-> sex char(1)
-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.03 sec)
创建好用户表后,现在做一个添加数据的实例
mysql> insert into user(name,age,sex) values('小艾扶',26,'男');
Query OK, 1 row affected (0.01 sec)
mysql> insert into user(name,age,sex) values('朱立青',23,'女');
Query OK, 1 row affected (0.01 sec)
mysql> select * from user;
+--------+------+------+
| name | age | sex |
+--------+------+------+
| 小艾扶 | 26 | 男 |
| 朱立青 | 23 | 女 |
+--------+------+------+
2 rows in set (0.01 sec)
mysql>
5 MySQL基础操作
5.1 MySQL的操作方式多种多样:
- 方式一: 通过在命令行敲命令来操作 ( 有助于命令的掌握)
- 方式二: 通过图型界面工具,如 Navicat 等(在熟练掌握后再使用)
- 方式三:通过编程语言(python,php,java,go…)执行mysql命令
其中,SQL ( Structure query language ) 结构化查询语言 SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)
5.2 SQL语句中的快捷键
- \G 格式化输出(文本式,竖立显示)
- \s 查看服务器端信息
- \c 结束命令输入操作
- \q 退出当前sql命令行模式
- \h 查看帮助
5.3 数据库操作
- 查看数据库
show databases; - 创建数据库
create database 库名 default charset=utf8; - 删除数据库
drop database 库名; - 打开数据库
use 库名;
5.4 数据表操作
- 查看表:
show tables; - 创建表:
create table 表名(字段名1 类型,字段名2 类型)engine=innodb default charset=utf8; - 创建表: 如果表不存在,则创建, 如果存在就不执行这条命令
create table if not exists 表名(字段1 类型,字段2 类型);
【举例】
create table if not exists users(
id int not null primary key auto_increment,
name varchar(4) not null,
age tinyint,
sex enum('男','女')
)engine=innodb default charset=utf8;
- 删除表:
drop table 表名; - 表结构:
desc 表名; - 查看建标语句:
show create table users;
5.5 数据操作 增删改查
5.1 插入
insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);
insert into 表名(字段1,字段2,字段3) values(a值1,a值2,a值3),(b值1,b值2,b值3);
5.2 查询
select * from 表名;
select 字段1,字段2,字段3 from 表名;
select * from 表名 where 字段=某个值;
5.3 修改
update 表名 set 字段=某个值 where 条件;
update 表名 set 字段1=值1,字段2=值2 where 条件;
update 表名 set 字段=字段+值 where 条件;
5.4 删除
delete from 表名 where 字段=某个值;
5.6 退出MySQL
exit; 或者 quit;
6 MySQL数据类型
- 数据类型是定义列中可以存储什么类型的数据以及该数据实际怎样存储的基本规则
- 数据类型限制存储在数据列列中的数据。
- 例如,数值数据类型列只能接受数值类型的的数据
- 在设计表时,应该特别重视所用的数据类型。
- 使用错误的数据类型可能会严重地影响应用程序的功能和性能。
- 更改包含数据的列不是一件小事(而且这样做可能会导致数据丢失)。
- 数据类型:整型、浮点型、字符串、日期等
6.1 字符串数据类型
- 最常用的数据类型是串数据类型。
- 它们存储串,如名字、地址、电 话号码、邮政编码等。
- 不管使用何种形式的串数据类型,串值都必须括在引号内
- 有两种基本的串类型,分别为定长串和变长串。
6.1.1 定长串:char
- 接受长度固定的字符串,其长度是在创建表时指定的。 定长列不允许存储多于指定长度字符的数据。
- 指定长度后,就会分配固定的存储空间用于存放数据
char(7)
--不管实际插入多少字符,它都会占用7个字符位置
6.1.2 变长串:varchar
存储可变长度的字符串 varchar(7) 如果实际插入4个字符, 那么它只占4个字符位置,当然插入的数据长度不能超过7个字符。
【注意】
既然变长数据类型这样灵活,为什么还要使用定长数据类型?
回答:因为性能,MySQL处理定长列远比处理变长列快得多。
6.1.3 Text变长文本类型存储

6.2 数值类型
数值数据类型存储数值。MySQL支持多种数值数据类型,每种存储的数值具有不同的取值范围。支持的取值范围越大,所需存储空间越多与字符串不一样,数值不应该括在引号内。

【举例】
decimal(5, 2) 表示数值总共5位, 小数占2位
tinyint 1字节(8位) 0-255。-128,127
int 4字节。 -21亿,21亿。0-42亿
float.
MySQL中没有专门存储货币的数据类型,一般情况下使用DECIMAL(8, 2)
有符号或无符号
所有数值数据类型(除BIT和BOOLEAN外)都可以有符号或无符号
- 有符号数值列可以存储正或负的数值
- 无符号数值列只能存储正数。
- 默认情况为有符号,但如果你知道自己不需要存储负值,可以使用UNSIGNED关键字
【注意】
如果将邮政编码类似于01234存储为数值类型,则保存的将是数值1234,此时需要使用字符串类型
手机号应该用什么进行存储呢?答:字符串~~
手机号首先不用于计算
6.3 日期和时间类型
MySQL使用专门的数据类型来存储日期和时间值

datetime 8字节1000-01-01 00:00:00 ~ 9999-12-31 23:59:59
6.4 二进制数据类型
二进制数据类型可存储任何数据(甚至包括二进制信息),如图像、多媒体、字处理文档等

6.5 表的字段约束
unsigned无符号(给数值类型使用,表示为正数,不写可以表示正负数都可以)- 字段类型后面加括号限制宽度
char(5). varchar(7)在字符类型后面加限制表示字符串的长度int(4)没有意义,默认无符号的int为int(11),有符号的int(10)int(4) unsigned zerofill只有当给int类型设置有前导零时,设置int的宽度才有意义。- 在数字类型后面加(5)对取值范围没有影响。比如
int(4) unsigned zerofill只有给Int类型设置前导零时,设置Int宽度才有意义。not null不能为空,在操作数据库时如果输入该字段的数据为NULL ,就会报错default设置默认值primary key主键不能为空,且唯一.一般和自动递增一起配合使用。auto_increment定义列为自增属性,一般用于主键,数值会自动加1unique唯一索引(数据不能重复:用户名)可以增加查询速度,但是会降低插入和更新速度
6.6 MySQL的运算符
- 算术运算符: +、 -、 *、 /、 %
- 比较运算符: =、 >、 <、 >=、 <=、!=
- 数据库特有的比较: in、not in、is null、is not null、like、between、and
- 逻辑运算符: and、or、not
- like: 支持特殊符号%和_ ;
其中%表示任意数量的任意字符,_表示任意一位字符
6.7 主键
- 表中每一行都应该有可以唯一标识自己的一列,用于记录两条记录不能重复,任意两行都不具有相同的主键值
- 应该总是定义主键 虽然并不总是都需要主键,但大多数数据库设计人员都应保证他们创建的每个表具有一个主 键,以便于以后的数据操纵和管理。
要求
-
记录一旦插入到表中,主键最好不要再修改
-
不允许NULL
-
不在主键列中使用可能会更改的值。(例如,如果使用一个名字作为主键以标识某个供应商,当该供应商合并和更改其名字时,必须更改这个主键。)
-
自增整数类型:数据库会在插入数据时自动为每一条记录分配一个自增整数,这样我们就完全不用担心主键重复,也不用自己预先生成主键
-
可以使用多个列作为联合主键,但联合主键并不常用。使用多列作为主键时,所有列值的组合必须是唯一的。
7 MySQL数据库与数据表操作
此处承接第4点相关内容
7.1 数据库操作
7.1.1 数据库创建
create database if not exists XiaoAiFu default charset=utf8;
7.1.2 查看所有库
show databases;
7.1.3 打开库/进入库/选择库
#user 库名
use XiaoAiFu
7.1.4 删除库
--删除库有风险,动手时要谨慎!!!
drop database 库名
7.2 数据表操作表
7.2.1 创建表
语法格式:
create table 表名(字段名,类型,【字段约束】,...);
【举例】
# 以下创建一个 users 的表
create table users(
-- 创建ID字段,为正整数,不允许为空 主键,自动递增
id int unsigned not null primary key auto_increment,
-- 创建 存储 名字的字段,为字符串类型,最大长度 5个字符,不允许为空
username varchar(5) not null,
-- 创建存储 密码 的字段,固定长度 32位字符, 不允许为空
password char(32) not null,
-- 创建 年龄 字段,不允许为空,默认值为 20
age tinyint not null default 20
)engine=innodb default charset=utf8;
# 查看表结构
desc users;
#查看建表语句
show create table users;
【实例】
这一次我们创建一个person表,如下展示。
--创建person表
mysql> create table person(
-> id int unsigned not null primary key auto_increment,
-> name varchar(5) not null,
-> password char(32) not null,
-> age tinyint not null default 20
-> )engine=innodb default charset=utf8;
Query OK, 0 rows affected (0.02 sec)
--查看建表结构
mysql> desc person;
+----------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+----------+------------------+------+-----+---------+----------------+
| id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(5) | NO | | NULL | |
| password | char(32) | NO | | NULL | |
| age | tinyint(4) | NO | | 20 | |
+----------+------------------+------+-----+---------+----------------+
4 rows in set (0.01 sec)
创建表的基本原则:
- 表明和字段名尽可能的符合命名规范,并且最好能够‘见名之意’
- 表中数据必须有唯一标示,即主键定义。无特殊情况,主键都为数字并自增即可
- 表中字段所对应的类型设置合理,并限制合理长度
- 表引擎推荐使用innodb,并无特殊情况都要求为utf8或者utf8mb4的字符编码
7.2.2 修改表结构
语法格式:alter table 表名 action (更改的选项)
添加字段
# 语法:alter table 表名 add 添加的字段信息
-- 在 users 表中 追加 一个 num 字段
alter table users add num int not null;
-- 在指定字段后面追加字段 在 users 表中 age字段后面 添加一个 email 字段
alter table users add email varchar(50) after age;
-- 在指定字段后面追加字段,在 users 表中 age字段后面 添加一个 phone
alter table users add phone char(11) not null after age;
-- 在表的最前面添加一个字段
alter table users add aa int first;
删除字段
# 删除字段 alter table 表名 drop 被删除的字段名
alter table users drop aa;
修改字段
语法格式: alter table 表名 change|modify 被修改的字段信息
change: 可以修改字段名,
modify: 不能修改字段名。
# 修改表中的 num 字段 类型,使用 modify 不修改表名
alter table users modify num tinyint not null default 12;
# 修改表中的 num 字段 为 int并且字段名为 nn
alter table users change num mm int;
# 注意:一般情况下,无特殊要求,不要轻易修改表结构
修改表名
# 语法:alter table 原表名 rename as 新表名
更改表中的自增的值
# 在常规情况下,auto_increment 默认从1开始继续递增
alter table users auto_increment = 1000;
修改表引擎
# 推荐在定义表时,表引擎为 innodb。
# 通过查看建表语句获取当前的表引擎
mysql> show create table users\G;
*************************** 1. row ***************************
Table: users
Create Table: CREATE TABLE `users` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
# 直接查看当前表状态信息
mysql> show table status from tlxy where name = 'users'\G;
*************************** 1. row ***************************
Name: users
Engine: InnoDB
# 修改表引擎语句
alter table users engine = 'myisam';
删除表
drop table 表名
8.MySQL 数据操作 DML
8.1 添加数据
格式: insert into 表名[(字段列表)] values(值列表...);
--标准添加(指定所有字段,给定所有的值)
mysql> insert into stu(id,name,age,sex,classid) values(1,'zhangsan',20,'m','lamp138');
Query OK, 1 row affected (0.13 sec)
mysql>
--指定部分字段添加值
mysql> insert into stu(name,classid) value('lisi','lamp138');
Query OK, 1 row affected (0.11 sec)
-- 不指定字段添加值
mysql> insert into stu value(null,'wangwu',21,'w','lamp138');
Query OK, 1 row affected (0.22 sec)
-- 批量添加值
mysql> insert into stu values
-> (null,'zhaoliu',25,'w','lamp94'),
-> (null,'uu01',26,'m','lamp94'),
-> (null,'uu02',28,'w','lamp92'),
-> (null,'qq02',24,'m','lamp92'),
-> (null,'uu03',32,'m','lamp138'),
-> (null,'qq03',23,'w','lamp94'),
-> (null,'aa',19,'m','lamp138');
Query OK, 7 rows affected (0.27 sec)
Records: 7 Duplicates: 0 Warnings: 0
8.2 修改数据
格式:update 表名 set 字段1=值1,字段2=值2,字段n=值n... where 条件
【实例】
mysql> update user set sex='男' where age=19;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from user;
+--------+------+------+
| name | age | sex |
+--------+------+------+
| admin | 26 | 男 |
| 朱立青 | 23 | 女 |
| 草右丹 | 19 | 男 |
| 口天涛 | 31 | 男 |
+--------+------+------+
4 rows in set (0.01 sec)
8.3删除数据
格式:delete from 表名 [where 条件]
【实例】
mysql> delete from user where age=19;
Query OK, 1 row affected (0.01 sec)
mysql> select * from user;
+--------+------+------+
| name | age | sex |
+--------+------+------+
| admin | 26 | 男 |
| 朱立青 | 23 | 女 |
| 口天涛 | 31 | 男 |
+--------+------+------+
3 rows in set (0.00 sec)
9 DQL-MySQL数据查询SQL
语法格式:
select 字段列表|* from 表名
[where 搜索条件]
[group by 分组字段 [having 分组条件]]
[order by 排序字段 排序规则]
[limit 分页参数]
9.1 基础查询
# 查询表中所有列 所有数据
select * from users;
# 指定字段列表进行查询
select id,name,phone from users;
9.2 Where 条件查询
- 可以在where子句中指定任何条件
- 可以使用 and 或者 or 指定一个或多个条件
- where条件也可以运用在update和delete语句的后面
- where子句类似程序语言中if条件,根据mysql表中的字段值来进行数据的过滤
【示例】
-- 查询users表中 age > 22的数据
select * from users where age > 22;
-- 查询 users 表中 name=某个条件值 的数据
select * from users where name = '王五';
-- 查询 users 表中 年龄在22到25之间的数据
select * from users where age >= 22 and age <= 25;
select * from users where age between 22 and 25;
-- 查询 users 表中 年龄不在22到25之间的数据
select * from users where age < 22 or age > 25;
select * from users where age not between 22 and 25;
-- 查询 users 表中 年龄在22到25之间的女生信息
select * from users where age >= 22 and age <= 25 and sex = '女';
【问题】
假设要求查询 users 表中 年龄为22或者25 的女生信息 select * from users where age=22 or age = 25 and sex = ‘女’;
思考上面的语句能否返回符合条件的数据? 实际查询结果并不符合要求?
select * from users where age=22 or age = 25 and sex = '女';
+------+--------+------+-------+-------+------+------+
| id | name | age | phone | email | sex | mm |
+------+--------+------+-------+-------+------+------+
| 1 | 章三 | 22 | | NULL | 男 | 0 |
| 1002 | cc | 25 | 123 | NULL | 女 | NULL |
+------+--------+------+-------+-------+------+------+
2 rows in set (0.00 sec)
-- 上面的查询结果并不符合 查询条件的要求。
-- 问题出在 sql 计算的顺序上,sql会优先处理and条件,所以上面的sql语句就变成了
-- 查询变成了为年龄22的不管性别,或者年龄为 25的女生
-- 如何改造sql符合我们的查询条件呢?
-- 使用小括号来关联相同的条件
select * from users where (age=22 or age = 25) and sex = '女';
+------+------+------+-------+-------+------+------+
| id | name | age | phone | email | sex | mm |
+------+------+------+-------+-------+------+------+
| 1002 | cc | 25 | 123 | NULL | 女 | NULL |
+------+------+------+-------+-------+------+------+
1 row in set (0.00 sec)
事实证明,我们同样可以通过使用小括号的方式,使得运算级发生改变。
9.3 like子句
- 我们可以在where条件中使用=,<,> 等符合进行条件的过滤,但是当想查询某个字段是否包含时如何过滤?
- 可以使用like语句进行某个字段的模糊搜索, 例如: 查询 name字段中包含五的数据
-- like 语句 like某个确定的值 和。where name = '王五' 是一样
select * from users where name like '王五';
+----+--------+------+-------+-----------+------+------+
| id | name | age | phone | email | sex | mm |
+----+--------+------+-------+-----------+------+------+
| 5 | 王五 | 24 | 10011 | ww@qq.com | 男 | 0 |
+----+--------+------+-------+-----------+------+------+
1 row in set (0.00 sec)
-- 使用 % 模糊搜索。%代表任意个任意字符
-- 查询name字段中包含五的
select * from users where name like '%五%';
-- 查询name字段中最后一个字符 为 五的
select * from users where name like '%五';
-- 查询name字段中第一个字符 为 王 的
select * from users where name like '王%';
-- 使用 _ 单个的下划线。表示一个任意字符,使用和%类似
-- 查询表中 name 字段为两个字符的数据
select * from users where name like '__';
-- 查询 name 字段最后为五,的两个字符的数据
select * from users where name like '_五';
- 注意:where子句中的like在使用%或者进行模糊搜索时,效率不高,使用时注意:
- 尽可能的不去使用%或者
- 如果需要使用,也尽可能不要把通配符放在开头处
9.4 Mysql中的统计函数(聚合函数)
max(),min(),count(),sum(),avg()
# 计算 users 表中 最大年龄,最小年龄,年龄和及平均年龄
select max(age),min(age),sum(age),avg(age) from users;
+----------+----------+----------+----------+
| max(age) | min(age) | sum(age) | avg(age) |
+----------+----------+----------+----------+
| 28 | 20 | 202 | 22.4444 |
+----------+----------+----------+----------+
-- 上面数据中的列都是在查询时使用的函数名,不方便阅读和后期的调用,可以通过别名方式 美化
select max(age) as max_age,
min(age) min_age,sum(age) as sum_age,
avg(age) as avg_age
from users;
+---------+---------+---------+---------+
| max_age | min_age | sum_age | avg_age |
+---------+---------+---------+---------+
| 28 | 20 | 202 | 22.4444 |
+---------+---------+---------+---------+
-- 统计 users 表中的数据量
select count(*) from users;
+----------+
| count(*) |
+----------+
| 9 |
+----------+
select count(id) from users;
+-----------+
| count(id) |
+-----------+聚合函数除了以上简单的使用意外,通常情况下都是配合着分组进行数据的统计和计算
| 9 |
+-----------+
-- 上面的两个统计,分别使用了 count(*) 和 count(id),结果目前都一样,有什么区别?
-- count(*) 是按照 users表中所有的列进行数据的统计,只要其中一列上有数据,就可以计算
-- count(id) 是按照指定的 id 字段进行统计,也可以使用别的字段进行统计,
-- 但是注意,如果指定的列上出现了NULL值,那么为NULL的这个数据不会被统计
-- 假设有下面这样的一张表需要统计
+------+-----------+------+--------+-----------+------+------+
| id | name | age | phone | email | sex | mm |
+------+-----------+------+--------+-----------+------+------+
| 1 | 章三 | 22 | | NULL | 男 | 0 |
| 2 | 李四 | 20 | | NULL | 女 | 0 |
| 5 | 王五 | 24 | 10011 | ww@qq.com | 男 | 0 |
| 1000 | aa | 20 | 123 | NULL | 女 | NULL |
| 1001 | bb | 20 | 123456 | NULL | 女 | NULL |
| 1002 | cc | 25 | 123 | NULL | 女 | NULL |
| 1003 | dd | 20 | 456 | NULL | 女 | NULL |
| 1004 | ff | 28 | 789 | NULL | 男 | NULL |
| 1005 | 王五六 | 23 | 890 | NULL | NULL | NULL |
+------+-----------+------+--------+-----------+------+------+
9 rows in set (0.00 sec)
-- 如果按照sex这一列进行统计,结果就是8个而不是9个,因为sex这一列中有NULL值存在
mysql> select count(sex) from users;
+------------+
| count(sex) |
+------------+
| 8 |
+------------+
聚合函数除了以上简单的使用意外,通常情况下都是配合着分组进行数据的统计和计算
9.5 Group BY 分组
group by语句根据一个或多个列对结果集进行分组- 一般情况下,是用与数据的统计或计算,配合聚合函数使用
-- 统计 users 表中 男女生人数,
-- 很明显按照上面的需要,可以写出两个语句进行分别统计
select count(*) from users where sex = '女';
select count(*) from users where sex = '男';
-- 可以使用分组进行统计,更方便
select sex,count(*) from users group by sex;
+------+----------+
| sex | count(*) |
+------+----------+
| 男 | 4 |
| 女 | 5 |
-- 统计1班和2班的人数
select classid,count(*) from users group by classid;
+---------+----------+
| classid | count(*) |
+---------+----------+
| 1 | 5 |
| 2 | 4 |
+---------+----------+
-- 分别统计每个班级的男女生人数
select classid,sex,count(*) as num from users group by classid,sex;
+---------+------+-----+
| classid | sex | num |
+---------+------+-----+
| 1 | 男 | 2 |
| 1 | 女 | 3 |
| 2 | 男 | 2 |
| 2 | 女 | 2 |
+---------+------+-----+
# 注意,在使用。group by分组时,一般除了聚合函数,其它在select后面出现的字段列都需要出现在grouop by 后面
9.6 Having 子句
Having时在分组聚合计算后,对结果再一次进行过滤,类似于where,- where过滤的是行数据,having过滤的是分组数据
-- 要统计班级人数
select classid,count(*) from users group by classid;
-- 统计班级人数,并且要人数达到5人及以上
select classid,count(*) as num from users group by classid having num >=5
9.7 Order by 排序
- 我们在mysql中使用select的语句查询的数据结果是根据数据在底层文件的结构来排序的,
- 首先不要依赖默认的排序,另外在需要排序时要使用orderby对返回的结果进行排序
- Asc 升序,默认
- desc降序
9.8 limit数据分页
- limit n 提取n条数据,
- limit m,n 跳过m跳数据,提取n条数据
-- 查询users表中的数据,只要3条
select * from users limit 3;
-- 跳过前4条数据,再取3条数据
select * from users limit 4,3;
-- limit一般应用在数据分页上面
-- 例如每页显示10条数据,第三页的 limit应该怎么写? 思考
第一页 limit 0,10
第二页 limit 10,10
第三页 limit 20,10
第四页 limit 30,10
-- 提取 user表中 年龄最大的三个用户数据 怎么查询?
select * from users order by age desc limit 3;
【总结】

以上是根据学习时的一些学习,有些举例是在课堂上讲的,也有的是自己敲的。希望能帮助到大家!谢谢~
本文围绕MySQL数据库展开,介绍了数据库的概念、特点和常见类型,详细讲解了MySQL基本命令、基础操作,包括登录、库表操作、数据增删改查等。还阐述了数据类型,如字符串、数值、日期等,以及数据库与数据表的操作、数据操作DML和查询SQL等内容。
441

被折叠的 条评论
为什么被折叠?



