windows mysql 学习笔记 第十天(基础习题)

Windows mysql 完结篇 (附带基础习题)

SQL:(Structured Query Language 结构化查询语言,是一种ANSI的标准的计算机语言。

RDBMS:关系型数据库管理系统,数据存储在被称为表的数据库对象中,表是相关的数据项的集合,由行和列组成。

Sql 对大小写不过敏!!!

SQL中的DML和DDL
DML(数据操纵语言):包含更新、插入、删除的语法。
Select-------从数据库标表中获取数据
Update-------更新数据库表中额数据库
Delete-------从数据表中删除数据
Insert into-------向数据库表中插入数据

DDL(数据定义语言):使我们有能力创建或删除表格,
Create database-------创建数据库
Alter database-------修改数据库
Create table-------创建数据表
Alter table-------修改数据表
Drop table-------删除数据表
Create index-------创建索引
Drop index-------删除索引

Select
语法:Select 列名称 from 表名称;
Select * from 表名称;
(*)是选取所有列的快捷方式。

Distinct:用于返回唯一不同的值。
语法:select distinct 列名称 from 表名称;

Where:有条件的从表中的选取数据
语法:select 列名称 from 表名称 where 列 运算符 值;
操作符:
= ------- 等于
< > ------- 不等于 ------- !=
>------- 大于
<------- 小于
>=------- 大于等于
<=------- 小于等于
Between ------- 在某个范围内
Like ------- --搜索某种模式

Andor 运算符
AND 和 OR 可在 WHERE 子语句中把两个或多个条件结合起来。

如果第一个条件和第二个条件都成立,则 AND 运算符显示一条记录

如果第一个条件和第二个条件中只要有一个成立,则 OR 运算符显示一条记录。

可以把 AND 和 OR 结合起来(使用圆括号来组成复杂的表达式)

关键词:order by 用于对结果进行搜集排序
默认(asc)是升序,desc是降序

Insert into 语句:语句用于向表格中插入新的行
语法:insert into 表名称 values (值1,值n);
Insert into 表名称(列1,列n)values (值1,值n);

Update 语句:用于修改数据表中的数据。
语法:update 表名称 set 列名称=新值 where 列名称 =值;

Delete 语句:用于删除数据表中的行
语法:delete from 表名称 where 列名称=值;

Toplimit
用于规定要返回的记录的数目
Select top 2 * from 表名;
Select * from 表名 limit 2;
以上两句都是只输出两条语句。

Like 操作符
用于在where子句中搜索列中的指定模式。

Sql通配符
%-------替代一个或多个字符
_-------仅替代一个字符
[Charlist]------字符列中的任意单一字符
[^charlist]或[!charlist]------不在字符列中的任何单一字符

In操作符:允许在where子句中规定多个值使用(),不去中间,只取写入的值。

Between 操作符在 WHERE 子句中使用,作用是选取介于两个值之间的数据范围。

Alise :可以为列名称和表名称指定别名,方便使用,

INNER JOIN: 如果表中有至少一个匹配,则返回行
LEFT JOIN: 即使右表中没有匹配,也从左表返回所有的行
RIGHT JOIN: 即使左表中没有匹配,也从右表返回所有的行
FULL JOIN: 只要其中一个表中存在匹配,就返回行

Union操作符:UNION 操作符用于合并两个或多个 SELECT 语句的结果集。

请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
注释:默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
语法:select 列名 from 表名(all) union select 列名 from 表名;

Select into语句:可用于创建表的备份复件。

SELECT INTO 语句从一个表中选取数据,然后把数据插入另一个表中。

SELECT INTO 语句常用于创建表的备份复件或者用于对记录进行存档。

Sql 约束
主要约束
NOT NULL:约束强制列不接受 NULL 值。
UNIQUE: 唯一标识数据库表中的每条记录。

PRIMARY KEY:约束唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键。

FOREIGN KEY: 一个表中的 FOREIGN KEY 指向另一个表中的 PRIMARY KEY。
FOREIGN KEY 约束用于预防破坏表之间连接的动作。
FOREIGN KEY 约束也能防止非法数据插入外键列,因为它必须是它指向的那个表中的值之一。

CHECK:用于限制列中的值的范围。
如果对单个列定义 CHECK 约束,那么该列只允许特定的值。
如果对一个表定义 CHECK 约束,那么此约束会在特定的列中对值进行限制。

DEFAULT:约束用于向列中插入默认值。
如果没有规定其他的值,那么会将默认值添加到所有的新记录。

Create index:创建索引
在不读取整个表的情况下,索引使数据库应用程序可以更快地查找数据。
语法:create index 索引名 on 表名(规定需要索引的列,可以有多个);

Drop index:删除索引
语法:alter table 表名 drop index 索引名;

Auto_increment字段
我们通常希望在每次插入新记录时,自动地创建主键字段的值。
我们可以在表中创建一个 auto-increment 字段。
在建立列的过程中使用;

Windows mysql 基础题

第一题

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  1. 学生表 student( s_id, name, sex, birth) –学生号,学生姓名, 性别,出生年月;
    课程表 course(c_id, cname ,teacher) – –课程编号, 课程名称, 教师姓名
    成绩表 score(s_id, c_id, s_score) –学生编号,课程编号,分数
    创建字符集为utf8的数据库“pass_test”,并在数据库下创建以上表格;

  2. 查询汉文学课程的平均成绩(并取别名为“汉文学平均分”);

  3. 查询选择小龙女老师课程的学生学号、姓名和成绩;

  4. 查询学生中年龄在23岁以下的学生;

  5. 查询姓杨的老师教授的课程的平均分;

  6. 查询学生的姓名及选修的课程数目

解答:
2. select avg(s_score) 汉文学平均分 from score where c_id in (select c_id from course where cname=’汉文学’);

3.select st.s_id,st.name,sc.s_score from student st inner join score sc on sc.s_id=st.s_id where c_id in (select c_id from course where teacher=’小龙女’);

4.select name,2019-left(birth,4) from student where 2019-left(birth,4)<23;

5.select avg(s_score) from score where c_id in (select c_id from course where teacher like ‘杨%’);

6.select st.name,count(*) from student st inner join score sc on st.s_id=sc.s_id group by name;

第二题

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

1、从student表中查询计算机系和英语系的学生的信息
Select * from student where department in (‘计算机系’,’英语系’);

2、从student表中查询年龄20~30岁的学生信息
Select * ,2019-left(birth,4) 年龄 from student where 2019-left(birth,4) between 20 and 30;
3、从student表中查询每个院系有多少人
Select department,count(*) from student group by department;

4、从score表中查询每个科目的最高分
Select c_name ,max(grade) from score group by c_name;

5、将student表和score表进行左连接查询
Select * from student st left join score sc on st.id=sc.stu_id;

6、计算每个考试科目的平均成绩
Select c_name,avg(grade) from score group by c_name;

7、计算每个学生的总成绩
Select st.name,sum(grade) from student st inner join score sc on st.id=sc.stu_id group by name;

8、将计算机考试成绩按从高到低进行排序
select c_name,grade from score where c_name in (‘计算机’) order by grade DESC;

9、从student表和score表中查询出学生的学号,然后合并查询结果
select stu_id 学号 from score union select id from student;

10、查询都是湖南的学生的姓名、年龄、院系和考试科目及成绩
select name 姓名,2019-left(birth,4) 年龄,department 院系,c_name 考试科目,grade 成绩 from student st inner join score sc on st.id=sc.stu_id where address like ‘湖南省%’;

第三题

在这里插入图片描述

  1. 查询1995-07-03到1995-07-13之间的学生姓名;
    Select * from student where birth between ‘1995-07-03’ and’1995-07-13’;

  2. 查询学生的平均年龄;
    Select avg(2019-left(birth,4)) from student;

  3. 查询非女生的人员信息
    Select * from student where sex !=‘女’;

  4. 查询7月14日(包括)之后的学生信息,按照birthday降序排列
    Select * from student where birth >=’1995-07-14’ order by birth desc;

  5. 从stuid=5的同学开始查询,查询3条数据;
    Select * from student where stuid >=5 limit 3;

  6. 查询的学生生日不重复
    Select distinct birth from student

  7. 查询cid不是1或者不是2的学员的信息
    Select * from student where cid<>1 or cid!=2;

2019.12.9

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值