一.数据库(DataBase)
什么是数据库?
数据存放在一张张表里,而表又是存放在数据库中,数据库就是所有存放数据的表的"文件夹".
学习数据库主要就是学习如何对数据进行增删改查操作
SQL
Structured Query Language:结构化查询语句
使用该语句可以进行与数据库进行交互,完成对数据的增删改查.
DBMS
DataBase Management System:数据库管理系统(数据库软件)
主流的有:MYSQL
MariaDB
Oracle
SQLServer
DB2
SQLite
二.SQL语句
SQL语句分类:
DDL:数据定义语言,主要是对库和表相关的操作
DML:数据操作语言,主要是对数据进行增删改操作
DQL:数据查询语言,对数据进行查询
TCL:事务控制语言
DCL:数据控制语言
数据类型
1.整型:
int(m)和bigint(m),m表示长度
2.字符串类型:
char(m):固定长度,一般用于存放类似性别这种长度固定的字符串
varchar(m):可变长度字符串,会根据内容大小来改变长度,更节省空间
text(m):可变长度字符串,一般存放255个以上字符
3.浮点型:
double (数1,数2) 数1表示总长度,数2表示小数点后的长度
4.日期型:
date:保存格式:年月日
time:保存格式:时分秒
datetime:保存格式:年月日 时分秒
timestamp:时间戳,从1970年1月1日到现在的毫秒数,保存的是年月日时分秒,默认是系统当前时间
SQL语句格式:
1.以;结尾
2.不区分大小写
3.可以有空格和换行,但结尾的时候一定要加;
与数据库相关的SQL语句
1.创建数据库
create database 数据库名 charset=utf8;
2.查看所有数据库
show databases;
3.查看数据库信息
show create database 数据库名;
4.删除数据库(慎用!)
drop database 数据库名;
5.使用数据库(必须先使用数据库才能对表和数据进行操作)
use 数据库名;
与表相关的SQL语句
1.创建表
create table 表名 (字段1名 字段类型(长度) , 字段2名 字段类型(长度)...) charset=utf8;
2.删除表
drop table 表名;
3.查看所有的表
show tables;
4.查看表信息
show create table 表名
5.查看表结构
desc 表名;
6.重命名表
rename table 原表名 to 新表名;
7.添加字段
alter table 表名 add 字段名1 字段类型;------------------默认添加在末尾
alter table 表名 add 字段名1 字段类型 first;------------添加在最开始的地方
alter table 表名 add 字段名1 字段类型 after xxx;-----在xx字段后添加
8.删除字段
alter table 表名 drop 字段名
9.修改字段
alter table 表名 change 原字段名 新字段名 新字段类型
与数据相关的SQL
1.增加数据
insert into 表名 values (字段1值,字段2值...);----------------全表插入
insert into 表名(字段1,字段2....) values (值1,值2...);------字段插入
insert into 表名 values (字段1值,字段2值...),(字段1值,字段2值...)....;--------批量插入
insert into 表名(字段1,字段2....) values (值1,值2...),(值1,值2).....;------------批量插入
2.删除数据
delete from 表名;---------------------删除表中所有数据
delete from 表名 where 条件;-----根据条件删除表中数据
3.修改数据
update 表名 set 字段名=值;-------------------------------------对表中所有数据进行修改
update 表名 set 字段名=值 where 条件;---------------------根据条件修改表中数据
主键
什么是主键?
作为表的唯一标识的字段,在创建表的时候,在字段后加primary key
主键约束
主键非空且唯一
主键自增策略
一般在主键后面会添加主键自增auto_increment,每次添加的时候就可以不用添加主键中的内容,主键的值会自动加1
当插入数据的时候插入了主键的值,再进行自增的时候会从当前最大的那个值开始自增
当删除其中一条数据时,主键的值会发生改变,并且那条数据对应的主键的值也会被删除,即id=3的数据被删除之后,后面再插入数据就是从id=4开始,需要添加id=3需手动添加
查询SQL语句
1.查询表中所有数据
select*from 表名;
2.查询表中的字段
select 字段名 from 表名;
select 字段名1,字段名2... from 表名;
3.给字段起别名,在字段名后面跟空格,可以加" ",' '
select 字段名 别名 from 表名;
select 字段名1 别名,字段名2 别名... from 表名;
4.where 关键字,后面跟条件
select*from 表名 where 条件;
5.is null/is not null判断是否数据是否为空
select*from 表名 where 字段名 is null/is not null;
6.去重
select distinct 字段名 from 表名;
7.and / or 并 / 或
select * from 表名 where 条件1 and 条件2;
select * from 表名 where 条件1 or 条件2;
8.比较运算符 < > <= >= != <>
9.between.....and.... 在...之间,闭区间
select*from 表名 where 字段名 between 条件1 and 条件2;
select*from 表名 where 字段名 not between 条件1 and 条件2;
10.in 在...之间,当查询条件为同一字段的两个不同的值的时候可以使用该关键字
select*from 表名 where 字段名 in(条件1,条件2)
select*from 表名 where 字段名 not in(条件1,条件2)
11.模糊查询 like
一般使用%/_来表示模糊查询的条件
%表示0或多个字符
_表示一个字符,一个下划线代表一个字符
select*from 表名 where 字段名 like 条件;
12.排序order by
select * from 表名 order by 升序/降序;
升序:默认或asc
降序:desc
13.分页查询 limit
select*from 表名 limit 数1,数2;
数1表示跳过的数据数(页数-1乘以查询的条数)
数2表示查询的条数
例如:查询第3页的5条数据
select*from 表名 limit 10,5
14.聚合函数
avg(字段名):平均值,max(字段名):最大值,min(字段名):最小值,sum(字段名):求和,count(字段名/*):求个数
select avg(字段名) from 表名 where 条件;
15.分组,根据字段分组,查询满足该字段的每一条信息
查询中出现了聚合函数和普通列即混合列时,需要分组,按照非聚合列分组
select*from 表名 group by 字段名
16.having 跟分组一起使用,用于包含聚合函数的条件
select*from 表名 group by 字段名 having avg(字段名)>条件;
查询条件书写顺序
select*from 表名 where 条件 group by 字段名 having 条件 order by 字段名 limit 跳过的条数,要查询的条数
子查询(嵌套查询)
将两次查询拆开,将上一次查询的结果作为本次查询的条件
表与表之间的关系
一对一:A表中的一条数据只对应B表中的一条数据
一对多:A表中的一条数据对应B表中的多条数据,B表中的一条数据对应A表中的一条数据
多对多:A表中的一条数据对应B表中的多条数据,B表中的一条数据对应A表中的多条数据
多表联查
3种方式:
1.笛卡尔积,查询表1与表2的交集
select*from 表1,表2 where 关联关系;
2.连接查询,查询表1与表2的交集
select*from 表1 join 表2 on 关联关系;
3.外连接,左外查询表1的所有和表2交集的数据,右外查询表2的所有和表1交集的数据
select*from 表1 left/right join 表2 on 关联关系;
多对多关系查询
1.创建另外一张表,存放表与表之间的关系
2.select*from 表1 join 表2 on 关联关系 join 表3 on 关联关系
三.约束
6中约束
1.主键约束
非空且唯一
2.非空约束
not null
3.唯一约束
unique
4.默认约束
default xxx
5.检查约束
check(条件1 and 条件2)
字段值必须符合检查约束的范围内容
6.外键约束 foreign key
使用明确的一段代码表示两张表之间的关系
foreign key(本表主键) references 表名(主键)
约束情况
1.子表的主键值必须取自主表的主键值
2.主表的记录没有被子表使用,才可以删
四.JDBC
Java数据库连接,JavaDateBaseConnectivity
1.创建连接对象
Connection conn = DirverManager.getConnection("url","user","password");
2.创建执行SQL语句对象
Statement s = conn.createStatement();
3.执行SQL语句
s.execute("SQL语句");
s.executeUpdate("SQL语句");增删改使用
ResultSet rs = s.executeQuery("SQL语句");查询使用
4.关闭资源
conn.close();