关系型数据库
不是把所有的数据存放在同一个表里,而是工具分类进行存储;
mysql数据库的安装和卸载
- MySQL数据库的卸载
- 找到mysql安装目录,打开init文件
- 通过控制面板直接卸载
- 清楚init文件记录的路径清楚缓存;
- mysql数据库的安装
数据库的链接
mysql -u root -p
默认密码: root
sql语言
- Structured Query Language 结构化查询语言
- sql非过程性语言
- 过程性的语言: 依赖上一条或者几条语言执行;
- 非过程性语言:一条语言就对应一条返回结果;
- sql语言基础
- 在Oracle使用自己的语言,PL/SQL只能在Oracle来使用
数据库的创建
- create database 数据库的名称;
- create database 数据库的名称 character set 编码 collate 校对规则;
查看数据库
- show databases 查看数据库
- use 数据库名称 使用数据库
- show creat databse 数据库名称 查看数据库创建的信息;
- select database(); 查询当前使用的数据
删除数据库
- drop database 数据库名称; 删除数据库
修改数据库
- alter database 数据库名称 character set 'gbk' collate '校对规则';
创建表
create table 表名称(
字段1 类型(长度) 约束,
字段2 类型(长度) 约束,
字段3 类型(长度) 约束
)
创建表的时候最后一个字段不能使用逗号;
数据库创建表的类型;
- 字符串:
- varchar 长度可变;
- char 长度不可变;不够的用空格来补全;
- blob 字节(电影 MP3)
- 数值型
- tinyini、 smallint、 int、 bigint、 float、 double
- 逻辑值
- bit
- 在Java中是true或者false
- 在数据库bit类型是1或者0
- 日期
- date 只包含日期(年月日)
- time 只包含(时分秒)
- datetime 包含日期时间插入数值时,字符值为空,字段值就为空
- timestamp 包含日期时间插入数值时,字符值为空,字段值默认获取当前系统时间;
练习表结构
create table emp(
id int,
name varchar(30),
gender char(5),
birthday date,
entry_data date,
jop varchar(50),
sal double,
resume text
);
操作表结构
- show tables 查看所有表;
- desc 表名字 查看表结构的详细信息;
- show create table 表名称 查看创建表信息;
- drop table 表名称; 删除表
修改表
- 添加字段: alter table 表名称 add 字段名称 数据类型(长度) 约束;
- 修改字段: alter table 表名称 modify 字段名称 数据类型(长度) 约束;
- 删除字段: alter table 表名称 drop 字段名称;
- 修改字段名称:alter table 表名称 change 旧字段 新字段 数据类型(长度) 约束;
- 修改表名称:rename table 旧表名 to 新表名;
插入数据
- insert into 表 (字段1,字段2,字段3) value (值1,值2,值3);---向表中指定字段添加值
- insert into 表 values (值1,值2,值3); ---向表中的所有字段添加值
insert into user values (1,'ton','nv','1990-11-11','2018-11-11','it',10000,'hello');
insert into user values (2,'美美','nv','1990-11-11','2018-11-11','it',10000,'hello');
insert into user values (4,'熊大','nv','1990-11-11','2018-11-11','it',7000,'hello');
insert into user values (5,'小风','nv','1990-11-11','2018-11-11','it',6000,'hello');
insert into user values (6,'芙蓉','nv','1990-11-11','2018-11-11','it',5000,'hello');
字符串和日期类型,必须使用单引号括起来
修改数据
语法: update 表名称 set 字段1=值1,字段2=值2;
update user set sal=5000,gender='nan';
update user set sal=3000 where username='熊大';
没有where关键字默认修改所有记录 有where关键字,修改符合条件的记录
删除数据
delete from 表;
数据支持回复,回滚;
truncate 表;
数据不可恢复,回滚
查询数据
select *from 表名字;
select 字段1,字段2,字段3 from 表名字;
select 字段1,字段2,字段3 from 表名字 where 条件;
select distinct 字段 from 表名字; 去除重复的数据
查询语句的时候可以带有运算
where可以使用的符号
* > < <= >=
模糊查找使用like,多条件查找使用in;
select 字段1 from 表名字 where 字段 like '条件%';
select 字段1 from 表名字 where 字段 in(条件);
order by排序
order by 字段 asc | desc;
- asc --代表升序(默认);
- desc --代表降序;
order by 放在select语句末尾
聚合函数
tip:聚合函数操作都是莫一列的数据;
- count() --求数量
- select count(*) | select count(列名) from 表名字; --某一列数据行的总数
- sum() ---求和
- 只能最数值求和;没有sum(*);
- avg() --求平均分
- max() min() --最大值 --最小值
分组查询
group by 字段条件
练习
create table orders(
id int,
product varchar(20),
price float
);
约束
- 唯一约束:使用关键字unipue;
- 非空:使用关键字not null
- 主键约束: 关键字primary key
测试主键
create database day06;
use dat06;
create table person(
id int primary key,
username varchar(20)
)
主键的自动递增auto_increment
create table person (
id int primary key auto_increment,
usename varchar(20)
);
insert into person values (null, 'b');
外键约束
create table emp(
eid int primary key auto_increment,
ename varchar(30),
sal double,
dno int,
foreign key (dno) references dept (id)
);