一,cmd的了解

终端(shell)包含:1,cmd 2,poweishell




MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询


二,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。


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_02


PS:同理如果连接其他电脑数据库,如:

输入:mysql -h 192.144.148.91 -u ljtest -p ,回车后输入密码

MySQL中表的关系

Mysql是关系型数据库(表与表之间的逻辑关系)

如:学生表和班级表,学生表和成绩表

那么,学生表的姓名与班级表的姓名相对应,为方便修改操作,可由学生表的编号作为该学生的代表编号,其他表格的姓名均用学生编号代替,即学生表的编号=成绩表的学生编号, 如图


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_03


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_04


成绩表的学生编号1对应学生表的编号1的信息,及成绩表的学生编号1 就是“张三”

因此学生编号就是成绩表的“外键”(外键:建立表与表之间的关系)

因此我们首先准备好三张有关联的表格:学生表t_student,班级表t_class,成绩表t_grade


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_05


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_06


MySQL union 根据某个字段去重 sql根据某个字段去重查询_ci_07


Mysql 在 cmd 上的具体操作(增删改查)

一,数据库和表格管理

1,输入命令 mysql -u rool -p,输入密码,连接成功


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_08


注意:连接数据库后,之后的语句运行结尾必须加英文分号(;)并回车

小技巧:光标处按键盘上下,可查询输过的命令

2,输入show databases;(简称bd) 查看数据库列表(nvicate会自动运行命令,所以会自动展示,cmd则需要手动)(databases=数据库)


MySQL union 根据某个字段去重 sql根据某个字段去重查询_ci_09


注意:所有命令结尾都必须加上分号(英文版),否则无法运行命令,如果命令正确,漏掉分号,自动换行后直接补上英文分号即可。如果输错中文分号,可在自动换行后按crrl+c 先中止,再重新输入语句。

3,选择数据库

输入 use 数据库的名字; ,出现databases changed ,表示成功


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_10


4,查看列表

输入 Show tables ;,显示出该数据库的表列表


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_11


5,查看表格

输入Select *from 表名; ,展示出该表的所有数据(*表示所有字段,可根据情况修改)

即 select 字段1,字段2 from,就是只展示出该表的字段1,字段2,如图

输入 select sname from t_student;


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_12


以上完成后,就可以进行更具体的操作了!

通过条件查询表格明细

输入 Select *from 表名 where 字段1=值 and 字段2=值

如输入 select * from t_student where sex = ‘女’ and age > 25;

(因为“女”是字符串,所以必须加单引号)

查询出学生表的大于25岁女生


MySQL union 根据某个字段去重 sql根据某个字段去重查询_ci_13


二,判断符与逻辑连接符的运用

判断符:= ,>,<,!=(不等于),in,is,like,between, 取反:加not,如 is not,not in 等

逻辑连接符:and,or 并且,或者的意思

In/is/like/between 的运用

1,in

如输入select *from t_student where address in (‘杭州’,'上海’);

查询出所有在上海杭州的学生的数据


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_14


取反同理,运用not in

可输入select *from t_student where address not in (‘杭州’,'上海’);

查询出所有不是杭州上海的学生的数据


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_15


2, is

如elect *from t_student where phone is null

查询出phone 是 null 的所有数据


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_16


取反同理,运用 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之间的学生


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_17


引申:查出学生表中所有年龄在18-25之间的男学生

输入select *from t_student where age between 18 and 25 and sex=’男’;

注意: 语句当中的两个and,不是同一个意思

结果如图


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_18


取反同理,运用not between

可输入select *from t_student where age not between 18 and 25;

4, Like

如输入select *from t_student where sname like ‘张%’;

查询姓张的同学


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_19


同理查询凡结尾的学生

输入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,已经新增,查看一下表明细确实新增一个字段


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_20


四,sql的修改

输入update 表名 set 字段1=值,字段2=值 where 条件;

表示修改表中某行某字段的值

如输入update c_class set teacher = ‘王也’ where id = 5;

显示OK,修改成功

查看一下表明细,确实修改成功咯


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_21


五,aql的删除

输入Delete from 表明 where 条件

如输入Delete from t_class where id = 5;

删除班级表id为5的字段(删除也是一行一行删除的)

显示ok,删除成功,结果如图


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_22


六,多表联系和查询

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;

可显示出三表关联起来的指定数据信息,如图


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_23


2,取别名

因写字段时都必须带上表名,略显繁琐,因此可以用aql技巧 :用取别名方式简写表名或字段。

1)如何给字段取别名?

如先查询t_student表的id与名字数据

输入select id,sname from t_student;


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_24


那么针对这两个字段怎么简写字段?

可输入 select id as a,sname as b from t_student; (将id简写成a,将sname简写成b)

结果如图,显示出来的表格字段就被简化成a,b了


MySQL union 根据某个字段去重 sql根据某个字段去重查询_ci_25


注意:若省略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;


MySQL union 根据某个字段去重 sql根据某个字段去重查询_sql针对某字段去重查询_26


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的学生信息,结果如图


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_27


七,Navicat sql 语句运行方式

在Navicat中选择数据库,选择查询,新建查询,将aql语句写到空白处,可美化sql,运行,结果出现


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_28


八,聚合函数(给表格做计算)

分别有:

计数count

最大值max

最小值min

平均值avg

求和sum

计数count

如 select count(*) from t_student


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_29


注意:最大值max,最小值min,平均值avg,求和sum只能用在数字上

如select count(*),max (age) , min(age) , avg(age),sum(age) from t_student;

显示出结果计数,最大年龄,最小年龄,平均年龄,年龄总和


MySQL union 根据某个字段去重 sql根据某个字段去重查询_数据库_30


九,课后题目

题目一:查询姓‘王’的学生个数

解答:输入语句select count(*) from t_student where sname like王%';

显示结果


MySQL union 根据某个字段去重 sql根据某个字段去重查询_ci_31


题目二:查询数学比语文成绩高的所有学生的学号

解答:输入select a.id from t_student a join t_grade b on a.id=b.sid where b.math> b.chinese;

显示结果


MySQL union 根据某个字段去重 sql根据某个字段去重查询_字段_32