第一节 MYSQL版本8.0.28安装及连接
一、下载mysql,并安装程序。
1.选择开发者模式,点击下一步。
2.相关软件检查,点击下一步。
3.点击执行。
4.安装全部MYSQL组件。
5.点击下一步。
6.一直下一步,直到输入root密码这一项。
7.然后继续下一步。点击执行。
执行全部后,显示安装成功。
二、连接数据库
1.连接数据库
连接到mysql需要以下信息:
主机名:(如果连接到本地就使用localhost,不是就用IP)
端口号:(默认是3306,之外的自己填写)
用户名:xxxx
用户密码:xxxx
第二节 了解数据库
一、数据库相关介绍?
数据库(database)是存储的数据的集合。通过DBMS(数据库管理系统)连接到数据库,进行查询、删除等操作通过DBMS发送给数据库,执行完后再将结果发送给我们。
表(table)一种结构化文件,用来存储某种特定类型的数据。例如:顾客表(姓名、年龄、手机号)信息,与订单表(订单号、姓名、地址)两者之间存在关联,可以存在同一个表中,但分开存在后期查询的时候更方便。在一个数据库中表名是唯一的,在两个以上的数据库中,表名可以相同。
模式(schema)描述表的信息。类似一个框架,告诉你怎么创建表
列(column)表中的一个字段。每个列都有相应的数据类型。一个或多个列组成了表。
行(row)表中的一个记录。
数据类型(datebyte)数据的类型。它限制在列中存储的数据种类。日期字段,它只能存日期,不能存字符串。
主键(primary key)列的一种类型,它的值区分表中每个行。一个成绩表中,相同成绩的人有很多,怎么区分这些人,就是通过定义主键来区分。每张表都必须有一个主键,它的值不能为空,不更新主键值,不以可能会更改的值作为主键。
二、什么是SQL?
SQL简介:SQL是结构化查询语言,用于存储数据以及查询、更新和管理关系型数据库系统。
语句结构:包含6个部分。
数据查询语言(DQL:data query language):保留字有 Select 、Where、Order By、Group By、Having。
数据操作语言(DML:data manipulation language):保留字有Insert、Update、Delete。
事务控制语言(TCL):保留字有Commit、Savepoint、Rollback。
数据控制语言(DCL):保留字有Grant、Revoke。
数据定义语言(DDL):保留字有Create、Alter、Drop。
指针控制语言(CCL):它的语句像Declare Cursor、Fetch Into、Update Where Current用于对一个或多表独行的操作。
结束sql语句:
sql语句必须以;分号结束
SQL书写格式:
sql不区分大小写,但为了易于阅读一般关键字是全部大写,列和表名小写。
sql处理空格时会被忽略。
三、什么是MySQL?
MySQL是一种DBMS,有免费开源、执行快、可信赖、操作简单等优点。缺点是不易支持其他DBMS。
00:02:23 使用MySQL
一、选择数据库,用use关键字。
查询数据或者其他操作,都是需要选择一个数据库。可使用关键字 USE 命令,
1 use sql_store; # 选择sql_store数据库
此时可以看到被选择的数据库加粗显示。如果是在非图形界面操作,必须先USE打开数据库,才能读取其中的数据。
二、查看数据库、表、列、用户等信息,用show关键字。
1.如果遇到不知道使用的数据库名字时,或者想要看某些数据库时,可以用 show 命令,
1 show databases; # 查看数据库
2.选中一个数据库,还可以查看数据库内的表;
1 show tables; # 查看表
3.当想查看表中都有哪些列时,会显示所有关于列的信息,包含属性,是否为空等。
1 show columns from customers; # 查看customers表中的所有列
4.想查看数据库有什么错误信息时,
1 show errors; # 查看错误信息
01:28:12 检索数据
1.select 语句
select 语句用于从一个表或多个表中检索数据。使用select必须知道2个信息:想选择什么 和 从什么地方选择。
下边使用customers表作为示例:
2.检索单个列
语法:select 列名 from 表名;
1 select first_name from customers; # 从customers表中检索first_name列
3.检索多个列,用(,)隔开
语法:select 列名,列名,列名 from 表名;
1 select first_name,last_name,birth_date from customers; # 从customers表中检索first_name,last_name,birth_date这3个列
4.检索所有列,用(*)通配符检索
语法:select * from 表名;
1 select * from customers; # 从customers中检索所有列
5. 检索不同的行,用distinct关键字去重
当你查找列的值时,不需要重复的值出现。例如,orders表中customer_id(客户id)。想要找到哪些用户下过订单,不需要显示重复的客户id。
语法:select distinct 列名 from 表名;
1 select distinct customer_id from orders; # 从orders中检索customer_id列显示没有重复的数据
注意:distinct不能部分使用,如果检索多列时,会把2列当做一列,只有每行的数据重复时才会去重。下图中红框就是例子,只有第一行6 1 和 6 2 重复时才会去除,否则就是检索所有。
1 select distinct customer_id,status from orders; # 从orders表中检索customer_id,status列去除重复数据
6. 限制结果显示几行,用limit关键字。
当我们需要返回表中前几行时,我们可以用 limit 关键字。
① 只带一个值的limit默认从第1行开始计算。
语法:select 列名 from 表名 limit 行数;
1 select last_name from customers limit 5; # 从customers表检索last_name列,只显示前5行;
② 还可以指定开始的行数。
语法:SELECT 列名 FROM 表名 LIMIT 开始行数,行数;
1 SELECT last_name FROM customers LIMIT 2,3; # 从customers表中检索last_name列,显示从第2行开始的前3行
③ 当遇到行数不够时,LIMIT 只会返回能返回的行数。
1 select last_name from customers limit 5,12 # 从customers表中检索last_name显示从第5行到12行的数据。
因为last_name只有10行,没有11 12行,所以只显示到第10行。
7. 使用完全限定的表名
在实际使用中,可能出现相同的数据库名字或者不同的数据库下有着相同的表名。当我们需要别人来确定时,可以通过限定列名的方式让其他人看明白。
语法:SELECT 表名.字段名 FROM 表名;
1 select customers.last_name from customers; # 其中红色部分就是指定了哪张表下的哪个列。
01:42:11 排序检索数据
1. 排序数据
在实际使用中,数据库的数据会有更新和删除。此时顺序将会受到mysql重用回收存储空间的影响。在输出时数据会随之改变,不方便显示。这时可以用 ORDER BY 关键字进行排序。
SELECT last_name FROM customers ORDER BY last_name; #从custmoers表中检索last_name列,并以字母的顺序排序。
2. 按多个列排序
如果按多个列排序,列之间用逗号隔开。
SELECT last_name,birth_date,phone FROM customers ORDER BY last_name,phone; #从customers表中检索last_name,birth_date,phone3列,并对last_name进行排序,再对phone排序。
3.指定排序方向
排序不仅可以从(A-Z)升序排列,还可以降序排列(Z-A),可以使用 DESC 关键字。
SELECT last_name FROM customers ORDER BY last_name DESC ; #从customers表中检索last_name列进行降序排列。
如果是多列排序,我只想要其中某一列是以降序排列。可以这样:
SELECT last_name,birth_date,phone FROM customers ORDER BY last_name DESC , phone; # 从customers表中检索last_name,birth_date,city列,并对last_name列进行降序,city默认升序
注意:DESC指对它前边的列起作用。如果想要每一列都是降序,需要再每个列后边加上DESC。
SELECT last_name,birth_date,city FROM customers ORDER BY last_name DESC ,city DESC ;
DESC 在多列降序排列时,会首先对第一列进行降序,然后在第一列的基础上再进行第二列的降序。
01:48:44 过滤数据
1.使用WHERE子句。
在数据库中存在大量数据,每次检索并不是检索所有行那么简单。当你需要再其中查找一条数据时,可以通过 WHERE 关键字指定。
SELECT * FROM customers WHERE city = 'Sarasota' ; # 从customers表中检索city是Sarasota的数据。
注意:在遇到WHRER子句和ORDER BY 子句同时使用的情况,先写WHERE子句。
2.WHERE子句操作符
WHERE子句支持以下操作符:
操作符 说明
= 等于
<> 不等于
!= 不等于
< 小于
> 大于
<= 小于等于
>= 大于等于
BETWEEN 在指定的两个值之间
下边举几个例子看实际操作:
SELECT * FROM customers WHERE points > 205; # 从customers表中检索points大于205的数据;
SELECT * FROM customers WHERE first_name != 'Ines' ; # 从customers表中检索first_name不是Ines的数据。
下边这个例子是检索范围之内的数据,会用BETWEEN...AND...关键字
SELECT * FROM customers WHERE points BETWEEN 1600 AND 2000; # 从customers表中检索points的值是在1600到2000之间的数据;
还有一个特殊检索,那就是空值检索。当一个列不包含值时,称其为空值NULL。通常用 IS NULL检查。
SELECT * FROM customers WHERE phone IS NULL ;
02:05:11 数据过滤
操作符:用来连结或改变WHERE子句中的关键字。
1. AND操作符
AND 操作符用来检索满足所有条件的行。AND还可以添加多个条件,只要每添加1条就使用一个AND。
SELECT * FROM customers WHERE points < 500 AND points > 100; # 从customers表中检索200
2. OR操作符
OR 操作符用来检索匹配任意一个条件的行。
SELECT * FROM customers WHERE points < 1000 OR city = 'beijing' ; # 从customers表中检索points < 1000的或者是city = beijing的
3. 操作符优先级
当WHERE包含AND和OR操作符时,优先进行AND再OR。
SELECT * FROM customers WHERE points < 1000 OR city = 'beijing' AND first_name = 'Ines' ; # 从customers表检索先 first_name = Ines 然后 points < 1000的或者是city = beijing 的行;
如果要改变操作优先级,可以通过()来。
SELECT * FROM customers WHERE (points < 1000 OR city = 'beijing' ) AND first_name = 'Ines' ; # 从customers表中检索先条件是points<1000或者city=beijing的行,然后结果再和first_name=Ines 的条件一起检索。
4.IN 操作符
IN 操作符用来指定条件范围,范围中的每个条件都可进行匹配,其中取合法值用逗号分隔。
SELECT * FROM customers WHERE points IN (205, 947) ORDER BY first_name; # 从customers表中检索 points是205或points是947的行,并以first_name排序。
5. NOT 操作符
NOT 操作符是否认它后边的操作符关键字。
注意:mysql仅支持NOT对BETWEEN、EXISTS、IN取反。其他不支持
02:10:21 用通配符进行过滤
通配符:用来匹配值的一部分的特殊字符。
1. LIKE操作符
如果想在子句中使用通配符,必须使用LIKE操作符。
2. 百分号%通配符
% 表示任何字符出现任意次数。
% 可以在任意位置,出现任意次数使用。