MySQL数据库(二)

沙海
沙海
沙海
165
文章
2
评论
2017年10月1日17:41:06 评论 63 3009字阅读10分1秒

DQL(数据查询语言)

简单查询

查询所有列:  select * from 表名;
查询指定列:  select 字段名1,字段名2... from 表名; 
别名查询:    select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名; 
清除重复值:  select distinct 字段名 from 表名;
查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)

条件查询

格式:select * from 表名 where 条件;

比较运算符

> 大于 
< 小于 
<= 小于等于 
>= 大于等于 
= 等于 
<>  != 不等于

逻辑运算符

and(&&) 多个条件同时满足 
or(||)  多个条件其中一个满足 
not(!)  不满足
数据库提供的方式:
between 1 and 2   类似与的关系
in(字段1,字段2     类似或的关系

模糊查询 like

like
% : 模糊多位
_ : 模糊一位

排序 order by 字段

select * from 表名 where 条件 order by 字段名称 [desc | asc] , 字段名 [desc | asc] ;
asc(默认) : 升序   desc : 降序

聚合函数

count() : 计数
sum() : 求和
max() : 求最大值
min() : 求最小值
avg() : 求平均值

分组 group by 字段

select * from 表名 where 条件 group by 分组字段 [having 分组条件 ] ;
havingwhere的区别(面试题)
having 是在分组后对数据进行过滤.
where  是在分组前对数据进行过滤
having 后面可以使用聚合函数
where  后面不可以使用聚合函数

分页

limit
select * from 表名 limit 起始数,查询几条;

查询顺序

select distinct *或者字段或者聚合 from 表名 where 条件 and 条件  btween 条件  or 条件   in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b

数据库约束

约束:对表中的数据可以进行进一步的限制,来保证数据的唯一性,正确性和完整性

约束种类:

单表约束

PRIMARY KEY : 主键约束 代表该字段的数据不能为空且不可重复 ​ NOT NULL : 非空 代表该字段的数据不能为空 ​ UNIQUE : 唯一 代表该字段的数据不能重复

多表约束

外键约束

主键约束 primary key

一个表中都得需要主键约束 用来标注一条记录的唯一性

特征:

主键字段值唯一不可重复

主键字段值不能包含NULL值

一个表中只能有一个主键

实现方式:

添加主键

方式一 在创建表时,添加约束 
        格式
            create table 表名 ( 
                字段名称1 字段类型 约束,  
                字段名称2 字段类型 约束 
            );
方式二 在创建表时,结尾内添加约束
        格式1:单一主键
            create table 表名 (
                字段名称1 字段类型,     
                字段名称2 字段类型,     
                primary key(字段名称1)  
            );
        格式2:联合主键  特点:必须保证2个字段的值不能为空且唯一
            create table 表名 (
                字段名称1 字段类型,     
                字段名称2 字段类型,     
                primary key(字段名称,字段名称1)  
            );
在已有表中添加主键
        alter table 表名 add primary key(字段名称);

删除主键

alert table 表名 drop PRIMARY KEY;

主键自增

自己去维护主键过于麻烦,可以让数据库帮助我们去维护

auto_increment ​ 默认地AUTO_INCREMENT 的开始值是1,如果希望修改起始值,请使用下列SQL语法

ALTER TABLE 表名 AUTO_INCREMENT=起始值;

唯一约束: unique

特征

被修饰的字段唯一,不可重复

注意: 一个表中可以有多个被unique修饰的字段,但对null不起作用

实现方式

    方式1: 创建表时在字段后添加 
        create table 表名 ( 
            字段名称1 字段类型 约束, 
            字段名称2 字段类型 约束 
        );
    方式2: 创建表时结尾添加
        create table 表名 ( 
            字段名称1 字段类型,     
            字段名称2 字段类型,     
            unique(字段名1) 
        );
        特点:保证2个字段同时满足
        create table 表名 ( 
            字段名称1 字段类型,     
            字段名称2 字段类型,     
            unique(字段名1,字段名2) 
        );
    方式3: 创建完表后,通过修改表添加
        alter table 表名 add unique(字段名1,字段名2);
删除:
 alter table 表名 drop index 约束名称;

非空约束: not null

特征:

被修饰的字段不可为空

实现方式

直接在字段后面添加即可

删除:

alter table 表名 change 旧字段名称 新字段名称 类型 约束;

default : 默认值

数据备份与还原

命令方式

只能备份库中的表和数据

备份数据

mysqldump -u用户名 -p密码 数据库名 > 文件的路径

把指定数据库的表和表中的数据给备份了,没备份库

还原数据

还原的时候需要先登录MySQL,并使用对应的数据库

source 导入文件的路径;

图形化界面方式

备份整个数据库

#多表的设计与实现

现实生活中,实体与实体之间肯定是有关系的,比如:老公和老婆,部门和员工,老师和学生等

那么我们在数据库设计与之对应的表时,也应该体现出表与表之间的关系

数据库的三种表关系

1. 一对一(了解)
2. 一对多
3. 多对多

一对多

疑问:我们在数据库中有一张分类表和一张商品表,这两张表之间可不可以有关系?

如果有关系,在数据库里面,我们如何去创建这种关系?

实现:分类表和商品表

称一的一方为主表 称多的一方为从表

原则:在从表中(多的一方)创建一个字段为外键,然后让这个外键指向主表的(一的一方)主键

数据库提供了外键约束的语法来实现指向关系:

关系建立: alter table 从表 add constraint [外键名称] foreign key (从表外键字段名) references 主表 (主表的主键)

关系删除: alter table 从表 drop foreign key 外键名称

外键约束的作用:能够保证数据的完整性和有效性

特征:从表中如果关联了主表的数据则强制主表的数据不能删除,保证数据的完整性和有效性

多对多

实现:学生表和课程表

原则:需要在外部创建一张中间表

这个中间表至少需要2个字段,然后让这2个字段分别作为外键只向各自表的主键

本质上就是两个一对多,添加中间表

一对一(了解)

人和身份证号,企业和法人

实现方式,一般都写在一张表中

如果非要拆分成两张表,可以有2种方式来建立它们之间的一对一关系

实现:

1 让双方的主键作为外键一一对应

2 在任意一方创建一个字段当成是外键指向另一方的主键,但是这个外键必须唯一

外键约束

添加外键约束

方式1: 创建表时添加

CREATE TABLE product( ​ pid INT PRIMARY KEY AUTO_INCREMENT, ​ pname varhcar(20), ​ c_id INT, ​ CONSTRAINT foreign key(外键字段) references 主表名称(主键字段) ​ );

方式2: 在已有表上添加外键约束

给从表的外键字段添加外键约束

alter table 从表 add [constraint 名称] foreign key(外键字段) references 主表名称(主键字段)

方式3:可视化图形方式(推荐)

在架构设计器中,直接指定外键拖向主键即可,简单方便快捷

删除外键

方式一和方式二:ALTER TABLE 从表 drop foreign key 外键名称;

方式三:在架构设计器中,选中指向关系右键删除即可

继续阅读
weinxin
资源分享QQ群
本站是一个IT技术分享社区, 会经常分享资源和教程; 分享的时代, 请别再沉默!
沙海
  • 版权声明:本站是一个IT技术分享社区,沙海技术团队的技术分享社区,我们会经常分享资源和教程。
  • 转载请注明:MySQL数据库(二) - Java秀 ☜(ˆ▽ˆ)
阿里云企业级云服务器新用户1折特惠
网站https安全证书安装,伪静态配置
0012-基于Java的班级信息管理系统的设计与实现源码
C语言项目源码打包分享
匿名

发表评论

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: