SQL语法详解 2
一.查询
1.排序查询
语法:order by 子句 [desc降序 asc升序默认]
order by 字段1 排序方式1,字段2 排序方式;
SELECT * FROM student ORDER BY math DESC;
SELECT * FROM student ORDER BY math DESC,english DESC;
2.聚合函数:将一列数据作为一个整体,进行纵向计算。
count(列名): 计算个数 一般选择非空的列或count(*);
max: 计算最大值; min: 计算最小值; sum: 计算和; avg: 计算平均值;
注意事项:聚合函数的计算,排除null值。
解决方案:选择非空的列 或者 ifnull函数
SELECT COUNT(IFNULL(english,0)) FROM student;
3.分组查询
语法:group by 分组字段;
注意事项:
分组之后查询的字段是分组字段和聚合函数;
where和having的区别:where在分组之前进行限定,如果不满足条件,则不参与分组。having在分组之后进行限定,如果不满足,则不会查询出来;where后不可以跟聚合函数,而having可以进行聚合函数的判断。
4.分页查询
语法:limit 开始的索引,每页查询的条数;这是MySQL的方言。
公式:开始的索引=(当前页码数-1)*每页显示的条数;
SELECT id,NAME,age,sex,math,english FROM student LIMIT 0,3; -- 第一页
SELECT id,NAME,age,sex,math,english FROM student LIMIT 3,3; -- 第二页
SELECT id,NAME,age,sex,math,english FROM student LIMIT 6,3; -- 第三页
二.约束
对表中的数据进行限定,保证数据的正确性、有效性、完整性。
分类:主键约束 primary key 、非空约束 not null 、唯一约束 unique 、外键约束 foreign key。
1.非空约束
创建表时添加非空约束
Cerate table stu(
Id int,
Name varchar(20) not null
);
创建表完成后添加约束
Alter table stu modify name varchar(20) not null;
删除name的非空约束
Alter table stu modify name varchar(20);
(2)唯一约束 unique
创建表时添加唯一约束
Create table stu1(
Id int;
Phone_number varchar(20) unique
);
删除唯一约束(比较特殊)
Alter table stu1 drop index phone_number;
在创建表之后,添加唯一约束
Alter table stu1 modify phone_number varchara(20) unique;
(3)主键约束 primary key
注意:非空且唯一、一张表只能有一个唯一字段作为主键,主键就是表中记录的唯一标识
在创建表时添加主键
CREATE TABLE stu(
Id INT PRIMARY KEY,
Name VARCHAR(20)
);
删除主键
alter table stu drop primary key;
创建完表之后添加主键
alter table modifu id int priamary key;
(4)自动增长
如果某一列是数值类型,使用auto_increment 可以自动完成增长
CREATE TABLE stu(
Id INT PRIMARY KEY AUTO_INCREMENT,
Name VARCHAR(20)
);
Insert into stu values(null, ‘jack’);
删除自动增长
alter table stu modify id int;
添加自动增长
alter table stu modify id int auto_increment;
(5)外键约束 foreign key
让表与表之间产生关系,从而保证数据的正确性
添加外键
Create table 表名称(
·····
外键列,
Constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
);
删除外键
alter table employee drop foreign key 外键名称;
表创建后添加外键
alter table employee add constraint 外键名称 foreign key (外键列名称) references 主表名称 (主表列名称);
级联操作 :
级联更新 ON UPDATE CASCADE
级联删除 ON DELETE CASCADE 存在弊端、危险,谨慎使用
-- 添加级联操作
ALTER TABLE 表名称 ADD CONSTRAINT外键名称 FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE;