SQL语句查询:
排序:通过order by语句,可以将查询出的结果进行排序.放置在select语句的最后.
格式:
Select * from 表名 ORDER BY排序字段 ASC | DESC; ASC升序(默认) DESC 降序
聚合:
之前我们做的查询都是横向查询,他们都是根据条件一行一行的进行判断,而使用聚合函数查询是纵向查询,是对一列的值进行计算,然后返回一个单一的值;另外聚合函数会忽略空值.
Count:统计指定列不为null的记录行数
Sum:计算指定列的数值和,如果指定列类型不是数值类型,那么计算结果为0;
Max:计算指定列的最大值,如果指定列是字符串类型,那么使用字符串排序运算(http://blog.csdn.net/nmgrd/article/details/52014235);
Min:计算指定列的最小值,如果指定列是字符串类型,那么使用字符串排序运算.
Avg:计算指定列的平均值,如果指定列类型不是数值类型,那么计算结果就是0;
分组:
分组查询是指使用group by字句对查询信息进行分组
格式:
Select 字段1,字段2...from表名 group by分组字段 having分组条件
分组操作中的having子语句,是用于在分组后对数据进行过滤的,作用类似于where条件.
Having与where的区别:
Having是在分组后对数据进行过滤
Where是在分组前对数据进行过滤
Having后面可以使用分组函数(统计函数)
Where后面不可以使用分组函数.
SQL备份与恢复:
备份:
选中数据库,右键”备份/导出”,”以sql转储文件备份数据库”,”选择结构和数据”,指定导出路径,保存成.sql文件即可.
恢复:
数据库列表区域右键”从sql转储文件导入数据库”,指定要执行的sql文件,执行即可.
主键约束:
Primary key 约束唯一标识数据库表中的每条记录.
主键必须包含唯一的值.
主键列不能包含null值.
每个表都应该有一个主键,并且每个表只能有一个主键
添加主键约束:
方式一:创建表时,在字段描述处,声明指定字段为主键;
Create table person(id_p int primary key,lastname varchar(255));
方式二:创建表时,在constraint约束区域,声明指定字段为主键;
格式:[constraint 名称] primary key(字段 列表)
关键字 constraint可以省略,如果需要为主键命名,constraint不能省略,主键名称一般没用
字段列表需要使用小括号括住,如果有多字段需要使用逗号分割.声明两个以上字段为主键,我们称为联合主键.
Create table person(firstname varchar(255),lastname varchar(255),city varchar(255),[constraint pk_personID ]primary key(firstname,lastname));
方式三:创建表之后,通过修改表结构,声明指定字段为主键:
Alter table persons add [constraint 名称] primary key(字段列表);
删除主键约束:
Alter table persons drop primary key;
自动增长列:
使用auto-increment(自动增长列)关键字,自动增长列类型必须是整型,自动增长列必须为键(一般为主键);
默认,auto_increment的开始值是1,如果希望修改起始值,使用.
Alter table persions auto_increment[=100];
非空约束:
Not null 约束强制列不接受null值
Not null约束强制字段始终包含值.这意味着,如果不向字段添加值,就无法插入新记录或者更新记录.
唯一约束:
Unique 约束唯一标识数据库表中的每条记录.
Unique和primary key约束均为列或列集合提供了唯一性的保证.
Primary key拥有自动定义的unique约束
注意:每个表可以有多个unique约束,但是每个表只能有一个primary key约束,
添加唯一约束:
与主键方式相同.三种:
方式一:创建表时,在字段描述处,声明唯一;
方式二:创建表时,在约束区域,声明唯一.
Constraint 名称 unique(id_p);
方式三:创建表后,修改表结构,声明字段唯一.
Alter table persons add [constraint 名称] unique (id_p);
删除唯一约束:
Alter table persons drop index 名称;
如果添加唯一约束时,没有设置约束名称,默认是当前字段的字段名;
表与表之间的关系(即多表):一对多关系,多对多关系,一对一关系
一对多关系:客户和订单,分类和商品,部门和员工;
建表原则:在从表(多方)创建一个字段,字段作为外键指向主表(一方)的主键;
多对多关系:学生和课程,用户和角色
多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键.
一对一关系:
两种建表原则:
外键唯一:主表的主键和从表的外键(唯一),形成主外键关系,外键唯一unique外键是主键:主表的主键和从表的主键,形成主外键关系.
外键约束:
外键特点:从表外键的值是对主表主键的引用;
从表外键类型,必须与主表主键类型一致.
声明外键约束:
语法:alter table 从表 add [constraint][外键名称] foreign key(从表外键字段名) references主表 (主表的主键);
[外键名称]用于删除外键约束的,一般建议”_fk”结尾.
Alter talbe 从表 drop foreign key外键名称.
使用外键目的:保证数据完整性;
多表:
多表查询:
交叉连接查询(基本不会使用--得到的是两个表的乘积 笛卡尔积关联)
Select * from A,B;
内连接查询(使用的关键字inner join ---inner可以省略)
隐式内链接:select * from A,B where 条件;
显示内链接:select * from A inner join B on 条件;
外连接查询(使用的关键字 outer join --outer 可以省略)
左外连接:left outer join
Select * from A left join B on 条件;(以左表为基准)
右外连接:right outer join
Select * from A right outer join B on 条件;(以右表为基准)
子查询:
一条select语句结果作为另一条select语法一部分(查询条件,查询结果,表等).
select...查询字段....from.....表...where....查询条件
表与表之间的关系还是需要多加练习,多加实际操作,使用久了就会喜欢的