数据库的简单介绍:
若将数据保存在内存中,数据不能持久化保存,断电/程序退出,数据就会清除;若将数据保存在普通文件中,可以对数据进行持久化保存,但是查找、增加、修改、删除数还是比较麻烦,效率过低;所以需要既可以保存数据,又方便操作数据的地方
数据库就是指长期保存在计算机的存储设备上,按照一定规则组织起来,可以被各种用户或者应用共享的数据集合,还是以文件的方式存在服务器的电脑上的
通俗的讲:数据库就是一个对数据可以持久化保存并且方便操作数据的地方
常见的关系型数据库:
MySQL:开源免费的关系数据库,中小型数据库,本文主要讲解mysql的使用
Oracle:是对象关系数据库,是收费的
SQL概述:
SQL是被美国国家标准局确定为关系型数据库语言的美国标准,是过数据库厂商都支持的SQL标准,我们可以通过sql语句来操作数据库(操作数据库,操作表,操作数据)
操作数据库:
在电脑上安装musql数据库之后可以在命令行操作数据库,但是一般都使用可视化工具去操作数据库,经常使用的免费可视化工具有DBeaver、Navicat(可通过破解免费使用)
要想操作数据库,必须创建数据库
创建数据库语法:
create database 数据库名[ character set 字符集][ collate 较堆规则]
注:[ ]表示可选
查看数据库语法:
查看所有数据库:show databases;
查看数据库结构:show create database 数据库名;
删除数据库:drop database 数据库名;
修改数据库:alter database 数据库名 character set 字符集 ;
注意:不能修改数据库名
其他操作:
切换数据:use 数据库名;
查看正在使用的数据库:select database();
操作数据库中的表:
操作数据主要是操作数据库中的表,数据库中的数据主要存储于数据库的表中,一个数据库中可以存在多个表,一个表中可以存在多条数据,操作数据库就是对数据库的表中的数据进行操作
创建表语法:
create table 表名(
字段名 字段类型 [约束],
字段名 字段类型 [约束],
……
字段名 字段类型 [约束]
);
字段名:即创建表的列的名字(此处的id、以及code等等都是字段名)
字段类型:就是该字段的类型
根据该字段所需要的数据类型而定,经常使用的有
int,bigint,float,double,varchar(size),date,datetime等
若该字段是表的主键,需要在字段后面加primary key auto_increment
约束:
-- 字段类型有:int,bigint,float,double,varchar(size),date,datetime
-- 字段约束:not null,unique,primary key auto_increment
-- 练习:创建一张学生表(含id字段,姓名字段,性别字段,id为主键自动增长)
create table student (
id int primary key auto_increment,
name varchar(40) not null,
sex varchar(20)
);
查看表:
查看所有的表:show tables;
查看表的定义结构:desc 表名;
修改表:
增加一列:alter table 表名 add 字段 类型 约束;
修改列的类型约束:alter table 表名 modify 字段 类型 约束;
修改列的名称,类型,约束:alter table 表名 change 旧列名 新列名 类型 约定;
删除一列:alter table 表名 drop 列名;
修改表名:rename table 旧表名 to 新表名;
删除表:
drop table 表名;
操作表记录-增删改(重点)
往表中插入数据:
插入指定列:insert into 表(列,列…)values(值,值…);
插入所有列:insert into 表 values(值,值…);
— – 插入特定的列:没有赋值的列,系统自动赋为null(前提是当前列没有设置not null 约束)
— – 字段名与值的类型、个数、顺序要一一对应。
— – 值不要超出列定义的长度。 — – 插入的日期和字符串,使用引号括起来。
— – 默认所有列插入,values里面必须给表中每一个字段赋值,一般主键给一个null
-- 准备一张商品表(商品id,商品名称,商品价格)
create table product(
pid int primary key auto_increment,
name varchar(40),
price double
);
-- 往表中插入数据
-- 此处演示一些添加的方法一些以及注意事项,使用代码说明,注意自己体会
insert into product(name,price)values("mac",6666.6);
insert into product values(null,'小米',2999.0);
insert into product (name)value('华为');
insert into product values(null,'oppo',3000);
更新表中数据:
语法:update 表名 set 列名 = 值,列名 = 值 ,… [where 条件];
-- 将上面我们添加到表中的数据进行修改
-- 将所有商品的价格修改为5000
update product set price = 5000;
-- 将商品为mac的价格修改为10000
update product set price = 10000 where name = 'mac';
-- 将商品是小米的商品的价格在原有的基础上增加5
update product set price = price + 5 where name = '小米';
删除表中的记录:
删除表中所有记录,也可以指定记录删除:delete from 表 [ where 条件];
删除表中所有数据:truncate table 表;
-- 删除记录
-- 删除表中商品名为小米的商品
delete from product where name = '小米';
-- 删除表中价格高于5000的商品
delete from product where price > 5000;
-- 删除表,然后创建一个和之前结构一样的空表
truncate table product;
delete 和 truncate 区别:
delete删除表中的数据,表的结构还在,删除的记录可以找回
truncate删除是把表直接drop掉,然后创建一个同样的新表,删除记录不可找回
查询记录:
查询所有的列:select * from 表名;
查询某张特定的表:select 列名 ,列名 ,… from 表名;
去重查询:select distinct 列名 from 表名;
别名查询:select 列名 as 别名 from 表名 as 别名 ;(注意:as可以省略)
基本条件查询:select …… from 表名 where 条件;
条件查询中使用到的运算符及关键字
比较运算符:> < >= <= =
between … and…
like:用于模糊查询,一般和% 结合使用
逻辑运算符:and or not
-- 查询表中的数据(重点)
-- 查询所有的列:select * from 表名;
select * from product;
-- 查询某张特定的表:select 列名 ,列名 ,... from 表名;
select pid , name , price from product;
-- 去重查询:select distinct 列名 from 表名;
select distinct price from product;
-- 别名查询:select 列名 as 别名 from 表名 as 别名 ;(注意:as可以省略)
select name as n from product;
select name from product as p;
select name n from product p;
-- 基本条件查询:select ...... from 表名 where 条件;
select * from product where price < 10000;
select * from product where price between 0 and 6000;
select * from product where name like '%华%';
select * from product where price like '5%';
select * from product where name like '%华%' and price > 2000;
select * from product where name like '%小%' or price > 5000;
排序查询:
语法:
select … from 表名 [where 条件] order by 字段名 [ asc|desc],字段名[ asc | desc]…;
注意:asc升序,desc:降序,不指定的情况下为升序
聚合函数:
语法:select 聚合函数(列名) from 表名 [where 条件];
分页查询:
select …… from 表名 limit a,b;
a:从哪里开始查询;b:查询的数量