当前位置: 首页 > news >正文

国家网站备案查询系统营销型网站建设目标

国家网站备案查询系统,营销型网站建设目标,电子商务加盟网站建设,黄石企业网站设计外键 MySQL可以使用外键来保持表之间的关系完整性。 要设置外键#xff0c;可以按照以下步骤进行操作#xff1a; 在创建表时#xff0c;使用FOREIGN KEY关键字来指定外键列#xff1a; CREATE TABLE table1 (id INT PRIMARY KEY,name VARCHAR(50),table2_id INT,FOREI…外键 MySQL可以使用外键来保持表之间的关系完整性。 要设置外键可以按照以下步骤进行操作 在创建表时使用FOREIGN KEY关键字来指定外键列 CREATE TABLE table1 (id INT PRIMARY KEY,name VARCHAR(50),table2_id INT,FOREIGN KEY (table2_id) REFERENCES table2(id) );使用ALTER TABLE语句来添加外键列 ALTER TABLE table1 ADD CONSTRAINT fk_table1_table2_id FOREIGN KEY (table2_id) REFERENCES table2(id);其中fk_table1_table2_id是外键约束的名称可以自定义但不能与其他约束重名。 使用ALTER TABLE语句来删除外键列 ALTER TABLE table1 DROP FOREIGN KEY fk_table1_table2_id;以上是MySQL设置外键的基本步骤需要注意的是要设置外键必须满足以下条件 表必须使用InnoDB引擎外键列和参考列必须具有相同的数据类型和大小参考列必须具有索引外键约束必须唯一命名。 mysql表与表之间的关系 MySQL表与表之间可以有多种关系包括 一对一关系两个表中的每个记录都对应着另一个表中的一个记录。这种关系很少用到因为可以将这两个表合并成一个表。 一对多关系一个表中的每个记录都对应着另一个表中的多条记录而另一个表中的每个记录只对应着一个表中的记录。比如一个订单可以对应多个商品。 多对一关系一个表中的多个记录对应着另一个表中的一个记录而另一个表中的每个记录只对应着一个表中的记录。比如多个商品可能被添加到同一个订单中。 多对多关系两个表中的记录之间存在多对多的关系。比如一个学生可以选修多门课程而一门课程也可以被多个学生选修。 在MySQL中通过使用外键来建立表与表之间的关系。外键是一个指向另一个表中的一条记录的字段用于确保数据的完整性和一致性。通过在一个表中设置一个外键可以将这个表和另一个表关联起来。 注意事项 1.在创建表的时候 需要先创建被关联表(没有外键字段的表) 2.在插入新数据的时候 应该先确保被关联表中有数据 3.在插入新数据的时候 外键字段只能填写被关联表中已经存在的数据 4.在修改和删除被关联表中的数据的时候 无法直接操作     如果想要数据之间自动修改和删除需要添加额外的配置  一对多的表关系 以员工表和部门表为例     先站在员工表         问一个员工能否有多个部门?         答不能     在站在部门表         问一个部门能否有多个员工?         答可以 结论一个可以一个不可以表关系就是一对多 表关系中没有多对一 如何在SQL层面建立一对多的关系: 先把基础表的中基础字段建立出来然后在考虑外键字段 create table emp(id int primary key auto_increment,name varchar(32),age int,dep_id int,foreign key(dep_id) references dep(id) # 让两张表建立了外键关系on update cascade # 级联更新on delete cascade # 级联删除 );create table dep(id int primary key auto_increment,dep_name varchar(32),dep_desc varchar(32) );## 录入数据 insert into emp(name, age, dep_id) values(kevin, 20, 1); insert into dep(dep_name,dep_desc) values(人事部, 管理人才);#删除iddelete from emp where id2;#修改IDupdata dep emp set id200 where id1; 多对多表关系 以图书表和作者表为例 我们站在图书表的角度     问一本图书能不能有多个作者?     答可以 我们再站在作者表的角度     问一个作者能不能写多本书     答可以 得出结论如果两个都可以那么表关系就是多对多 针对于多对多的表关系外键字段建在第三张表中 在SQL层面建立多对多的表关系 create table book(id int primary key auto_increment,title varchar(32),price decimal(8,2) );create table author(id int primary key auto_increment,name varchar(32),addr varchar(32) );create table book2author(id int primary key auto_increment,book_id int,author_id int,foreign key(book_id) references author(id) # 让两张表建立了外键关系on update cascade # 级联更新on delete cascade, # 级联删除foreign key(author_id) references book(id) # 让两张表建立了外键关系on update cascade # 级联更新on delete cascade );insert into book(title, price) values(金瓶梅, 1000); insert into book(title, price) values(西游记, 2000); insert into author(name, addr) values(zhangsan, beijing); insert into author(name, addr) values(lisi, shanghai);insert into book2author(book_id, author_id) values(1, 1); insert into book2author(book_id, author_id) values(1, 2); insert into book2author(book_id, author_id) values(2, 1); insert into book2author(book_id, author_id) values(2, 2);查看列表select * from author; select * from book; select * from book2author;查看特定idselect * from book2author where book_id 1; 一对一表关系  以作者表和作者详情表为例 # 以作者表和作者详情表为例 外键关系建在哪里# 两张表都可以但是推荐建在查询频率较高的一张表在SQL层建立一对一的关系create table author1(id int primary key auto_increment,name varchar(32),gender varchar(32),author_detail_id int unique,foreign key(author_detail_id) references author_detail(id)on update cascadeon delete cascade );create table author_detail(id int primary key auto_increment,qq varchar(32),email varchar(32) );mysql多表查询 子查询 1. 子查询# 查询kevin的部门名称1. 应该先查询kevin 的部门编号(部门表的id)select dep_id from emp where namekevin;2. 然后拿着查询出来的部门id去dep表中查询部门名称select *from dep where id (select dep_id from emp where namekevin);#Kevin后面没有分号子查询就是一条SQL的执行结果就是另外一条SQL的执行条件!其实就是分步操作 连表查询(重点) 把多张有关系的表链接成一张大的虚拟表连接出来的虚拟表不是实际存在的它是在内存中存储然后按照单表查询.专业的连表语法inner join # 内连接查询的是两张表中都有的数据left join # 左连接以左表为基准查询左表中所有的数据右表没有的数据使用NULL填充right join # 右连接以右表为基准查询右表中所有的数据右表没有的数据使用NULL填充union # 连接两个SQL语句的结果select * from emp left join dep on emp.dep_iddep.idunionselect * from emp right join dep on emp.dep_iddep.id;连表可以连很多张表不只是两张大多数都是两张select * from emp left join dep on emp.dep_iddep.id inner join A on A.iddep.A_id where ...; mysql多表查询练习题 数据准备 create table dep(id int primary key auto_increment,name varchar(20) );create table emp(id int primary key auto_increment,name varchar(20),sex enum(male,female) not null default male,age int,dep_id int ); 如果两张表没有建立强制的约束关系就使用逻辑意义上的关联 #插入数据 insert into dep values (200,技术), (201,人力资源), (202,销售), (203,运营), (205,保洁) ;insert into emp(name,sex,age,dep_id) values (jason,male,18,200), (egon,female,48,201), (kevin,male,18,201), (nick,male,28,202), (owen,male,18,203), (jerry,female,18,204); 多道练习题 1、查询所有的课程的名称以及对应的任课老师姓名 2、查询平均成绩大于八十分的同学的姓名和平均成绩 3、查询没有报李平老师课的学生姓名 4、查询挂科超过两门(包括两门)的学生姓名和班级 练习题答案 -- 1、查询所有的课程的名称以及对应的任课老师姓名 -- SELECT --     teacher.tname, --     course.cname  -- FROM --     teacher --     INNER JOIN course ON teacher.tid course.teacher_id; ------------------------------------------------------------------------------------- -- 2、查询平均成绩大于八十分的同学的姓名和平均成绩 # 1.先确定需要使用到的表  # 2.在思考多表查询的方式 # 第一步先查询成绩表中 平均成绩大于80的学生编号 # 1.1 按照学生id分组并获取平均成绩 -- select student_id,avg(num) from score group by student_id; # 1.2 筛选出平均成绩大于80的数据  (针对聚合函数的字段结果 最好起别名防止冲突) -- select student_id,avg(num) as avg_num from score group by student_id having avg(num) 80; # 1.3 将上述SQL的结果与student表拼接 -- SELECT --     student.sname, --     t1.avg_num  -- FROM --     student --     INNER JOIN ( SELECT student_id, avg( num ) AS avg_num FROM score GROUP BY student_id HAVING avg( num ) 80 ) AS t1 ON student.sid t1.student_id; ------------------------------------------------------------------------------------------------ -- 3、查询没有报李平老师课的学生姓名 # 1.先查询李平老师教授的课程编号 -- select course.cid from course where teacher_id   -- (select tid from teacher where tname 李平老师); # 2.根据课程id号筛选出所有报了的学生id号 -- select distinct score.student_id from score where course_id in (select course.cid from course where teacher_id   -- (select tid from teacher where tname 李平老师)); # 3.去学生表中根据id号取反筛选学生姓名 -- SELECT --     student.sname  -- FROM --     student  -- WHERE --     sid NOT IN ( -- SELECT DISTINCT --     score.student_id  -- FROM --     score  -- WHERE --     course_id IN ( SELECT course.cid FROM course WHERE teacher_id ( SELECT tid FROM teacher WHERE tname 李平老师 ) )  --     ); ------------------------------------------------------------------------------------------------ -- 4、查询挂科超过两门(包括两门)的学生姓名和班级 # 1.先筛选出小于60分的数据 -- select * from score where num 60; # 2.按照学生id分组 然后统计挂科数量 -- select student_id,count(course_id) from score where num 60 group by student_id; # 3.筛选出挂科超过两门的学生id -- select student_id from score where num 60 group by student_id -- having count(course_id) 2; # 4.先将上述结果放在一边 去连接student和class表 SELECT     student.sname,     class.caption  FROM     class     INNER JOIN student ON class.cid student.class_id  WHERE     student.sid IN ( SELECT student_id FROM score WHERE num 60 GROUP BY student_id HAVING count( course_id ) 2 ); Navicat可视化软件 Navicat是一款非常流行的数据库管理工具它支持多种数据库类型包括MySQL、Oracle、SQL Server、PostgreSQL等。本教程将介绍Navicat 16的使用方法。 1.下载和安装Navicat 16 首先你需要从官网下载Navicat 16的安装程序然后按照提示进行安装。安装完成后打开Navicat 16。 2.连接到数据库 在Navicat 16的主界面中点击左侧的“连接”按钮然后选择你要连接的数据库类型。在弹出的对话框中输入连接的相关信息包括主机名、用户名、密码等。点击“测试连接”按钮确认连接成功后点击“确定”按钮完成连接。 3.创建数据库 在Navicat 16中创建数据库非常简单。在连接成功后右键单击左侧的数据库列表选择“新建数据库”选项。在弹出的对话框中输入数据库的名称和字符集然后点击“确定”按钮即可完成数据库的创建。 3.1创建表 在Navicat 16中创建表非常简单。在连接成功后右键单击你要创建表的数据库选择“新建表”选项。在弹出的对话框中输入表的名称和字段信息然后点击“确定”按钮即可完成表的创建。 3.2导入数据 在Navicat 16中导入数据也非常简单。在连接成功后右键单击你要导入数据的表选择“导入数据”选项。在弹出的对话框中选择需要导入的文件然后点击“确定”按钮即可完成数据导入。 3.3查询数据 在Navicat 16中查询数据非常简单。在连接成功后双击你要查询的表然后在弹出的“数据浏览器”窗口中输入查询条件然后点击“执行查询”按钮即可查询到相关数据。 3.4修改数据 在Navicat 16中修改数据也非常简单。在连接成功后双击你要修改的表在弹出的“数据浏览器”窗口中选择你要修改的数据然后双击对应的单元格进行修改修改完成后点击保存按钮即可完成数据修改。 3.5导出数据 在Navicat 16中导出数据也非常简单。在连接成功后右键单击你要导出数据的表选择“导出数据”选项。在弹出的对话框中选择导出的文件格式和路径然后点击“确定”按钮即可导出数据 END
http://www.hkea.cn/news/14350249/

