不想去网上下载的小伙伴关注并且戳私信给我
数据库厂商
甲骨文公司:oracle ,mysql
微软公司:sql server
其他:mongodb redis
三个阶段
层次型
网状型:access数据库,存储数据较小,数据排列复杂,存储方便,获取较为复杂
关系型:以二维表的形式,存储数据。表与表之间产生了关联, mysql
其他数据库 :redis数据库
以键值对的形式存储数据 map集合的方式存储,结构简单,查询较快,弥补了关系性数据库存储数据类型较少的缺### 2、数据库分类:
根据数据存储结构的不同将数据库分成两类:
1、关系型数据库:以二维表的形式存储数据,并表与表之间是有关联的。
2、非关系型数据库:以文档或键值对形式存储数据,结构简单,数据之间没有关系,利于扩展。
MySQL是一个**关系型数据库管理系统****,**由瑞典MySQL AB 公司开发,属于 Oracle 旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。
MySQL是一种关系型数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。
MySQL所使用的 SQL 语言是用于访问数据库的最常用标准化语言。MySQL 软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择 MySQL 作为网站数据库。
1、下载https://dev.mysql.com/downloads/mysql/
选择安装版本
开始安装
选择自定义安装
选64位
选择安装路径
选择mysql的端口号 3306
填写msql登录密码 账号 root 密码 root
mysql的服务器名 mysql57
安装成功
2、安装步骤
3、验证安装是否成功
1)打开mysql自带的命令行提示窗口 输入 mysql -hlocalhost -uroot -proot
2)通过DOS窗口
如果测试时显示mysql不是内部命令,则需要配置jdk环境变量:
此电脑-鼠标右键选择“属性”-选择“高级系统设置”
配置好环境变量后,一定要重开启DOS窗口,输入:mysql -hlocalhost -uroot -proot
4、开启和关闭mysql服务
第一种方式:
此电脑–鼠标右键打开管理如下:
第二种方式:通过DOS命令 需要以管理员的身份进行操作
net stop mysql 关闭服务 服务器的名称
net start mysql 开启服务
5、卸载数据库
1)从程序里把mysql程序卸载
2)将安装的mysql文件全部删除,需要删除两个
3)重新启动电脑,此时重新安装。
结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
主要作用:对数据库的增删改查
1、数据查询语言(DQL:Data Query Language):其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字==[SELECT](https://baike.baidu.com/item/SELECT/10735068)是DQL(也是所有SQL)用得最多的动词,其他DQL常用的保留字有WHERE,ORDER BY,GROUP BY和HAVING==。这些DQL保留字常与其它类型的SQL语句一起使用。 [4]
2、数据操作语言(DML:Data Manipulation Language):其语句包括动词==INSERT、UPDATE和DELETE==。它们分别用于添加、修改和删除。 [4]
3、事务控制语言(TCL):它的语句能确保被DML语句影响的表的所有行及时得以更新。包括COMMIT(提交)命令、SAVEPOINT(保存点)命令、ROLLBACK(回滚)命令。
4、数据控制语言(DCL):它的语句通过GRANT或REVOKE实现权限控制,确定单个用户和用户组对数据库对象的访问。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。 [4]
5、数据定义语言(DDL):其语句包括动词CREATE,ALTER和DROP。在数据库中创建新表或修改、删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。 [4]
6、指针控制语言(CCL):它的语句,像DECLARE CURSOR,FETCH INTO和UPDATE WHERE CURRENT用于对一个或多个表单独行的操作。
七大关键字
select 查询
update 更新 数据(修改数值)
delete 删除 删除记录
insert 插入记录
create 创建 数据库 ,表
alter 修改(修改表的结构,字段,格式,数据类型)
drop 删除 删除表结构
sql是一个标准的结构化查询语言,可以给各大数据库厂商使用
DDL操作数据库:
1、查看mysql服务器上的所有数据库
查看创建数据库时的代码:
show create database 数据库名;
2、创建数据库
create database [if not exists]数据库名 [character set 编码(gbk uft8…)];
3、删除数据库
drop database 数据库名
4、修改alter
alter database 数据库名 character set 新字符集;
1、整型 tinyint int
2、小数 float double
3、布尔 没有布尔类型,一般使用int代替 1–true 0–false
4、字符串:
(1) varchar(len) 可变长度 varchar(20) 根据字符串的实际长度存储,定义的长度只是用来限制存储大小上限范围。
如果字符的实际长度没有超出定义长度,剩余的部分就截取掉了
姓名,邮箱,地址,qq,微信
(2) char(len) 固定长度 char(20) 字符串长度不足定义长度时,会用空格填充,不会自动调整。
学号,性别,手机号码
5、日期类型
date 年月日 对应是java.util.Date 包含年月日,时分秒 java.sql.Date 只包含年月日
time 时分秒
datetime 年月日时分秒 9999-12-31 23:59:59 默认值是null
timestamp 年月日时分秒 2037-12-31 23:59:59 默认值是系统当前时间
use 数据库名;
创建学生表 后期开发中:1个表对应一个类,一条记录对应一个对象
1、学生表 id name
2、查看数据库中的所有表show tables;
3、查看表结构:desc 表名;
4、查看创建数据表文本信息:show create table 表名;
5、修改表名:alter table 表名 rename 新表名;
6、向表中添加新列:alter table 表名 add 列名 数据类型; 向表中已存在的列最后追加一列
alter table 表名 add 列名 数据类型 after 已存在的列名;在已存在的列名后面插入一个新列。
alter table 表名 add 列名 数据类型 first; 在已存在的所有列最前方添加新列
7、删除表中的列:alter table 表名 drop 列名;
8、修改列信息:alter table 表名 modify 列名 数据类型;
注意:modify只能修改列的信息,不能改列名。
alter table 表名 change 列名 新列名 数据类型;
change既可以改列的信息,还可以改列名。
9、删除表:drop table 表名;
可视化工具
创建数据库
命令方式
创建表结构 1
使用命令创建
#创建学生表
create table student(
id int(4),
name VARCHAR(10),
age int(3)
);
数据操作语言:针对数据表中的数据进行添加、修改、删除操作。关键字:
添加:insert
修改:update
删除:delete
mysql中的注释:
单行插入:一次向表中插入一条数据
语法格式:
insert into 表名 values(值1,值2,值3…);
insert into student values(1001,'张三',20);
insert into student values(1003,"王五",30);
– 给部分列插入数据
insert into 表名(列1,列2,列3…) values(值1,值2,值3…);
#给部分列插入数据
insert into student(id,name) values(1005,'赵柳');
insert into student(id,name,age) values(1005,'赵柳abcdefgh',30);
多行插入:一次向表中插入多条数据
语法格式:
insert into 表名(列名1,列名2,列名3…)
values(值1,值2,值3…),(值1,值2,值3…),(值1,值2,值3…)…;
# 一次插入多条数据
insert into student(id,name,age)
values(1007,'张学友',25),
(1008,'刘德华',30),
(1009,'郭富城',35);
注意事项:
1、值的个数、顺序、数据类型一定要与列保持一致
2、整型列直接给值,字符类型一定放在’'或 ""给值
3、不指定列名的情况下,按原始表中列的个数、顺序给值
语法格式:
update 表名 set 列名1= 新值1,列名2=新值2…[ where 更新条件]
# 修改表数据 update
update student set name = '赵柳柳' where id = 1005;
# 一次修改多个数据
update student set age = 50,name = '老王' where id = 1002;
语法格式:
delete from 表名 [where 删除条件];
truncate table 表名; 只能删除表中全部数据 delete from 表名
# 删除数据 delete 删除数据,不删除结构
delete from student where age = 30;
# 删除数据 truncate 后面没有where语句 不支持条件删除
truncate table student where id = 1009;
面试题:delete 和 truncate的区别
1:delete 支持条件删除 可以跟where语句 ,truncate不支持条件删除
2:delete删除的效率较低,有日志记录存在,所以支持数据回滚操作
3:truncate效率高,没有日志记录,不支持数据回滚操作
4:truncate慎用 ,没有记录可恢复
数据查询语言:根据用户需求从数据表中筛选出符合条件的数据,以结果集的形式返回给用户。查询操作对原始表的数据没有任何影响。
查询关键字:select
1、查询全部:select * from 表名;*通配符 表示所有列
select * from student;
2、查询部分列: select 列名1,列名2… from 表名;
select id,name,age from student;
3、查询取别名:select 列名 as 别名 from 表名;
# 查询给别名 as 别名 ,查询不会改变表的结构
select id as '学号',name as '姓名',age as '年龄' from student;
select id 学号,name 姓名,age 年龄 from student;
4、查询部分行,条件查询 where 条件使用逻辑运算符拼接(and or not )
# 查询学号是1001的学生
select * from student where id = 1001;
# 查询年龄大于20的学生
select * from student where age > 20;
# 查询年龄大于20的女生
select * from student where age > 20 and sex = '女';
# 查询年龄大于20的。或者性别是女生
select * from student where age > 20 or sex = '女';
# 查询班里所有不是女生的
select * from student where sex !='女';
5、范围查询:in 表示或者的含义
select * from student where name ='郭富城' or name = '刘德华';
select * from student where name in('郭富城','刘德华');
6、区间查询 between … and …(在 …之间)前小后大,并且包含边界值
select * from student where age>=20 and age<=25;
select * from student where age between 20 and 25;
7、模糊查询 like 通配符:% 表示0到多个 _ 表示1个
#查询班里姓的刘的学生 % 表示通配符中 0-n
select * from student where name like '刘%';
#查询班里姓的刘的学生 姓名只有2个字 _ 表示通配符中1个
select * from student where name like '刘__';
#查询班里名字中带刘的名字
select * from student where name like '%刘%';
8、空值查询null, is null, is not null
#查询邮箱是null
select * from student where email is null;
select * from student where email = '';
#查询邮箱不是null
select * from student where email is not null;
注意:null和’'不一样
9、限制返回行 limit 分页LIMIT index,count
#查询表中第一条数据
# limit index,pageSize
# index 表示起始下标从0开始
# pageSize 表示当前页显示的记录数
select * from student limit 0,1;
select * from student limit 0,2;
select * from student limit 2,2;
升序:asc 默认
降序:desc
# 按照年龄从小到大排序 默认是升序
select * from student order by age asc;
select * from student order by age desc,id desc;
注意:可以对多个字段同时排序,当前面字段的值相同时,在按照后面的字段排序
11、去重查询distinct
#查询班里所有的性别 去重查询 distinct
select distinct sex from student;