《古代六扇门人员管理系统》
数据库 sixdoor
编码 utf8mb4
视图
查询官员等级
存储过程
CREATE DEFINER=`root`@`localhost` PROCEDURE `levelname`(IN g_name VARCHAR(20)) BEGINSELECT `name`,`level` FROM `servingofficials` INNER JOIN jobtitle onservingofficials.role = jobtitle.roleWHERE `name` = g_name; END CREATE DEFINER=`root`@`localhost` PROCEDURE `show_all`() BEGIN SELECT * from servingofficials; END
存储函数
CREATE FUNCTION getname(gid VARCHAR(20)) RETURNS VARCHAR(50) BEGINDECLARE out_name VARCHAR(50);SELECT `name` INTO out_name FROM servingofficialsWHERE servingofficials.id = gid; RETURN out_name; END;
触发器
DELIMITER // CREATE TRIGGER check_name BEFORE INSERT ON servingofficials FOR EACH ROW IF NEW.servingofficials.name = NULL THEN SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "输入的姓名不为空"; END IF// DELIMITER ;
CREATE TRIGGER `name` AFTER INSERT ON `servingofficials` FOR EACH ROW BEGINUPDATE servingofficials SET `name` = END;
外键
表已经建好时候
ALTER TABLE t_info ADD FOREIGN KEY (user_id) REFERENCES t_user(id); ALTER TABLE users ADD FOREIGN KEY (user_account) REFERENCES account(user_account);
建表时添加外键
create table users2(user_id char(10) not null,user_account char(10) not null,user_name varchar(10) not null,user_sex char(1) not null,user_age int(3) not null,user_telephone char(11) not null,user_level int(1) not null,primary key (user_id),foreign key(user_account) references account(user_account) );
字符校对 utf8mb4_general_ci
CREATE DATABASE `sixdoor` /*!40100 COLLATE 'utf8mb4_general_ci' */
查询官员几品
SELECT * FROM `servingofficials` INNER JOIN jobtitle onservingofficials.role = jobtitle.role;
SELECT `level` FROM `servingofficials` INNER JOIN jobtitle onservingofficials.role = jobtitle.roleWHERE `name`='陆九渊';
使用内连接
SELECT servingofficials.id,servingofficials.`name`,servingofficials.bday,servingofficials.role,jobtitle.`level` FROM `servingofficials` INNER JOIN jobtitle onservingofficials.role = jobtitle.role;
SELECT servingofficials.id,servingofficials.name,servingofficials.bday,servingofficials.role,jobtitle.level,salaries. Monthlysalaries,salaries.Romey FROM servingofficials INNER JOIN jobtitle onservingofficials.role = jobtitle.roleJOIN salaries ON jobtitle.level=salaries.level
视图创建
-
创建角色视图
CREATE VIEW `sixdoor`.`view_level` AS SELECT `name`,`level` FROM `servingofficials` INNER JOIN jobtitle onservingofficials.role = jobtitle.role;
-
创建salaries视图
CREATE VIEW `sixdoor`.`view_salaries` AS select `servingofficials`.`id` AS `id`,`servingofficials`.`name` AS `name`,`servingofficials`.`bday` AS `bday`,`servingofficials`.`role` AS `role`,`jobtitle`.`level` AS `level`,`salaries`.`Monthlysalaries` AS `Monthlysalaries`,`salaries`.`Romey` AS `Romey` from ((`servingofficials` join `jobtitle` on((`servingofficials`.`role` = `jobtitle`.`role`))) join `salaries` on((`jobtitle`.`level` = `salaries`.`level`)));
主外键的区别,主从表的区别
1、主键约束( PRIMARY KEY): Ⅰ、 唯一标识数据库表中的每条记录; Ⅱ、主键必须包含唯一的值; Ⅲ、主键列不能包含 NULL 值; Ⅳ、每个表都应该有一个主键,并且每个表只能有一个主键。(PRIMARY KEY 拥有自动定义的 UNIQUE 约束 2、外键约束(FOREIGN KEY): 一张表的外键是另一张表的主键,所以两张表就形成了关联关系。 外键取值规则:空值或参照的主键值。 (1)插入非空值时,如果主键表中没有这个值,则不能插入。 (2)更新时,不能改为主键表中没有的值。 (3)删除主键表记录时,你可以在建外键时选定外键记录一起级联删除还是拒绝删除。 (4)更新主键记录时,同样有级联更新和拒绝执行的选择。 3、mysql数据库中的主键和外键的作用: -------->简而言之,SQL的主键和外键就是对表起约束作用。 主键是能确定一条记录的唯一标识,比如,一条记录包括身份正号,姓名,年龄。身份证号是唯一能确定你这个人的,其他都可能有重复,所以,身份证号是主键。 外键用于与另一张表的关联。是能确定另一张表记录的字段,用于保持数据的一致性。 比如,A表中的一个字段,是B表的主键,那他就可以是A表的外键。 主表和从表: 主表(父表) 在数据库中建立的表格即Table,其中存在主键(primary key)用于与其它表相关联,并且作为在主表中的唯一性标识。 从表(子表) 以主表的主键(primary key)值为外键 (Foreign Key)的表,可以通过外键与主表进行关联查询。从表与主表通过外键进行关联查询。 关系及用法概述 从表数据依赖于主表,一般最后查询数据时把主表与从表进行关联查询。
最新的11-29号更新
12-1update,图中需要注明1-1,N-N的关系