1.数据库概述
1.存放数据的方式
- 1.存在内存中
- 2.保存在普通文件中
- 3.保存在数据库中
2.什么是数据库
存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作。
1.数据库的优点
数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。
2.数据库管理系统(DBMS)
数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于创建、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系 统访问数据库中表内的数据
3.数据库管理系统、数据库和表的关系
数据库管理系统可以管理多个数据库,每个数据库中可以有多张数据库表。
4.常见数据库
- MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
- Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
- DB2:IBM公司的数据库产品,收费的。常应用在银行系统中.
- SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
- SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
- SQLite: 嵌入式的小型数据库,应用在手机端。
2.sql语句
- 简介
概述
结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。
数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时就需要使用到数据库认识的语言---SQL语言
作用:
通过Sql语言可以对数据库管理系统中的数据库,表,表中的数据进行增删改查。
2.sql分类和语法
1.DDL(Data Definition Language)数据定义语言
用来操作数据库和表
关键字:create,drop,alter等
2.DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改
关键字:insert,delete, update等
3.DQL(Data Query Language)数据查询语言
用来对数据库中表的数据进行查询
关键字:select,from,where等
4.DCL(Data Control Language)数据控制语言(了解)
用来定义数据库的访问权限和安全级别,及创建用户。
关键字:grant, revoke等
5.TCL(Transaction Control Language) 事务控制语言
用于控制数据库的事务操作
关键字: commit,rollback等
sql语法注意事项:
1 SQL语句可以单行或多行书写,以分号结尾
2 可使用空格和缩进来增强语句的可读性
3 MySQL数据库的SQL语句不区分大小写
4 可以使用-- 或# 或/**/的方式完成注释
3.DDL(数据定义语言)
1.操作数据库
1-创建数据库
创建数据库 (掌握)
create database 数据库名;
默认使用的是安装时候选择的字符集
判断是否存在并创建数据库(了解)
create database if not exists 数据库名;
创建数据库并指定字符集(了解)
create database 数据库名 character set 字符集;
2-查询数据库
查询所有数据库
show databases;
查看某个数据库的定义信息
show create database 数据库名称;
3-修改数据库(了解)
修改数据库字符集格式
alter database 数据库名 character set 字符集;
4-删除数据库
drop database 数据库名;
5-数据库的其他操作
查看当前使用的数据库
select database();
切换数据库
use 数据库;
2.操作表
条件:首先要进入到指定的数据库中
创建表
create table 表名(
字段名1 字段类型1[长度],
字段名2 字段类型2[长度]
.....
)
ps:只有字符串类型需要手动加长度,其它类型都不需要加长度(默认有)
-- 需求: 创建一个学生表(id name sex)
数据类型:
java的数据类型 mysql数据库的数据类型
int int
float float
double double
char/string varchar
date date yyyy-MM-dd
time HH:MM:SS
datetime YYYY-MM-DD HH:MM:SS
查看表
查看某个数据库中的所有表: show tables;
查看表结构: desc 表名称;
查询建表语句: show create table 表名;
快速创建表结构: create table 新表名 like 旧表名;
修改表结构
添加表列 : alter table 表名 add 列名 类型;
删除表列 : alter table 表名 drop 列名;
修改列名 : alter table 表名 change 旧名称 新名称 类型;
修改列类型 : alter table 表名 modify 列名 新类型
修改表名称 : rename table 旧表名 to 新表名;
删除表
直接删除表: drop table 表名;
判断表是否存在并删除表(了解): drop table if exists 表名;
4.DML(数据操作语言)
插入记录
添加全部字段
insert into 表名 (字段名1, 字段名2, 字段名3…) values (值1, 值2, 值3);
insert into 表名 values (值1, 值2, 值3);
添加部分字段
insert into 表名 (字段名1, 字段名2, ...) values(值1, 值2, ...);
注意事项
值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。
如果要插入空值,可以不写字段,或者插入null
DOS命令窗口操作数据乱码问题的解决(了解)
- 错误说明:
当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败 - 错误原因:
因为MySQL的设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码 - 解决方案:
设置mysql编码方式- 快捷设置(临时)
set names gbk; - 修改配置文件(永久)
1 my.ini文件,在[mysql]设置字符集:GBK
2 重启mysql服务
- 快捷设置(临时)
蠕虫复制
在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中
前提:表结构得一致
语法格式: insert into 新表 select * from 旧表;
修改记录
不带条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 ; 全改
根据条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 where 字段名=值; 按条件改
删除记录
不带条件删除数据: delete from 表名; 全删
根据条件删除数据: delete from 表名 where 字段名=值; 按条件删
truncate删除表记录: truncate table 表名; 全删
truncate和delete的区别:(面试题)
delete是将表中的数据一条一条删除
truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样
delete删除的数据可以还原 truncate的数据无法还原
5.DQL(数据查询语言)
1.简单查询
查询所有列: select * from 表名;
查询指定列: select 字段名1,字段名2... from 表名;
别名查询: select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名;
清除重复值: select distinct 字段名 from 表名;
查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)
2.条件查询
格式:select * from 表名 where 条件;
比较运算符
> 大于
< 小于
<= 小于等于
>= 大于等于
= 等于
<> 、 != 不等于
逻辑运算符
and(&&) 多个条件同时满足
or(||) 多个条件其中一个满足
not(!) 不满足
范围
between 值1 and 值2 类似与的关系
in(字段1,字段2) 类似或的关系
/not in(字段1,字段2) 不在in中
模糊查询 like
like
% : 模糊多位
_ : 模糊一位
排序 order by 字段
select * from 表名 where 条件 order by 字段名称 [desc | asc] , 字段名 [desc | asc] ;
asc(默认) : 升序 desc : 降序
聚合函数
count() : 计数
sum() : 求和
max() : 求最大值
min() : 求最小值
avg() : 求平均值
分组 group by 字段
select * from 表名 where 条件 group by 分组字段 [having 分组条件 ] ;
having与where的区别(面试题)
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数
分页
limit
select * from 表名 limit 起始数,查询几条;
null查询
#null判断只能用is
SELECT * FROM 表名 WHERE 列名 IS NULL;
SELECT * FROM 表名 WHERE 列名 IS NOT NULL;
查询顺序
select distinct *或者字段或者聚合 from 表名 where 条件 and 条件 或 btween 条件 或 or 条件 或 in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b
6.数据库约束
约束:对表中的数据可以进行进一步的限制,来保证数据的唯一性,正确性和完整性
约束种类:
单表约束
PRIMARY KEY : 主键约束 代表该字段的数据不能为空且不可重复
NOT NULL : 非空 代表该字段的数据不能为空
UNIQUE : 唯一 代表该字段的数据不能重复
多表约束
外键约束
网友评论