在数据库中创建三个表(学生 老师 班级)
create table students( id int auto_increment primary key, name varchar(20), age int, height float, gender char(10), cls_id int, is_delete int );
create table teachers( id int primary key, name varchar(20) );
create table classes( id int primary key, teacher_id int, cls_content varchar(100), cls_date datetime, name varchar(50) );
DML是Data Manipulation Language英文缩写,数据操作语言
语法格式:
INSERT [INTO]
表名 [字段名]
VALUES (值列表);
示例 向学生表中插入一行数据
第一种:
insert into students (id,name,age,height,gender,cls_id,is_delete)
values (0,'小明',18,180.00,2,1,0)
第二种:
insert into students values (0,'小明',18,180.00,2,1,0)
向学生表中插入多行数据:
insert into students (id,name,age,height,gender,cls_id,is_delete)
values (2,'佩奇',8,130.00,2,1,0),(3,'超人',36,180.00,1,2,0);
注意:为避免表结构发生变化引发错误,建议插入数据时写明具体字段名!
2.2 update更新数据
UPDATE 表名 SET 字段1=值1,
字段2=值2,…,字段n=值n
[WHERe 条件];
示例: 将所有学生的姓名改成邓超
UPDATE students SET name= '邓超';
示例: 将id是1001学生的姓名改成邓超,年龄改为30
update students set name='邓超',age=30 where id=1001;
注意:1、更新多列数据使用逗号隔开;2、添加条件限制
回顾昨天讲了三个删除:
删除库 drop database hqyj;
删除表 drop table students;
删除字段 alter table students drop id;
语法格式:
DELETE FROM 表名
[WHERe条件];
示例:删除学生表中的数据【表还在】
DELETe FROM students;
示例:删除id是1的学生的数据
DELETe FROM students where id = 1;
语法格式:
TRUNCATE TABLE 表名;
示例:删除学生表中的数据【清空数据,表还在】
TRUNCATE TABLE students;
示例:删除id是1的学生的数据【报错,不能加条件】
TRUNCATE TABLE students where id = 1;
DQL是Data Qurey Language英文缩写,数据查询语言
常用语句:
基本查询语句、条件查询、多条件查询、模糊查询、分组查询、连接查询、子查询
关键字:
AS、运算符、IN、BETWEEN AND、DISTINCT、ORDER BY、LIMIT
语法格式:
SELECt 列名 FROM 表名;
示例:查询所有学生信息
select * from students;
提问:查询所有学生的姓名,性别
select name,gender from students;
算术运算符 + - * / %
关系运算符 > < = <> >=
赋值运算符 =
逻辑运算符 and or not && || !
语法格式:
SELECt 列名
FROM 表名
WHERe 条件
示例:查询id为1学生的姓名,性别
select name,gender from students where id = 1;
提问:查询学生'邓超'的信息
select * from students where name = '邓超';
语法格式:
SELECt 列名
FROM 表名
WHERe 条件 运算符 条件
示例:查询id=1或者id=3学生的姓名,性别
select name,gender from students where id = 1 or id =3;
提问:查询性别为女并且在三班的学生的信息
select * from students where gender='女' and cls_id=3;
模糊查询是使用SQL 通配符替代一个或多个字符的条件查询。
语法格式:
SELECt 列名
FROM 表名
WHERe 字段
LIKE '值'
示例:查询名字里面包含'小'的学生的信息
select * from students where name like '小%'
语法格式:
SELECt 列名
FROM 表名
WHERe 字段
IN (值1,值2,....);
示例:查询id为1,,5,6,10的学生的信息
select * from students where id in (1,5,6,10);
还有 NOT IN查询
语法格式:
SELECt 列名
FROM 表名
WHERe 字段
BETWEEN 值1 and 值2;
示例:查询id为8-10的学生的信息
select * from students where id between 8 and 10;
语法格式:
SELECt DISTINCT
字段名1,字段名2......
FROM 表名;
示例:查询性别有几种分类
select distinct gender from students;
示例:查询有几个班级
select distinct cls_id from students;
语法格式:
SELECt
FROM
[WHERe ]
[ORDER BY
[ASC 或 DESC]];
示例:将学生的身高按照升序排列
select * from students order by height;
示例:将学生的身高按照降序排列
select * from students order by height desc;
语法格式:
SELECt
FROM
[WHERe ]
[ORDER BY [ASC 或 DESC]]
[LIMIT ];
示例:只看前2条学生信息
select * from students limit 2;
观察上面三张表,如何查看students表中cls_id所代表的的班级名称是什么?——使用连接查询
连接查询是将多张表中记录按照指定的条件进行连接的查询方式
注意:连接查询涉及到两个表以上,在查询的时候至少要有一个必备的连接条件,这个必备的条件就是两个表共有的那个字段相等,而且这个字段一定在一个表里是主键,在另一个表里是外健
内连接是返回连接表中符合连接条件记录的连接查询。
包括:显式内连接、隐式内连接
4.1.1 显示内连接查询
语法格式:
SELECt 字段 FROM 表1
INNER JOIN 表2
ON 连接条件
WHERe 条件
示例:查看学生所在班级
select s.name,c.name from students s inner join classes c on s.cls_id=c.id;
提问:查看学生所在班级并且班级是1
4.1.2 隐式内连接查询
语法格式:
SELECt 字段
FROM 表1,表2
WHERe 表1.条件=表2.条件
示例:查看学生所在班级
select s.name as '名字',c.name as '班级' from students s, classes c where s.cls_id = c.id;
4.2.1左外连接查询
左外连接是以左表为基表,返回左表中所有记录及连接表中符合条件的记录的外连接。
语法格式:
SELECt 字段 FROM 表1
LEFT [outer] JOIN 表2
ON 连接条件
WHERe 条件
示例:查看老师所在班级
select c.name,t.name from classes c left join teachers t on c.teacher_id = t.id;
4.2.2 右外连接查询
右外连接是以右表为基表,返回右表中所有记录及连接表中符合条件的记录的外连接。
语法格式:
SELECt 字段 FROM 表1
RIGHT [outer] JOIN 表2
ON 连接条件
WHERe 条件
示例:查看老师所在班级
select c.name,t.name from classes c right join teachers t on c.teacher_id = t.id;
如何查看班级同学的平均身高?——使用聚合函数
聚合函数是可以对一组值进行计算,并返回单个值的函数。
语法格式:
SELECt 聚合函数
FROM 表名
[WHERe 条件]
[GROUP BY 聚合函数]
- count()-计数
- sum()-求和
- max()-最大值
- min()-最小值
- avg()-平均值
示例:查询班级学生的平均身高
select avg(height) as '平均身高' from students;
示例:查询班级有多少同学
select count(*) as '学生总数' from students;
如何只查询比刘德华高的同一班的学生信息?——子查询
定义:子查询是在一个查询的内部包括另一个查询的查询方式
示例:查看刘德华同学的所在班级的所有同学
select * from students where cls_id = (select cls_id from students where name = '刘德华');
示例:查看赵老师所带的学生信息
select * from students where cls_id = any(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
示例:查看学生所在班级
select * from students where cls_id >= all(select id from classes where teacher_id = (select id from teachers where name='赵老师'));
示例:删除表
DROp TABLE IF EXISTS temp;
示例:查看王老师所在班级
select * from classes where exists (select * from teachers where name='王老师');
示例:创建教师表
create table IF NOT EXISTS teachers(
id int primary key,
name varchar(20)
);
避免重复创建
本文地址:http://xiaoguoguo.dbeile.cn/quote/980.html 多贝乐 http://xiaoguoguo.dbeile.cn/ , 查看更多