SQL查询语句和约束

查询语句

排序查询:order by

orderby排序字段1 排序方式1,排序字段2 排序方式2,

注意:当有多个排序方式时候,只有第一排序方式排完的数据一样才按第二排序方式排序。

默认升序排序ASC,降序排序DESC

聚合函数:将一列数据作为一个整体,进行纵向计算。

count个数,max最大值,min最小值,sum和,avg平均值

注意:聚合函数的计算排除了null值

解决:1统计非空的列,主键

2 IFNULL函数 ifnull()

CREATE TABLE student(

id INT,

NAME VARCHAR(30),

age INT,

score DOUBLE(5,1),

birthday DATE

);

--查看表结构

DESC student;

--添加数据

-- insert intostudent (id,name,age) values (1,'小明',20),(3,'小强',21);

INSERT INTO studentVALUES (1,'小红',18,90,'20000501'),

(2,'小明',16,99.1,'20000501'),

(3,'小强',18,60,'20000501'),

(4,'大明',26,99.1,'20000501'),

(5,'大强',28,60,'20000501');

SELECT *FROM student;

SELECT *FROM studentORDER BY age ,score DESC ;--用age升序排序,如果age一样用score降序排序

SELECT COUNT(NAME)FROM student;--计算name的个数

SELECT AVG(score)FROM student;--计算score的平均分

SELECT MAX(score)FROM student;--计算score的最大值

分组查询:

groupby

where和having的区别?

1 where在分组之前进行限定,如果不满足条件,则不参加与分组。having在分组之后进行限定,如果不满足结果,则不会被查询出来

2 where后不可以跟聚合函数,having可以进行聚合函数的判断。

分组前过滤用where,分组后过滤用having

1按照性别分组。查询男女的平均分

selectsex,avg(score) from student group by sex;

2按照性别分组。分别查询男、女同学的平均分,人数

SELECTsex , AVG(score),COUNT(id) FROM student GROUP BY sex;

3按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组

SELECT sex , AVG(math),COUNT(id) FROMstudent WHERE score > 70 GROUP BY sex;

4. 按照性别分组。分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个

SELECTsex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVINGCOUNT(id) > 2;

或者把上面的count(id)起别名为人数,方便后面的查询(起别名用as,as可以省略)

分页查询:

limit 开始索引,每页的查询条数;

规律:开始的索引 = (当前的页码 - 1) * 每页显示的条数

注意:limit是方言,只在mysql中有作用,orcal中是其他的。

每页显示3条记录 SELECT *FROM student LIMIT 0,3;

SELECT *FROM student LIMIT 3,6;

约束

约束:对表中数据进行限定,从而保证数据的正确性,有效性,完整性

分类:

1.主键约束:primary key(自带非空和唯一约束)

2.非空约束:not null

3.唯一约束:unique

4.外键约束:foreign key

非空约束使用 not null

1.创建表时添加约束

namevarchar(30) not null;

2建过表添加约束

altertable student modify name varchar(30) not null;

3.删除name的非空约束

altertable student modify name varchar(30);

唯一约束使用 unique

创建表时添加唯一约束

numbervarchar(20) unique; -- 可以有null但是只能有一个null

创建表后添加唯一约束:

altertable student modify number varchar(20) unique;

删除唯一约束:

altertable student drop index number;

主键约束使用:primary key

主键是表中记录的唯一标识,一张表只能由一个字段为主键,主键是非空且唯一的

创建表时候添加主键约束:

idint primary key,

创建表后添加主键:

altertable student modify id int primary key;

删除主键

altertable student drop primary key;

自动增长:auto_increment 让某一列使用完成值的自动增长

一般自动增长配合主键,

创建表时添加主键约束,并完成自动增长primary key auto_increment;

添加自动增长:alter table stu modify id intauto_increment;

删除自动增长:alter table stu modify id int;

外键约束:

constraint外键名 foreign key (外键列) references主表名;

创建表时候添加外键约束:

在创建表的最后加上:

constraint外键名称 foreign key (外键列名称)references 主表名称(主表列名称)

创建表之后,添加外键

altertable 表名 add constraint 外键名称foreign key(外键字段名称) references 主表名称(主表列名称);

删除外键

ALTERTABLE 表名 DROP FOREIGN KEY 外键名称;

级联操作:

添加级联操作

1.添加级联操作

语法:ALTER TABLE 表名 ADD CONSTRAINT 外键名称

FOREIGNKEY (外键字段名称) REFERENCES 主表名称(主表列名称) ON UPDATE CASCADE ON DELETE CASCADE ;

级联更新:ON UPDATE CASCADE

级联删除:ON DELETE CASCADE

多表关系

一对一,一对多,多对多

实现关系:

一对一:任意一方添加主键

一对多:在多的一方添加主键

多对多:借助第三张表,表中至少由两个字段,这两个字段作为第三张表的外键,分别指向两张表的主键

备份和还原:

备份: mysqldump -u用户名-p密码 数据库名称 > 保存的路径

或者用workbence图形化工具

还原:登陆数据库->创建数据库->使用数据库->执行文件(source+备份的路径)

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180925G1WP3300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券