mysql之表

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条件.

Havingwhere的区别:

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....查询条件



表与表之间的关系还是需要多加练习,多加实际操作,使用久了就会喜欢的

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值