关系型数据库Mysql

334 阅读4分钟

关系型数据库

不是把所有的数据存放在同一个表里,而是工具分类进行存储;

mysql数据库的安装和卸载

  1. MySQL数据库的卸载
    1. 找到mysql安装目录,打开init文件
    2. 通过控制面板直接卸载
    3. 清楚init文件记录的路径清楚缓存;
  2. mysql数据库的安装

数据库的链接

mysql -u root -p 默认密码: root

sql语言

  • Structured Query Language 结构化查询语言
  • sql非过程性语言
    1. 过程性的语言: 依赖上一条或者几条语言执行;
    2. 非过程性语言:一条语言就对应一条返回结果;
  • sql语言基础
    1. 在Oracle使用自己的语言,PL/SQL只能在Oracle来使用

数据库的创建

  1. create database 数据库的名称;
  2. create database 数据库的名称 character set 编码 collate 校对规则;

查看数据库

  1. show databases 查看数据库
  2. use 数据库名称 使用数据库
  3. show creat databse 数据库名称 查看数据库创建的信息;
  4. select database(); 查询当前使用的数据

删除数据库

  1. drop database 数据库名称; 删除数据库

修改数据库

  1. alter database 数据库名称 character set 'gbk' collate '校对规则';

创建表

create table 表名称(
    字段1 类型(长度) 约束,
    字段2 类型(长度) 约束,
    字段3 类型(长度) 约束
)

创建表的时候最后一个字段不能使用逗号;

数据库创建表的类型;

  • 字符串:
    1. varchar 长度可变;
    2. char 长度不可变;不够的用空格来补全;
    3. blob 字节(电影 MP3)
  • 数值型
    1. tinyini、 smallint、 int、 bigint、 float、 double
  • 逻辑值
    1. bit
    2. 在Java中是true或者false
    3. 在数据库bit类型是1或者0
  • 日期
    1. date 只包含日期(年月日)
    2. time 只包含(时分秒)
    3. datetime 包含日期时间插入数值时,字符值为空,字段值就为空
    4. timestamp 包含日期时间插入数值时,字符值为空,字段值默认获取当前系统时间;

练习表结构

create table emp(
    id int,
    name varchar(30),
    gender char(5),
    birthday date,
    entry_data date,
    jop varchar(50),
    sal double,
    resume text
    );

操作表结构

  1. show tables 查看所有表;
  2. desc 表名字 查看表结构的详细信息;
  3. show create table 表名称 查看创建表信息;
  4. drop table 表名称; 删除表

修改表

  1. 添加字段: alter table 表名称 add 字段名称 数据类型(长度) 约束;
  2. 修改字段: alter table 表名称 modify 字段名称 数据类型(长度) 约束;
  3. 删除字段: alter table 表名称 drop 字段名称;
  4. 修改字段名称:alter table 表名称 change 旧字段 新字段 数据类型(长度) 约束;
  5. 修改表名称:rename table 旧表名 to 新表名;

插入数据

  1. insert into 表 (字段1,字段2,字段3) value (值1,值2,值3);---向表中指定字段添加值
  2. 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
);

约束

  1. 唯一约束:使用关键字unipue;
  2. 非空:使用关键字not null
  3. 主键约束: 关键字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)
);