SQL语句查询

1.1 排序面试

经过order by语句,能够将查询出的结果进行排序。放置在select语句的最后。
格式:
SELECT * FROM 表名 ORDER BY 排序字段ASC|DESC;
ASC 升序 (默认)
DESC 降序sql

1.查询全部商品信息,使用价格排序(降序)

SELECT * FROM product ORDER BY price DESC;数据库

2.在价格排序(降序)的基础上,以分类排序(降序)

SELECT * FROM product ORDER BY price DESC,category_id DESC;函数

3.显示商品的价格(去重复),并排序(降序)

SELECT DISTINCT price FROM product ORDER BY price DESC;学习

1.2 聚合spa

以前咱们作的查询都是横向查询,它们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,他是对查询后的结果的列进行计算,而后返回一个单一的值;另外聚合函数会忽略空值。
今天咱们学习以下五个聚合函数:
 count:统计指定列不为NULL的记录行数;
 sum:计算指定列的数值和,若是指定列类型不是数值类型,那么计算结果为0;
 max:计算指定列的最大值,若是指定列是字符串类型,那么使用字符串排序运算;
 min:计算指定列的最小值,若是指定列是字符串类型,那么使用字符串排序运算;
 avg:计算指定列的平均值,若是指定列类型不是数值类型,那么计算结果为0;code

1 查询商品的总条数

SELECT COUNT(*) FROM product;排序

2 查询价格大于200商品的总条数

SELECT COUNT(*) FROM product WHERE price > 200;索引

3 查询分类为'c001'的全部商品价格的总和

SELECT SUM(price) FROM product WHERE category_id = 'c001';开发

4 查询分类为'c002'全部商品的平均价格

SELECT AVG(price) FROM product WHERE category_id = 'c002';

5 查询商品的最大价格和最小价格

SELECT MAX(price),MIN(price) FROM product;

1.3 分组

分组查询是指使用group by字句对查询信息进行分组。
 格式:
SELECT 字段1,字段2… FROM 表名GROUP BY分组字段 HAVING 分组条件;
分组操做中的having子语句,是用于在分组后对数据进行过滤的,做用相似于where条件。

 having与where的区别:
 having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
 having后面可使用统计函数过滤数据
where后面不可使用统计函数。

0 统计全部商品的个数

1 统计各个分类商品的个数

SELECT category_id ,COUNT(*) FROM product GROUP BY category_id ;

2 统计各个分类商品的个数,且只显示个数大于1的信息

SELECT category_id ,COUNT() FROM product GROUP BY category_id HAVING COUNT() > 1;

1.4 分页查询

分页查询在项目开发中常见,因为数据量很大,显示屏长度有限,所以对数据须要采起分页显示方式。例如数据共有30条,每页显示5条,第一页显示1-5条,第二页显示6-10条。
 格式:
SELECT 字段1,字段2… FROM 代表 LIMIT M,N
M: 整数,表示从第几条索引开始,计算方式 (当前页-1)*每页显示条数
N: 整数,表示查询多少条数据
SELECT 字段1,字段2… FROM 代表 LIMIT 0,5
SELECT 字段1,字段2… FROM 代表 LIMIT 5,5

第2章 SQL备份与恢复

2.1 SQL备份

选中数据库,右键”备份/导出”,指定导出路径,保存成.sql文件便可。

2.2 SQL恢复

数据库列表区域右键“从SQL转储文件导入数据库”,指定要执行的SQL文件,执行便可。

第3章 SQL约束

3.1 数据完整性

添加数据完整性=添加表约束
分类:实体完整性,域完整性,引用完整性
实体完整性: 对数据行的约束,好比:主键约束,惟一约束
域完整性: 对数据列的约束,好比:该列的数据类型, 默认约束,非空约束
引用完整性: 外键约束(多表的关系)

3.2 主键约束

PRIMARY KEY 约束惟一标识数据库表中的每条记录,每条记录中被主键约束 约束的字段不能相同。
主键必须是惟一的值。
主键列不能是 NULL 值。
每一个表都应该有且只能有一个主键。

3.2.1 添加主键约束

 方式一:建立表时,在字段描述处,声明指定字段为主键:
