问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

navicat跟mysql有区别么

发布网友 发布时间:2022-04-10 18:46

我来回答

2个回答

懂视网 时间:2022-04-10 23:07

内容回顾

select distinct 字段1,字段2,。。。 from 表名
  where 分组之前的过滤条件
  group by 分组条件
  having 分组之后过滤条件
  order by 排序字段1 asc,排序字段2 desc
  limit 5,5

as语法中给某个查询结果起别名的时候需要把查询语句中的分号去除
(select name,salary*12 as '年薪' from emp) as t1;

# 一个字段展示用户名和年龄
select concat(name,':',age) as info from emp;

# 字段为NAME和AGE,值为‘NAME:jason’,'AGE:18'
select concat("NAME:",name) as NAME,concat("AGE:",age) as AGE from emp;

# 如果拼接的符号是统一的可以用
select concat_ws(':',name,age,sex) as info from emp;

# 1.子查询相关
# 查询平均年轻在25岁以上的部门名
select name from dep 
  where id in 
  (select dep_id from emp group by dep_id having avg(age)>25);

select dep.name from emp inner join dep on emp.dep_id = dep.id 
  group by dep.name
  having avg(age) > 25;

# exist(了解)
EXISTS关字键字表示存在。在使用EXISTS关键字时,内层查询语句不返回查询的记录,
而是返回一个真假值,True或False。
当返回True时,外层查询语句将进行查询
当返回值为False时,外层查询语句不进行查询。
select * from employee
 where exists
 (select id from department where id > 3);

select * from employee
 where exists
 (select id from department where id > 250);

下载地址:https://pan.baidu.com/s/1bpo5mqj

掌握:
#1. 测试+链接数据库
#2. 新建库
#3. 新建表,新增字段+类型+约束
#4. 设计表:外键
#5. 新建查询
#6. 建立表模型

#注意:
批量加注释:ctrl+?键
批量去注释:ctrl+shift+?键

练习题

导出的sql语句代码

/*
 数据导入:
 Navicat Premium Data Transfer

 Source Server  : localhost
 Source Server Type : MySQL
 Source Server Version : 50624
 Source Host  : localhost
 Source Database : sqlexam

 Target Server Type : MySQL
 Target Server Version : 50624
 File Encoding  : utf-8

 Date: 10/21/2016 06:46:46 AM
*/

