数据库基础(一)
- 一、数据库
- 1.1 创建数据库
- 1.2 查看数据库
- 1.3 使用数据库
- 1.4 删除数据库
- 二、表
- 2.1 创建表
- 2.2 查看表结构
- 2.3 删除表
- 三、增删改查操作篇
- 3.1 增加数据
- 3.1.1 单行增加+全列插入
- 3.1.2 多行增加+全列插入
- 3.2 查询数据
- 3.2.1全列查询
- 3.2.2 指定列查询
- 3.2.3 起别名
- 3.2.4 去重(distinct)
- 3.2.4 排序
- 3.2.5 条件查询
- 3.3 修改
- 3.4 删除数据
- 总结
感谢各位大佬,耽误各位大佬时间点开此文章,既然进来了,那就看看吧。话不多说,开整!!!
MySQL是作为一名程序员,所必备的技能。在工作中无处不在,但是万变不离其宗,主要是还从增、删、改、查这四大部分进行开展。
我们在创建数据时候,需要基于一张表,但是表又要基于一个库的管理,一个库中可以管理许多的表。所以
建表之前需要建库
一、数据库
1.1 创建数据库
//基本语法
creat database[if not exists] [表名];
示例:
creat database school
creat database if not exists school
大家可以看到我写了两种方法,这两种都是创建一个库,第二条中我加了if not exists 这句语法,他表示的意思就是,如果本地中没有school这个库时候,就创建,如果有了就不创建。school为该库的名称,这样一来,我们就创建了这个库。
这是由有些同学提出了疑问,库建成了,我应该怎么去查看我的数据库呢,不急这就来!
1.2 查看数据库
show databases;
上述代码中,大家可得看清楚哦,databases,它是加s的,这样我们就可以把本地的数据库都查到。这时候有同学就说这下就快来建表吧!No No No,现在还不可以,我们在建表时候需要先去选中我们在哪个库下去建表。
1.3 使用数据库
use school
那么有同学就问了,如果我不想用这个库了,怎么删除呢,其实删除这个东东是很危险的,但是既然大家有需求,那就说一下,但是慎重使用!
1.4 删除数据库
drop database [if exists] school
数据库删除后,数据库的表和内容都会不见,所以删库操作很危险的,尽量不使用!!!
二、表
数据的增、删、改、查就是基于表去完成的,表中有大学问!但是在建表之前我们需要陈述一下,建表时候的常用的数据类型都有哪些!
int 型(整型)
decimal(M/D) (浮点型) M表示长度 D表示精度
varchar(size) (类似于String )
text (长文本,类似于String)
timestamp (日期类型)(可以打印时分秒)
以上为常用的数据类型,其余的可以格局自己需求选择!
2.1 创建表
create table student(
id int primary Key auto_increment,
name varchar(20) comment '姓名',
context text,
amout decimal(10,3),
pasttime timestamp
);
上述代码就是建表的方式,其中需要注意的有以下几点:
- primary Key auto_increment,字段为其添加主键,在以后代码编写中,他就可以自动增加
- comment值得是注解,可以不用写
- 每段个数据结构后都是 , 号隔开
- 最后一条数据后,不加任何符号
- 数据是写在()里边的,括号外头的 ; 表结尾
表建立之后,我们如果想要查看表的结构,或着在以后数据编辑时,忘记了当时表中的数据结构,可以使用下边指令查看表的结构!
2.2 查看表结构
//desc [表名]
desc student
同样删除表和删除库的结构一直,但是不推荐!
2.3 删除表
drop table student
上述简单操作说完,接下来就是最难的部分了,表的增、删、改、查
三、增删改查操作篇
前半阶段,表的基本创建已经完成,没什么难度,接下来就是增删改查 ,首先我们先从增加开始
3.1 增加数据
首先我们重新建一张表
create table student(
id int primary Key auto_increment,
name varchar(10),
age int,
email varchar(20)
);
3.1.1 单行增加+全列插入
insert into student values(1,'test1',11,'123@');
insert into student values(2,'test2',22,'567@');
这里我们需要注意,选对表名,并且values中的数据类型和数量,必须和表结构中的类型一致
3.1.2 多行增加+全列插入
insert into student (id , name ,age) values
(3,'test3',33),
(4,'test4',44);
这里我们同样也需要注意,当我们规定了给那些属性添加值,那么values中,是对应约束的值,没有约束的varchar() 默认为null ,数据默认为0
出现bug图片上传不上去了!!!
下面就是最难最难最难的部分了
3.2 查询数据
3.2.1全列查询
select * from [表名]
这样查询出现时表的全部属性,意味着数据量比较大,但是会影响到索引
3.2.2 指定列查询
select[变量,变量] from [表名]
select id , name ,age from student
指定列查找是指按照指定的变量来查询,不按照全表去查询
3.2.3 起别名
起别名查询,用于表示需要将返回结果集中显示,但是该结果,再次调用就会消失,只限当前就结果集,查看。为了让大家充分理解,这里使用另一个例子
select id ,name ,chinese+math+english score from student
上述代码中,使用了字段为表达式查询
3.2.4 去重(distinct)
去重,顾名思义就是,去掉重复的数据只保留一个
select englis distinct from student
3.2.4 排序
排序中使用到的关键字时order by
升序为asc
降序为desc
select * from student order by id;
select * from student order by id desc;
上述代码表达,查询全列根据表中的id进行排序,默认为升序
select name , chinese+math+english score from order by score;
上述代码表述,根据别名进行升序查找
注:null数据排序,视为比任何值都小
3.2.5 条件查询
条件查询涉及到很多的运算符这里我们列举出常见的运算符
- between…and 表示范围
- in
- is null 是空
- like 模糊匹配
- and 多个条件都必须满足
- or 任意一个条件满足
- not 条件为true 结果为false
基本查询:
查询英语成绩小于60分的
select name , english from sutdent where english < 60;
And 和 Or
查询语文成绩大于80分,且英语成绩大于80分的同学
查询语文成绩大于80分,或英语成绩大于80分的同学
select * from student where chinese > 80 and english > 80;
select * from student where chinese > 80 or english > 80;
范围查询和and查询基本类似! 这里就不演示了!
in
查询数学成绩时50 或 59 或 90 的同学数学成绩
select name ,math from student where math in(50,58,90);
like
select * from student where name like '孙%';
select * from student where name like '孙_';
这里要多说两句了,% 代表的是占位符,但是他能匹配多个。例如:孙小小、孙孙孙孙、孙权等都可以匹配到。然而 _ 只能匹配到一个字符的结果为孙权。
is null
查询数学成绩为空的学生成绩
select name,math from student where math is null;
3.3 修改
修改数据使用到的关键字为update。
update [表名] set [变量名]= [值] [where] [order by] [limit] ...
例如修改孙权同学的数学成绩为100
update student set math= 100 where name = '孙权';
上述条件可以根据题目的实际要求设置。
3.4 删除数据
delete from [表名] [where][order by][limit].....
例如:删除孙权同学的考试成绩
delete from student where name='孙权';
总结
综合上述,我们已经将基本的SQL用法加以解释说明,但是查询语句中的细节知识,以及更多的查询知识,我们将在下一篇再次进行拓展说明。虽然各类语法较多,但是语句万变不离其宗,主要就是改变查询条件。加以练习,就好啦!!!
欢迎各位大佬,指正批评!