CREATE TABLE Persons
(
Id_P int PRIMARY KEY,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 方式二:建立表时,在constraint约束区域,声明指定字段为主键:
 格式:[constraint 名称] primary key (字段列表)
 关键字constraint能够省略,若是须要为主键命名,constraint不能省略,主键名称通常没用。
 字段列表须要使用小括号括住,若是有多字段须要使用逗号分隔。声明两个以上字段为主键,咱们称为联合主键。
CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT pk_PersonID PRIMARY KEY (FirstName,LastName)
)

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (FirstName)
)

 方式三:建立表以后,经过修改表结构,声明指定字段为主键:
ALTER TABLE Persons ADD [CONSTRAINT 名称] PRIMARY KEY (字段列表)

CREATE TABLE Persons
(
FirstName varchar(255),
LastName varchar(255),
Address varchar(255),
City varchar(255)
)
ALTER TABLE Persons ADD PRIMARY KEY (FirstName)

3.2.2 删除主键约束

如需撤销 PRIMARY KEY 约束,请使用下面的 SQL:
ALTER TABLE Persons DROP PRIMARY KEY

3.3 自动增加列

咱们一般但愿在每次插入新记录时,数据库自动生成字段的值。
咱们能够在表中使用 auto_increment(自动增加列)关键字,自动增加列类型必须是整形,自动增加列必须为键(通常是主键)。
 下列 SQL 语句把 "Persons" 表中的 "P_Id" 列定义为 auto-increment 主键
CREATE TABLE Persons
(
P_Id int PRIMARY KEY AUTO_INCREMENT,
LastName varchar(255),
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 向persons添加数据时,能够不为P_Id字段设置值,也能够设置成null,数据库将自动维护主键值:
INSERT INTO Persons (FirstName,LastName) VALUES ('Bill','Gates')
INSERT INTO Persons (P_Id,FirstName,LastName) VALUES (NULL,'Bill','Gates')
 面试:delete和truncate的区别
 Delete删除表中的数据,但不重置auto-increment记录数。
 Truncate删除表中的数据,auto-increment记录数将重置。Truncate其实先删除表而后再建立表。
 扩展:默认地,AUTO_INCREMENT 的开始值是 1,若是但愿修改起始值,请使用下列 SQL 语法:
ALTER TABLE Persons AUTO_INCREMENT=100

3.4 非空约束NOT NULL

NOT NULL 约束强制列不接受 NULL 值。
NOT NULL 约束强制字段始终包含值。这意味着,若是不向字段添加值,就没法插入新记录或者更新记录。
 方式一:建立表,下面的 SQL 语句强制 "Id_P" 列和 "LastName" 列不接受 NULL 值:
CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)

 方式二:修改表结构
添加非空约束 ALTER TABLE student MODIFY LastName varchar(255) NOT NULL

删除非空约束 ALTER TABLE student MODIFY LastName varchar(255

3.5 惟一约束

UNIQUE 约束惟一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了惟一性的保证。
PRIMARY KEY 拥有自动定义的 UNIQUE 约束。
请注意,每一个表能够有多个 UNIQUE 约束,可是每一个表只能有一个 PRIMARY KEY 约束。

3.5.1 添加惟一约束

与主键添加方式相同,共有3种,
 方式1:建立表时,在字段描述处,声明惟一:
CREATE TABLE Persons
(
Id_P int UNIQUE,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255)
)
 方式2:建立表时,在约束区域,声明惟一:
CREATE TABLE Persons
(
Id_P int,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
CONSTRAINT 名称UNIQUE (Id_P)
)

 方式3:建立表后,修改表结构,声明字段惟一:
ALTER TABLE Persons ADD [CONSTRAINT 名称] UNIQUE (Id_P)

3.5.2 删除惟一约束

 如需撤销 UNIQUE 约束,请使用下面的 SQL:
ALTER TABLE Persons DROP INDEX 约束名称
 若是添加惟一约束时,没有设置约束名称,默认是当前字段的字段名。

惟一约束与主键约束的区别:
主键:惟1、不能为空、一个表只能有一个主键,非业务数据
惟一:惟1、能够有空值,但只能有一个空值。一个表能够有多个惟一约束。

3.6 默认约束

在添加数据中,若是该字段不指定值,采用默认值处理  方式一: 建立表,字段处声明 CREATE TABLE Persons ( Id_P int, LastName varchar(255) NOT NULL, FirstName varchar(255), Address varchar(255) DEFAULT '北京', City varchar(255) )  方式二: 修改表结构 ALTER TABLE Persons MODIFY Address VARCHAR(255) DEFAULT '北京' 删除默认约束ALTER TABLE Persons MODIFY Address VARCHAR(255)

相关文章
相关标签/搜索