Mysql 是一个客户端服务器结构的程序,同时服务器是数据库的本体(数据是在服务器这里组织和存储的)。
1.数据库介绍
1.1什么是数据库?
数据库是一类软件,用来保存和管理数据。数据库可以提供远程服务,即通过远程连接来使用数据库,因此也成为数据库服务器。
1.2数据库分类?
关系型数据库:采用了关系模型来组织的数据库。关系模型指的是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织.(Oracle、MySQL、SQL Server)
非关系型数据库:不规定基于SQL实现
2.客户端连接数据库
Mysql默认只允许在服务器本机,使用root用户登录。
“”win+r"输入cmd,在弹出的窗口中输入
mysql -uroot -p
输入密码,就进入了数据库中
3.MySQL数据库基础
3.1数据库操作
3.1.1显示当前数据库
show databases;
系统默认会显示以上几个数据库,不要瞎弄这几个!!
3.1.2创建数据库
create database J818;
输入sql后,继续查询这时候就建立了一个名字为"J818"的数据库。
当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8。
3.1.3如果系统没有名字为test的数据库,则创建一个,如果有,就不创建
create database test if not exists test;
3.1.4如果没有名为test的数据库,则创建一个使用utf8mb4字符集的test数据库,如果有,则不创建
Incorrect string value: '\xE5\xBC\xA0\xE4\xB8\x89' 出现这个错误就是因为在建立数据库的时候没有指定字符集,导致数据库识别不了汉字,所以在开创建数据库时要加上character set utf8mb4;
create database if not exits test character set utf8mb4;
3.1.5使用数据库
use j818;
3.1.6删除数据库
drop database [if exists] j818;
注:数据库删除后,内部看不到对应的数据库,里面的表和数据全部删除。
3.2常用的数据类型
int;
varchar(n);
double(M,N)--(M指长度,N代表小数位数)
decimal(比起double更精确)
datatime
3.3表的操作
操作数据库中的表时,需要先使用该数据库。
use j818;
3.3.1创建表
create table table_name(field1 datatype,fieled2 datatype,field3 datatype);
3.3.2查看表结构
desc 表名;
3.3.3删除表
drop table student;
4.MySQL表的增删改查
CRUD
增加--Create
查询--Retrieve
更新--Update
删除--Delete
4.1新增-Create
4.1.1单行数据全列插入
insert into student values(1,'张三',18);
4.1.2多行数据指定列插入
insert into student(id,name)values(2,'李四'),(3,'王五');
4.1.3年月日时分秒的插入
首先建立一个homework表,先插入现在的时间,使用now()来完成,再插入一个其他的时间
时间类型:datetime
现在的时刻now()
create table homework(id int,createTime datetime);
insert into homework values(1,now());
insert into homework values(2,'2023-8-17 21:25:16');
4.2查询--Retrieve
查询的结果相当于一个临时表,这个临时表也叫结果表。
4.2.1全列查询
通常情况下不建议使用全列查询。查询的列越多,意味着需要传输的数据量越大。
可能会影响到索引的使用。
select *from student;
4.2.2 指定列查询
select id,name from student;
4.2.3 查询字段为表达式
select id+10,name from student;
查询“id+10”,数据库服务器硬盘的数据不发生改变,再次查id,结果仍然是+10之前的数据。
用户在客户端输入sql,通过请求发送给服务器,服务器解析并执行sql,把查询的结果从硬盘读取出来,通过网络响应还给客户端,客户端把这些数据以临时表的方式展示出来。
4.2.4别名
为查询结果中的列指定别名,表示返回的结果集中,以别名作为该列的名称。使用as
select name as name1 from student;
4.2.5去重distinct
4.3 排序 Orderby
对于mysql来说,如果一个sql没有指定orderby,此时查询结果的顺序是不可预期的。
NULL数据排序,视为比任何值都小,升序出现在最上面,降序出现在最下面。
4.3.1asc升序(默认为asc)
4.3.2desc降序
4.3.3使用表达式及别名排序
查询同学及总分,由高到底
select name,chinese+english+math from exam_result order by chinese +english+math desc;
select name,chnese+math+english as total from exam_result order by total desc;
4.4条件查询where
where条件可以使用表达式,但不能使用别名。
针对数据库中的表,进行遍历,取出每一行的数据,把数据带入条件中,看条件是否符合,如果符合则保留,如果不符合则pass。
4.4.1比较运算符
=与<=>
=:等于,NULL不安全,例如null=null的结果是null;
<=>:等于,null安全,例如null<=>null的结果是TRUE(1)
4.4.2逻辑运算符
and的优先级高于or,在同时使用时,需要使用小括号包裹优先执行的部分。
4.5范围查询
(1)between and
前闭后闭区间,包含两侧
查询成绩在80到90分同学的同学及成绩。
select name,grade from exam_result where grade between 80and 90;
select name,grade from exam_result where grade >=80 and grade <=90;
(2)in
查询数学成绩是65和68的学生
select name,math from exam_result where math in(65,68);
(3)模糊查询like
不要求元素完全相同,只要满足一定的规则就行。
like'%孙'查询孙结尾的
like'%孙%'查询包含孙的
(4)分页查询limit
4.3修改Update
将张三的年龄加十岁
update student set age = age +10 where name ='张三';
4.4删除Delete
删除名字为李四同学的信息
delete from student where name ='李四';
以上是关于数据库的基础操作,关于数据库表的进阶增删改查将在后续的博客中更新,今天就到这啦~