相关文章:

  • 外包网站有哪些惠州惠阳网站建设
  • 石狮交通和建设局网站wordpress模板工作室
  • 提供网站建设服务平台中国建设银行福清分行网站
  • 莆田市商城网站建设用子域名安装wordpress
  • 太原建设工程信息网站建立网站官网
  • 建设网站的企业有哪些请人帮忙做淘宝网站多少钱
  • 微网站建设教程视频教程网站建设会计科目
  • 无锡网站制作有哪些石家庄网站制作找谁
  • 网站建设课程心得ui软件
  • 网站链接维护怎么做制作一个静态网站的步骤
  • 成都摄影网站建设网站开发 群
  • 公司官方网站制作网易企业邮箱登录入口怎么登录
  • 商城类网站如何做网络运维培训
  • 阿里云网站建设好用吗wordpress 登陆不跳转
  • 网站logo怎么做的快速生成网页的软件
  • 利用国外免费空间做网站网页推广怎么做
  • 西安seo网站建设Html5移动网站
  • 做网站的软件图标博罗做网站
  • app资源网站开发装潢网站模板
  • 石家庄网站营销wordpress禁止访问txt
  • 重庆注册公司核名在哪个网站重庆市建设网站
  • 90设计网站怎么绑定手机号河北黄页网
  • 教育网站前置审批建立起以什么会晤机制为引领
  • 邢台市建设局网站揭阳网站建设网站
  • 提高网站粘性临沂网站排名
  • 长春网站建设哪家好亚马逊怎么做网站推广
  • php网站只能打开首页微信如何创建自己的公众号
  • 个体户 网站建设学校官网网页设计模板
  • 有网站是做水果原产地代发的吗网站运营的主要工作内容
  • 网站开发工程师前景怎么样网络营销的功能有哪些?