Day6-数据库-MySQL

Dao层不直接调取xml文件,而是调取数据库中数据

DBMS,数据库管理系统

SQL:操作关系型数据库统一标准

一、SQL语句

sql语句:

1、可以单行多行,但是分号结尾

2、不区分大小写

单行注释:--空格内容  #

多行注释 /* */

create database ab1;创建数据库

二、SQL语句分类

DDL: 数据定义语言,定义数据库对象

DML:数据库操作语言,增删改

DQL:数据查询语言,查询表中记录

DCL:数据控制语言,创建数据库用户、控制数据库的访问权限

三、DDL(数据库定义语言)

可以把database变成schema

查询所有数据库:show databases;

创建数据库:create database if not exists ab01;

切换数据库:use ab01;(使用db01数据库

查看当前正在使用数据库: select database();

删除数据库:drop database if exists ab01;

表结构创建:

create table 表名(

字段1 字段类型 【约束】 【comment 字段1注释】,

。。。。

字段n

)[comment 表注释];

约束:限制字段所存储数据,保证数据库数据的正确性、有效性和完整性

非空约束 not null

唯一约束:unique

主键约束:非空且唯一:primary key auto_increment

默认约束:default

外键约束:foreign key

 四、MySQL数据类型

数值类型

默认是有符号,如果需要无符号 则tinyint unsigned

decimal避免精度损失

年龄:tinyint unsigned 避免占用空间,因为年龄最多一百多

字符串类型

char(10)最多只能存10个字符,不足10个字符,占用10个字符空间,空 性能高,不用判断字符长度

varchar(10)最多只能存10字符。不足10,按照实际长度存储。  省空间

日期时间

表结构查询

查询所有当前数据库所有表:show tables;

查询表结构:desc 表名;

查询建表语句:show create table 表名;

修改表结构

删除表:drop table if exists 表名;

五、DML

DML(数据库操作语言),对数据库记录进行增删改操作

添加数据(INSERT)

修改数据(UPDATE)

删除数据(DELETE)

INSERT

指定字段添加数据:insert into 表名(字段)values(值)

全部字段添加数据:insert into 表名(值);

批量添加数据(指定字段):insert into 表名(字段) values(值),(值)

批量添加数据(全部字段):insert into 表名 values (值),(值);

create_time,update_time可以调用now()函数

注意:

1插入数据时,指定的字段顺序应该与数值一定

2 字符串和日期类型在引号中

3 插入数据大小,应该在字段指定范围内

UPDATE

修改数据 update 表名 set 字段1 = 值1 ,字段2 = 值2。。where 条件

DELETE

delete form 表名 where ;

删除所有数据 delete from 表名;

注意

DELETE语句不能删除某一个字段的值,可以用update将字段值改成null

六、DQL(数据查询语言)

关键字:SELECT

select字段列表

from表名列表

where条件查询

group by分组字段列表  having 分组后条件列表

order by 排序字段列表

limit 分页参数

基本查询

查询多个字段:select 字段 from 表名

查询所有字段:select * from 表名(不建议 不直观 影响效率)

设置别名:select 字段【as(可以省略) 别名】

去除重复记录:select distinct 字段列表 from 表名;

注意 查询时可以先写select from 表名。 再写字段可以自动显示字段所有名

条件查询

select 字段列表 from 表名 where 条件列表

比较运算符:

分组查询(聚合统计)

将一列数据作为一个整体,进行纵向计算

select 聚合函数(字段列表)from 表名;

注意:count(字段)可以选择任何字段

count(常量)

count(*)

null值不参与所有聚合函数运算

分组查询

select 字段列表 from 【where 条件】group by 分组字段名【having 分组后过滤条件】;

注意:

执行时机不同:where分组之前过滤,不参与分组

判断条件不同:where不能对聚合函数进行判断,而having可以

排序查询

select 字段列表 from 表名【where 条件列表】【group by 分组字段】order by 字段1 排序方式1,字段2, 排序方式2

ASC:升序(可以不加,因为默认就是升序)

DESC:降序

注意:多字段排序,如果第一个字段相同时,才会根据第二个字段进行排序

分页查询

select 字段列表 from 表名 limit 起始索引,查询记录数;

注意:

起始数据为0或1都是第一页

select * from tb_emp limit 0,5;第一页展示5条数据

select * from tb_emp limit 0,5;第二页展示5条数据

起始索引 = (页码-1)*记录数

注意:分页查询是数据库方言,在Mysql是limit

           如果查询第一页数据,起始索引可以省略

统计数据可视化

报表组件库,Apache Echarts(百度开发)

if判断(gender为1为男性,不为1为女性,将原本的1,2替换为中文)

if(条件表达式,值1,值2)true时取1,flase为2

select if(gender = 1,'男性员工','女性员工')gender,count(*) from tb_emp group by gender;
select if(gender = 1,'男性员工','女性员工')性别,count(*) from tb_emp group by gender;

多余2个条件判断时,用case流程控制

select (case job when 1 then '班主任' when 2 then '讲师' when 3 then '学工主管' when 4 then '教研' else '未分配职位' end)职位, count(*)
from tb_emp
group by job;

七、多表设计

一对多

需求:根据页面原型和需求文档,完成部门及其员工模块的表结构设计

部门:一

员工:多

一(父表)关联多(子表)的主键

使用外键在数据库层面建立两张表的关联:

1创建表示指定外键

create table 表名(

字段名 数据类型,

。。。

【constrict】[外键名称] foriegn key(外键字段名) references 主表(字段名)

2、创建完后,添加外键

alter table 表名 add constrict 外键名称 foreign key(外键字段名)references 主表(字段名);

3、图形化界面直接添加外键

注意:

所以物理外键用的少,现在使用多的为逻辑外键

一对一:

案例:用户与身份证信息关系

关系:一对一关系,多用于单标拆分

实现方法:在任意一方加入外键,关联另外一方主键,并且设置外键为唯一的UNIQUE

多对多

实现方法:创建一张中间表

根据需求和页面原型设计数据关系

Visio Professional(画图工具)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值