一、理解SQL
1、什么是数据库?
存储组织的数据的容器(通常为一个文件或者文件集合)
数据库和数据库管理系统区别?
数据库管理系统(DBMS)是位于用户和操作系统之间的一款数据管理软件。
2、表
特殊类型的结构话的数据列表
每个表都有不同的含义。不会有两张同名的表。
3、模式
数据库和表布局和属性的信息
4、列
表中一个单独的领域?所有的表都是有一个或者多个列组成的。
5、数据类型
被允许数据的类型,在每一个表中,每一列属性的数据类型都是有限制或者允许的特殊的数据
6、行
在表中的一个记录
7、主键
在表中,每一行值是唯一确定的一列或者几列
二、介绍MySQL
什么是MySQL
在先前的章节中学习了数据库SQL,MySQL是数据库软件DBMS,它是做存储、检索、管理和操纵数据的工作
如何安装MySQL
这里不做赘述了,不过运行是mysql -u 账号 -p 密码
三、mysql的执行
1、连接数据库需要如下参数
- hostname 如果连接本地MySQL服务器,一般为localhost
- port 默认为3306
- username
- password
2、选择一个数据库
通常使用use + 数据库名字;来使用该数据库,例如现在有多个数据库,我们想使用sql_course数据库,则我们使用 use sql_course;进行数据库使用,至于如何创建一个数据库我们会在后续学习到。
3、学习关于数据库和表
现在我们想展示创建来哪些数据库,则可以使用命令show databases;
我们想展示所有的表格,首先先选择数据库 use + 数据库名称,然后再使用show tables;
展示表格中的各列的属性,使用命令show columns from + 以创建的表名称;
四、select使用
1、检索列
select + 列名(多个列名用逗号隔开,所有行用*号) + from +表名;
例如 select prod_name from products;
select prod_id,prod_name,prod_price from products;
select prod_id,prod_name,prod_price from products;
select * from products;
2、检索不同的行
如果我们检索某列的信息,可能我们输出的两行信息是相同的,例如
select vend_id from products;
我们可以看到许多相同的数值,现在我们想让每一个值只出现一次,使用的命令:
select distinct vend_id from products;
3、限制结果
select返回的是匹配到的所有的行,现在我们就像显示几行,有什么好的方法呢?使用limit
select + 需要搜索的字段 + from + 表名 + limit +显示的行数;
例如 我现在只想显示5行信息;
select prod_name from products limit 5;
如果我们想获得下一个5行的信息,不需要前5行信息,需要怎么写呢?
使用 limit 5,5
第一个5是从哪里开始,第二个5是从开始后面的5个
4、使用合格的表格名字
平时我们进行列查询时,一般会直接使用列名字,但是也可以使用表名.列名的规则
例如 select products.prod_name from products;
当然,我们的表名也可以使用数据库名.表名
例如 select products.prod_name from crashcourse.products;
五、检索数据排序(order by)
1、分类数据
一般,我们使用查询语句进行查询时,返回的数据是乱序的,例如这样:
那我们需要如何将这些字段按照首字母进行排序呢?使用的方式是order by
select prod_name from products order by prod_name;
2、分类多列
那比如我们现在是显示多行的数据,那我们怎么来进行排序呢?比如order by 后面有两个字段是怎么进行排序的呢?
select prod_id,prod_price,prod_name from products order by prod_price,prod_name;
那么这样到底是如何进行排序的呢?是先prod_price还是prod_name呢?
规则是先排序prod_price当prod_price相同时,则在排序prod_name
3、细化分类方向
一般的order by都是升序的,那么如果我们想降序怎么办呢?使用desc
select prod_id,prod_price,prod_name from products order by prod_price desc;
本期题目:有一张学生表,有如下字段:id、name、score、grade;现在我需要前5名最低分数的学生的名字和得分?