mysql80怎么新建查询_sql语句的基本应用

提示:SQL语句中的标点均由英文状态下输入!

一、连接数据库

使用快捷键Win+R调出运行窗口,在运行窗口中输入cmd,并回车,即可调出DOS控制台

打开DOS控制台后先连接我们的数据库,输入以下代码,然后输入密码即连接数据库

mysql -u 数据库的用户名 -p

连接成功后,我们首先要显示出我们的数据库,使用命令

show databases;

输入命令后我们就能够看到我们的数据库信息,这时我们虽然能看见我们的数据库但是还不能够使用,要使用某个数据库,就要输入命令

use 数据库名;

输入命令选择我们的数据库后,会提示我们 Database changed,此时我们无法看到我们数据库中的表,输入命令,就能够显示出我们数据库中的表。

show tables;

显示某张表的详细数据输入命令,这样我们的数据库就连接成功了

select * from 表名 ;

二、插入数据

使用insert into 命令向表中插入具体的数据,注意数据要与字段名一一对应,例如insert into t_student (id,sname,age,phone) values (100,‘增加数据’,‘100’,‘17852400833’);

增加字符串时,用英文状态下的引号引起来

当添加一条数据时,若某个字段为必填字段,则使用insert into命令时必须为此字段进行赋值,否则将会报错。

insert into 表名 (字段1,字段2,字段3,字段4) values (数据1,数据2,数据3,数据4);

三、更改数据

使命update命令更改数据库中的信息,例如将id为100的数据更改为id为101,名字改为“更改数据”,注意where后跟限制条件,可以跟多重限制条件用and进行连接

update 表名 set 字段1 =数据1,字段2 =数据2 where id = 101;

如果不适用where条件进行限制,则会将表中所有记录的指定字段都进行更新。

四、删除数据

delete from 表名 where 限制条件;

不使用where限制条件时将会删除整张表中的数据

五、查找数据

使用命令可以查找表中的全部数据

select * from 表名;

使用命令,可以查找并显示对应字段的数据

select 字段1,字段2,字段3 from 表名;

可以在查询语句后加上where条件限制,对数据进行筛选,比如筛选年龄大于20岁的男生:select name, sex,age from t_student where age>20 and sex = ‘男’;

select 字段1,字段2,字段3 from 表名 where 字段名限制条件;

where的限制条件有很多,例如查询姓王的所有学生 like

select * from t_student where name like '王%';

查询名字中带“文”的所有学生 like

select * from t_student where name like '%文%';

查询名字以“浩”的所有学生 like

select * from t_student where name like '%浩';

判断字符串时用 is

select * from t_student where name is ‘刘大宝’;

查询id是 1 id是3 id是5的学生 in()

select * from t_student where id in (1,3,5);

查询某个范围内的信息,例如年龄在18和25之间的学生信息 between …and…

select * from t_student where age between 18 and 25;

六、多表联查

上边内容仅仅是对单张表进行操作,但是在实际生活和工作中,往往需要多张表格共同使用,也就是需要将多张表联合起来进行操作,使用 join on 命令。

此时就需要引入一个新的名词—外键,也就是说一个表的某个字段如cid能用来连接另一张表,那么cid就是另一张表的的外键,例如

有一张学生表和班级表

此时输入命令,通过外键将学生表的和班级表连连起来,此时学生表中的cid就叫做班级表的一个外键

select * from t_student join t_class on t_student.cid = t_class.id;

select * from 表名1 join 表名2 on 表名1.cid = 表名2.id;

其中由于查询时需要显示具体的字段名(t_class.id)表名较长时,操作会比较麻烦,所有有一种简单方法 as 为表去一个简化的名,实际表名不变,只是逻辑上改为取的别名

如连接学生表与班级表,我们就可以使用简化的方法

select * from t_student as s join t_class as c on s.cid =c.id;

将 t_student重命名为s 将t_class 重命名为 c

使用中 as 可以省略

select * from t_student s join t_class c on s.cid =c.id;

将 t_student重命名为s 将t_class 重命名为 c

数据库作业:

1、 用SQL语句创建以下三张表,要求字段属性要求如图所示。

学生表:t_student

1.连接数据库

指令:mysql -u root -p;然后输入密码,成功连接数据库

2.查看数据库

指令:show database;

3.创建数据库

指令:create database test;

4.使用数据库

指令:use test;

5.创建学生表

指令:create table t_student1(

id int(16) not null primary key auto_increment,

sname varchar(25) not null,

sex varchar(25),

age int(16),

phone varchar(25),

address varchar(25),

cid int(255),

remark varchar(25)

);

班级表:t_class

6.创建班级表

指令:

create table t_class(

id int(11) not null primary key auto_increment,

cname varchar(25) not null,

teacher varchar(25),

remark varchar(25)

);

成绩表:t_grade

7.创建成绩表

指令:

create table t_grade(

id int(16) not null primary key auto_increment,

sid int(11),

chinese varchar(25) ,

math varchar(25),

english varchar(25),

remark varchar(25)

);

2、 用SQL语句,分别在三张表中插入数据。

插入学生表: insert into t_student values(9,'星星','女',29,'13456767798','北京',1,''),

(8,'张辉','男',19,'13456767558','广州',1,''),(7,'刘明','男',18,'13422767798','乌

鲁木齐',2,''),(6,'刘飞','男',16,'13455667798','杭州',3,'');

插入班级表:insert into t_class values(1,"1班","王爷",""),(2,"2班","汪华",""),(3,"3班

","王爷","");

注意:mysql> insert into t_class values(1,"1班","王爷",""),(2,"2班","汪华",""),(3,"3班

","王爷","");

ERROR 1366 (HY000): Incorrect string value: '\xE7\x8F\xAD' for column 'cname' at

row 1

出现这种报错时,是因为字符集没改成utf8,所以用下面的指令改字符集

ALTER TABLE t_class CONVERT TO CHARACTER SET utf8mb4;

插入成绩表:

指令:mysql> insert into t_grade values (1,1,100,80,100,""), (2,2,85,80,70,""), (3,3,9

0,80,80,"");

注意:学生表的id等于成绩表的sid,班级表的id等于学生表的cid

3、 用SQL语句对班级表学生表进行多表联查,显示班级表的班级名称和学生的id,姓名

指令:

指令:select a.id,a.sname, b.cname from t_student a join t_class b on a.cid=b.id;

4、 用SQL语句对学生表成绩表多表联查,显示学生的id,sname和成绩表的语数外的成绩。

指令:mysql> select a.id,a.sname,c.chinese,c.math,c.english from t_student a join t_gr

ade c on a.id=c.sid;

5、 用SQL语句,对三张表进行多表联查,显示学生表的id,sname班级表的cname,成绩表的语数外成绩。

指令:mysql> select a.id,a.sname,b.cname,c.chinese,c.math,c.english from t_student a j

oin t_class b on a.cid=b.id join t_grade c on a.id=c.sid ;

七、课后题:

新建一个学生表(id,sname,cid,)、课程表(cid,classname)、成绩表(id,chinese,math,english),并写出以下SQL语句

1.查询行王的学生的个数

2.查询所有语文成绩比数学成绩高的所有学生的学号

1. select count (*) from t_student where name like '王%'

2.select s.id from t_student s join t_grade g on s.id = g.id where g.chinese > g.math;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值