一,cmd的了解
终端(shell)包含:1,cmd 2,poweishell
二,cmd连接数据库
1,host(默认IP localhost,如果IP是本机,可不写):IP
简写-h
2,port(默认3306,如果端口号是3306,可不写):端口
简写-P
3,user:账号
简写-u
4,password:密码
简写-p
cmd中输入mysql -u root -p,回车。再输入密码,回车,连接成功。退出exit。
PS:同理如果连接其他电脑数据库,如:
输入:mysql -h 192.144.148.91 -u ljtest -p ,回车后输入密码
MySQL中表的关系
Mysql是关系型数据库(表与表之间的逻辑关系)
如:学生表和班级表,学生表和成绩表
那么,学生表的姓名与班级表的姓名相对应,为方便修改操作,可由学生表的编号作为该学生的代表编号,其他表格的姓名均用学生编号代替,即学生表的编号=成绩表的学生编号, 如图
成绩表的学生编号1对应学生表的编号1的信息,及成绩表的学生编号1 就是“张三”
因此学生编号就是成绩表的“外键”(外键:建立表与表之间的关系)
因此我们首先准备好三张有关联的表格:学生表t_student,班级表t_class,成绩表t_grade
Mysql 在 cmd 上的具体操作(增删改查)
一,数据库和表格管理
1,输入命令 mysql -u rool -p,输入密码,连接成功
注意:连接数据库后,之后的语句运行结尾必须加英文分号(;)并回车
小技巧:光标处按键盘上下,可查询输过的命令
2,输入show databases;(简称bd) 查看数据库列表(nvicate会自动运行命令,所以会自动展示,cmd则需要手动)(databases=数据库)
注意:所有命令结尾都必须加上分号(英文版),否则无法运行命令,如果命令正确,漏掉分号,自动换行后直接补上英文分号即可。如果输错中文分号,可在自动换行后按crrl+c 先中止,再重新输入语句。
3,选择数据库
输入 use 数据库的名字; ,出现databases changed ,表示成功
4,查看列表
输入 Show tables ;,显示出该数据库的表列表
5,查看表格
输入Select *from 表名; ,展示出该表的所有数据(*表示所有字段,可根据情况修改)
即 select 字段1,字段2 from,就是只展示出该表的字段1,字段2,如图
输入 select sname from t_student;
以上完成后,就可以进行更具体的操作了!
通过条件查询表格明细
输入 Select *from 表名 where 字段1=值 and 字段2=值
如输入 select * from t_student where sex = ‘女’ and age > 25;
(因为“女”是字符串,所以必须加单引号)
查询出学生表的大于25岁女生
二,判断符与逻辑连接符的运用
判断符:= ,>,<,!=(不等于),in,is,like,between, 取反:加not,如 is not,not in 等
逻辑连接符:and,or 并且,或者的意思
In/is/like/between 的运用
1,in
如输入select *from t_student where address in (‘杭州’,'上海’);
查询出所有在上海杭州的学生的数据
取反同理,运用not in
可输入select *from t_student where address not in (‘杭州’,'上海’);
查询出所有不是杭州上海的学生的数据
2, is
如elect *from t_student where phone is null
查询出phone 是 null 的所有数据
取反同理,运用 is not (注意:is 的取反与其他不同,is 在前,not 在后)
可输入select *from t_student where phone is not null
3, between and
如select *from t_student where age between 18 and 25
查询出学生表中所有年龄在18-25之间的学生
引申:查出学生表中所有年龄在18-25之间的男学生
输入select *from t_student where age between 18 and 25 and sex=’男’;
注意: 语句当中的两个and,不是同一个意思
结果如图
取反同理,运用not between
可输入select *from t_student where age not between 18 and 25;
4, Like
如输入select *from t_student where sname like ‘张%’;
查询姓张的同学
同理查询凡结尾的学生
输入select *from t_student where sname ‘%凡’;
同理查询名字中有含有小的学生
输入select *from t_student where sname ‘%小%’;
三,sql的新增
输入 Insert into 表名(字段1,字段2,字段3) values (值1,值2,值3);
注意:新增是一行一行新增的
如在class 表中新增一行
输入 insert into t_class (id,cname,remark) values (5,’扬州’,’挺好’);
显示OK,已经新增,查看一下表明细确实新增一个字段
四,sql的修改
输入update 表名 set 字段1=值,字段2=值 where 条件;
表示修改表中某行某字段的值
如输入update c_class set teacher = ‘王也’ where id = 5;
显示OK,修改成功
查看一下表明细,确实修改成功咯
五,aql的删除
输入Delete from 表明 where 条件
如输入Delete from t_class where id = 5;
删除班级表id为5的字段(删除也是一行一行删除的)
显示ok,删除成功,结果如图
六,多表联系和查询
1,多表联系
输入Select * from 表1 join 表2 on 表1.字段1=表2.字段2; 将表1和表2联系起来
如 select * from t_student join t_class on t_student.cid = t_class.id;
或者可以指定字段显示,更便于查询重点数据
如select t_student.id,t_student.sname,t_class.cname,t_grade.chinese from t_student join t_class on t_student.cid = t_class.id join t_grade on t_garde.sid = t_student.id;
可显示出三表关联起来的指定数据信息,如图
2,取别名
因写字段时都必须带上表名,略显繁琐,因此可以用aql技巧 :用取别名方式简写表名或字段。
1)如何给字段取别名?
如先查询t_student表的id与名字数据
输入select id,sname from t_student;
那么针对这两个字段怎么简写字段?
可输入 select id as a,sname as b from t_student; (将id简写成a,将sname简写成b)
结果如图,显示出来的表格字段就被简化成a,b了
注意:若省略as,即select id a,sname b from t_student; 同样受用,因此as可省略
2)怎么给表名取别名
如select * from t_student join t_class on t_student.cid=t_class.id;
那么可以写成Select *from t_student as a join t_class as b on a.cid=b.id; (as可省略)
同样针对select t_student.id,t_student.sname,t_class.cname,t_grade.chinese from t_student join t_class on t_student.cid = t_class.id join t_grade on t_garde.sid = t_student.id;
可以写成 select a.id,a.sname,b.cname,c.chinese from t_student a join t_class b on a.cid=b.id join t_grade c on c.sid=a.id;
2,多表联查
只,需将联系的表Select * from 表1 join 表2 on 表1.字段1=表2.字段2 加上条件
即Select * from 表1 join 表2 on 表1.字段1=表2.字段2 where 字段1=值,字段2=值
如select a.id,a.sname,b.cname,c.chinese from t_student a join t_class b on a.cid=b.id join t_grade c on c.sid=a.id where c.chinese >100
显示出abc表联合的语文成绩大于100的学生信息,结果如图
七,Navicat sql 语句运行方式
在Navicat中选择数据库,选择查询,新建查询,将aql语句写到空白处,可美化sql,运行,结果出现
八,聚合函数(给表格做计算)
分别有:
计数count
最大值max
最小值min
平均值avg
求和sum
计数count
如 select count(*) from t_student
注意:最大值max,最小值min,平均值avg,求和sum只能用在数字上
如select count(*),max (age) , min(age) , avg(age),sum(age) from t_student;
显示出结果计数,最大年龄,最小年龄,平均年龄,年龄总和
九,课后题目
题目一:查询姓‘王’的学生个数
解答:输入语句select count(*) from t_student where sname like王%';
显示结果
题目二:查询数学比语文成绩高的所有学生的学号
解答:输入select a.id from t_student a join t_grade b on a.id=b.sid where b.math> b.chinese;
显示结果