SET NAMES utf8;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for `class`
-- ----------------------------
DROP TABLE IF EXISTS `class`;
CREATE TABLE `class` (
 `cid` int(11) NOT NULL AUTO_INCREMENT,
 `caption` varchar(32) NOT NULL,
 PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of `class`
-- ----------------------------
BEGIN;
INSERT INTO `class` VALUES ('1', '三年二班'), ('2', '三年三班'), ('3', '一年二班'), ('4', '二年九班');
COMMIT;

-- ----------------------------
-- Table structure for `course`
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course` (
 `cid` int(11) NOT NULL AUTO_INCREMENT,
 `cname` varchar(32) NOT NULL,
 `teacher_id` int(11) NOT NULL,
 PRIMARY KEY (`cid`),
 KEY `fk_course_teacher` (`teacher_id`),
 CONSTRAINT `fk_course_teacher` FOREIGN KEY (`teacher_id`) REFERENCES `teacher` (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of `course`
-- ----------------------------
BEGIN;
INSERT INTO `course` VALUES ('1', '生物', '1'), ('2', '物理', '2'), ('3', '体育', '3'), ('4', '美术', '2');
COMMIT;

-- ----------------------------
-- Table structure for `score`
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
 `sid` int(11) NOT NULL AUTO_INCREMENT,
 `student_id` int(11) NOT NULL,
 `course_id` int(11) NOT NULL,
 `num` int(11) NOT NULL,
 PRIMARY KEY (`sid`),
 KEY `fk_score_student` (`student_id`),
 KEY `fk_score_course` (`course_id`),
 CONSTRAINT `fk_score_course` FOREIGN KEY (`course_id`) REFERENCES `course` (`cid`),
 CONSTRAINT `fk_score_student` FOREIGN KEY (`student_id`) REFERENCES `student` (`sid`)
) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of `score`
-- ----------------------------
BEGIN;
INSERT INTO `score` VALUES ('1', '1', '1', '10'), ('2', '1', '2', '9'), ('5', '1', '4', '66'), ('6', '2', '1', '8'), ('8', '2', '3', '68'), ('9', '2', '4', '99'), ('10', '3', '1', '77'), ('11', '3', '2', '66'), ('12', '3', '3', '87'), ('13', '3', '4', '99'), ('14', '4', '1', '79'), ('15', '4', '2', '11'), ('16', '4', '3', '67'), ('17', '4', '4', '100'), ('18', '5', '1', '79'), ('19', '5', '2', '11'), ('20', '5', '3', '67'), ('21', '5', '4', '100'), ('22', '6', '1', '9'), ('23', '6', '2', '100'), ('24', '6', '3', '67'), ('25', '6', '4', '100'), ('26', '7', '1', '9'), ('27', '7', '2', '100'), ('28', '7', '3', '67'), ('29', '7', '4', '88'), ('30', '8', '1', '9'), ('31', '8', '2', '100'), ('32', '8', '3', '67'), ('33', '8', '4', '88'), ('34', '9', '1', '91'), ('35', '9', '2', '88'), ('36', '9', '3', '67'), ('37', '9', '4', '22'), ('38', '10', '1', '90'), ('39', '10', '2', '77'), ('40', '10', '3', '43'), ('41', '10', '4', '87'), ('42', '11', '1', '90'), ('43', '11', '2', '77'), ('44', '11', '3', '43'), ('45', '11', '4', '87'), ('46', '12', '1', '90'), ('47', '12', '2', '77'), ('48', '12', '3', '43'), ('49', '12', '4', '87'), ('52', '13', '3', '87');
COMMIT;

-- ----------------------------
-- Table structure for `student`
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
 `sid` int(11) NOT NULL AUTO_INCREMENT,
 `gender` char(1) NOT NULL,
 `class_id` int(11) NOT NULL,
 `sname` varchar(32) NOT NULL,
 PRIMARY KEY (`sid`),
 KEY `fk_class` (`class_id`),
 CONSTRAINT `fk_class` FOREIGN KEY (`class_id`) REFERENCES `class` (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of `student`
-- ----------------------------
BEGIN;
INSERT INTO `student` VALUES ('1', '男', '1', '理解'), ('2', '女', '1', '钢蛋'), ('3', '男', '1', '张三'), ('4', '男', '1', '张一'), ('5', '女', '1', '张二'), ('6', '男', '1', '张四'), ('7', '女', '2', '铁锤'), ('8', '男', '2', '李三'), ('9', '男', '2', '李一'), ('10', '女', '2', '李二'), ('11', '男', '2', '李四'), ('12', '女', '3', '如花'), ('13', '男', '3', '刘三'), ('14', '男', '3', '刘一'), ('15', '女', '3', '刘二'), ('16', '男', '3', '刘四');
COMMIT;

-- ----------------------------
-- Table structure for `teacher`
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher` (
 `tid` int(11) NOT NULL AUTO_INCREMENT,
 `tname` varchar(32) NOT NULL,
 PRIMARY KEY (`tid`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of `teacher`
-- ----------------------------
BEGIN;
INSERT INTO `teacher` VALUES ('1', '张磊老师'), ('2', '李平老师'), ('3', '刘海燕老师'), ('4', '朱云海老师'), ('5', '李杰老师');
COMMIT;

SET FOREIGN_KEY_CHECKS = 1;

拷贝上述代码,新建一个.sql文件,保存到桌面

打开navicat新建数据库day41,选中新建的数据库鼠标右键选择运行SQL文件

弹出文件框,选中刚刚保存到桌面的.sql文件即可

快速建表

#准备表、记录 >>> 命令行
mysql> create database db1;
mysql> use db1;
mysql> source /root/init.sql

# navicat建表

练习题

1、查询所有的课程的名称以及对应的任课老师姓名
4、查询平均成绩大于八十分的同学的姓名和平均成绩
7、 查询没有报李平老师课的学生姓名
8、 查询没有同时选修物理课程和体育课程的学生姓名
9、 查询挂科超过两门(包括两门)的学生姓名和班级
# 参考答案
#1、查询所有的课程的名称以及对应的任课老师姓名
SELECT
 course.cname,
 teacher.tname
FROM
 course
INNER JOIN teacher ON course.teacher_id = teacher.tid;
#4、查询平均成绩大于八十分的同学的姓名和平均成绩
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;
#7、 查询没有报李平老师课的学生姓名(找出报名李平老师课程的学生,然后取反就可以)
SELECT
 student.sname
FROM
 student
WHERE
 sid NOT IN (
 SELECT DISTINCT
  student_id
 FROM
  score
 WHERE
  course_id IN (
  SELECT
   course.cid
  FROM
   course
  INNER JOIN teacher ON course.teacher_id = teacher.tid
  WHERE
   teacher.tname = '李平老师'
  )
 );
#8、 查询没有同时选修物理课程和体育课程的学生姓名(没有同时选修指的是选修了一门的,思路是得到物理+体育课程的学生信息表,然后基于学生分组,统计count(课程)=1)
SELECT
 student.sname
FROM
 student
WHERE
 sid IN (
 SELECT
  student_id
 FROM
  score
 WHERE
  course_id IN (
  SELECT
   cid
  FROM
   course
  WHERE
   cname = '物理'
  OR cname = '体育'
  )
 GROUP BY
  student_id
 HAVING
  COUNT(course_id) = 1
 );

# 9、 查询挂科超过两门(包括两门)的学生姓名和班级
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)
 ;

pymysql模块

# 1.安装:pip3 insatll pymysql

# 2.代码链接
import pymysql
#链接
conn=pymysql.connect(
 host='localhost',
 user='root',
 password='123',
 database='egon',
 charset='utf8')
#游标
cursor=conn.cursor() #执行完毕返回的结果集默认以元组显示
#cursor=conn.cursor(cursor=pymysql.cursors.DictCursor) # 以字典的方式显示数据

# 3.pymysql操作数据库
#执行sql语句
user = input(">>>:").strip()
pwd = input(">>>:").strip()
sql='select * from userinfo where name="%s" and password="%s"' %(user,pwd) #注意%s需要加引号

rows=cursor.execute(sql) #执行sql语句,返回sql查询成功的记录数目
# 获取真实数据cursor.fetchone(),cursor.fetchall(),cursor.fetchmany(),类似管道取值,获取一条,所有,多条

cursor.scroll(1,'relative') # 相对移动
cursor.scroll(3,'absolute') # 绝对移动


cursor.close()
conn.close()

sql注入问题

# 不要手动去拼接查询的sql语句
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username='%s' and password='%s'"%(username,password)

# 用户名正确
username >>>: jason' -- jjsakfjjdkjjkjs
# 用户名密码都不对的情况
username >>>: xxx' or 1=1 --asdjkdklqwjdjkjasdljad
password >>>: ''

增删改

# 增
sql = "insert into user(username,password) values(%s,%s)"
rows = cursor.(sql,('jason','123'))

# 修改
sql = "update user set username='jasonDSB' where id=1"
rows = cursor.excute(sql)

"""
增和改单单执行excute并不会真正影响到数据,需要再执行conn.commit()才可以完成真正的增改
"""

# 一次插入多行记录
res = cursor,excutemany(sql,[(),(),()]

Navicat介绍及pymysql模块

标签:ima   upd   展示   core   reference   structure   strong   set   注释   

热心网友 时间:2022-04-10 20:15

Navicat Premium是一套数据库管理工具,结合了其它Navicat成员的功能,支持单一程序同时连接到MySQL、MariaDB、SQL Server、SQLite、Oracle和PostgreSQL数据库。Navicat Premium可满足现今数据库管理系统的使用功能,包括存储过程、事件、触发器、函数、视图等。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
为什么来大姨妈胸会胀 少儿学什么舞蹈 青年学什么舞蹈好 成年人学什么舞蹈 福州企业最低工资标准 2013年厦门的底薪是多少 生产要素的需求有哪些性质 生产要素的需求有何特点? 什么是生产要素需求 微观经济学要素需求什么是条件要素需求?它和要素需求有什么不同?_百度... 数孔弯管机辅入边程视频讲解? 数控弯管机如何储存程序 如何让数控弯管机加工程序简单,节约成本 我想学中山奥美森公司的数控弯管机的编程,不知道在这里能不能查到。有的话,帮帮忙。谢谢。 数控机床的控制语言有哪些? CNC弯管机怎么编程?要具体的,最好能给我发些资料的,关键是YBC坐标怎么去输入,QQ邮箱420059927@qq.com 如何通过CAD输出W27SK-60B三维数控弯管机所需要的编程数据 傅声不是死了吗怎么还有1984年的电影那 请问谁有数控弯管机的实例编程。我参考用。 香港清水湾是傅声死去的地方吗 求助数控弯管机编程 刘德华在电影《上海滩十三太保》中扮演的是一个怎样的人物? CNC三轴数控弯管机Y B C,怎么计算和编程,最好能详细说明,有公式。 73年李小龙死了。83年傅声死了。。。93年黄家驹死了。03年张国荣死了。2013年呢 数控弯管机编程实例教程YBC的 甄妮和罗文是怎么死的 数控弯管机编程的参数怎么算的 38cnc弯管机如何编程 香港电影 生死搏斗 男主角 数控弯管机如何运用编程弯曲管材技术知识 担保形式 手机使用过程中出现卡顿,使用的是荣耀手机? navicat for mysql 和 navicat Premium有什么区别 华为20i手机很卡怎么办 刚买的华为荣耀20i为啥,非常的卡? 荣耀x20的8/128对比荣耀x30的8/256那? 荣耀x30下巴宽度多少毫米 为什么,我每次卤的鸡爪子冷了之后都是连在一起的呢,要怎样才不会粘连在一起啊 卤鸡脚怎么不会粘在一起 navicat for mysql是干什么用的 微信里面有朋友点赞可是怎么回复啊 跟&quot;各种各样&quot;类似的词语有哪些? “各种各样”类似的词语有哪些? 各种各样类似的词语 类似“各种各样”的四字词语有哪些? “各式各样”类似的成语有哪些? “各种各样”类似的词语 类似“各种各样”的词语有哪些? 四字词语:各式各样,各行各业,还有类似的词吗?作业 四字词语:各式各样,各行各业,还有类似的词吗