mysql---逻辑和数据库设计及权限

数据约束
(1)有默认值:
(2)非空;
(3)唯一
(4)主键
(5)自增长
(6)外键
默认值:
新建表的时候,后面加Default '广州天河',
唯一unique,确认不重复
auto_increment\
约束:主表和副表
在副表中约束外键
添加先添加主键
删除和修改先删除和修改副表
ON UPDATE CARD
数据库的设计
需求分析,需求分析师。--->抽取业务模型
图书模型:图书,图书名称,版本号,作者,


学生模型:需求设计;学号,名字,手机号码。
角色:学生,老师,图书管理员
。。。。。
《需求说明书》
需求设计,需求分析师,架构师,资深工程师。
概要设计:
数据库的设计:
业务模型/实体模型/-->数据模型(表的设计)
问题:如何设计?

抽取实体,业务模型---->实体模型
class ,book,(name.bookNo,author)
详细的设计:
类的详细设计:属性和方法,


java设计:23中设计模式
数据库设计:三大范式:
设计原则: 设计的表,遵守三大范式。
第一范式:表的每个字段不可分割
第二范式:每张表只表达一个意思,表中的每个字段都和主键有关联
第三范式:主键外的其他字段和主键有直接依赖关系。(减少冗余,每一个都是唯一标示)




2.关联的查询
多个表之间的查询三步走:
(1)确定查询那些表
(2)查询那些字段
(3)表与表的连接条件
2. 交叉连接查询(笛卡尔积现象)
内连接查询(,三步走(1)查那个表(2)表中哪个字段(3)连接条件,连接条件数量=表数量-1)
select empName ,deptName from employee,dept where employee.deptId=dept.id;
select empName.deptName from employee inner join dept on employee.deptId=dept.id;
左外连接查询(左边匹配右边,符合显示,不符合显示null)
select d.deptName,e.empName from dept d left outer join employee on d.id=e.deptId;
右外连接查询(右边数据一定完全显示)
select  d.deptName ,e.empName from employee right outer join dept d on d.id=e.deptId;
自连接查询
select e.empName ,b.empName from employee e left outer join employee b on e.bossId=d.id
3.存储过程:
1.什么是存储过程:  带有逻辑的sql语句(条件,控制语句,if,for,while)
2.特点; 执行效率快,(存储过程是在数据库的服务器端执行)
移植性差:(不同数据库不能移植)。
3.语法:
delimiter $  --声明存储过程结束符
create procedure pro_test()
begin
-- 多个sql语句
select * from employee;
end $
drop procedure pro_test;
参数列表:
IN ;输入参数。携带数据到存储过程
OUT:输出参数。从存储过程返回结果
INOUT:输入输出参数。
三种变量
全局变量(内置变量)
会话变量(当前客户端与数据库服务器端的一次连接中)
局部变量:(在存储过程中使用的变量)
查看全局变量:
show variables like 'character_%';
select @@character_set_client;
修改全局变量
set character_set_client=gbk;
set character_set_results=gbk;


设置会话变量
set @name='eric';
查看会话变量
select @name;


while循环
DELIMITER $
CREATE PROCEDURE pro_testWhile(IN num INT,OUT result INT)
BEGIN
DECLARE i INT DEFAULT 1;
DECLARE vsum INT DEFAULT 0;
WHILE i<num do 
SET vsum=vsum+i;
SET i=i+1;
END WHILE;
SET result=vsum;
END$


6.触发器。
作用:当操作某张表,同时触发动作或者行为。
建立触发器:create trigger tri_empAdd  after insert on employee for each row
insert into tri_log(content) values('员工表插入了一条记录');


7.mysql权限问题:
查看密码:select password('root') ;md5加密(32位,64位),单向加密,不能解密。
修改密码:
use mysql;
select *from user;
update user set password=password('123456') where user='root'
分配权限账户:
权限:create /,drop /,update ,insert,delete,/select,/all
grant select on day16.employee to 'eric' @'localhost/(192.168.10.13) ' identified by '123456';
%代表:本地和远程
mysql的备份和还原:
备份:mysqldump -u root -p day16 >I:/day16.sql;
还原:mysql -u root -p< I:/day16.sql;


外键声明:
级联操作
constraint employee_dept_fk foreign key(deptId) refferences dept(id) on update cascade on delete cascade
外键名称 外键 参考表(字段)



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值