小白学习Java第二十八天

今日内容

  1. 数据库简介
  2. MySQL的安装、卸载与管理
  3. SQL语言(DDL  DML
  4. 约束

一. 数据库简介

(一)理解

 

用于持久化保存数据的管理软件
保存数据的技术:
         1. 将数据保存到内存中:变量对象数组集合
                  特点:易失性(临时存在计算机内存中,不能持久保存)
          2.
持久化保存技术:IO  数据库
                  特点:可操作性比较差 效率低

(二)特点

1. 可以持久化保存数据
2. 保存数据是有组织、有结构的
3. 以表的形式保存数据,方便操作
4. 提供了丰富的sql语句,操作数据

(三)数据库的分类

关系型数据库:以二维表的形式存储数据 ,表与表之间是有关联的

例如:OrcaleMySQL SQLServer...
非关系型数据库:以文档或键值对的形式存储数据,没有关联,操作灵活方便,效率高

例如:redisMongodbHBase...

对比:

 

(四)数据库系统的结构

1. 一个DBMS(数据库管理系统) 可以有多个数据库(database) DB
2.
一个数据库(database) 可以有多个表(table)
3.
一个表中 可以有多条数据 多个字段()

 

二. MySQL的卸载和安装

(一)MySQL的安装

下载mysql地址:MySQL

 

 

 

 

下载时注意操作系统和位数,选择合适的版本进行下载。

1. 安装MySQL服务,参考MySQL安装视频

注意事项:

  1. 安装过程中必须设置登录密码,记住,记住,记住!!!

 

  1. 安装过程中记得修改编码方式为UTF8

 

  1. 修改my.ini文件中的编码方式,如果文件没有权限修改,可以将修改后的文件另存为,然后再去替换源文件即可。


2. 安装客户端SQLyog,可视化显示数据库中的内容,傻瓜式安装。

 

 

(二)卸载

1. 控制面板程序和功能里,卸载软件
2. 清除残留文件
         ① 安装目录  默认:C:\Program Files\mysql
         ②
保存数据结构的目录 默认:C:\ProgramData\mysql  这是一个隐藏文件,必须先将显示隐藏文件的复选框选中才能找到。
3. 检查注册表:删除mysql相关    win+r    :regedit    
后百度查找文件位置

如需要重新安装,必须重新启动电脑。

(三)测试

两种检测数据库是否安装成功的方式:

  1. 使用mysql自带的命令行窗口

  1. 使用windows自带DOS窗口

打开DOS窗口的方式:win+R

 

 

连接服务器的命令:mysql -hlocalhost -uroot -proot

说明:

mysql:是连接数据库服务器的命令,相当于之前java中的javac编译命令

-hlocalhost: -h 表示主机名  localhost表示本机,也可以用ip地址127.0.0.1 如果连接远程服务器则使用远程服务器的ip地址。

-uroot-u 表示 username用户名,root是超级管理员的用户名,大家都一样

-proot-p 表示password密码,安装数据时配置的密码,我的密码是root,你设置的是什么用什么。

问题:提示mysql不是内部命令,需要配置系统的环境变量

 

配置好环境变量后一定要重新开启一个DOS窗口进行测试。

(四)开启和关闭MySQL服务

如果连接mysql数据库服务器时,出现下面的连接不上的问题:

 

有两种方式开启和关闭mysql服务:

  1. 界面操作

 

多半的原因是因为服务器被关闭了,只需要打开服务。

 

  1. 命令操作

net start mysql   开启服务

net stop mysql   关闭服务

使用命令控制服务开启和关闭时,可能会遇到下面的错误,原因是没有通过管理员身份打开DOS窗口。

 

通过管理员身份打开DOS窗口:

 

 

 

 

结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统

分类

  1. DDL 数据定义语言 针对数据库以及数据库对象(、视图、存储过程、触发器、索引)进行创建、修改、查询、删除操作,关键字:createdropalertshow
    2 DML 数据操作语言:对数据库表中数据的增 关键字:insertdeleteupdate
    3
    DQL 数据查询语言:对数据库表中数据 查询 关键字:select
    4 DCL 数据控制语言:指定用户分配权限 关键字:grantrevoke
    5
    TCL 事务控制语言:对事务进行提交和回滚操作,关键字:commitrollback

四. DDL

Data Definition Language数据定义语言
关键字: create   drop   alter  show

(一)库的基本操作

    1. 查看所有的数据
       show databases;
    2.
创建数据库
       create database [if not EXISTS] 库名;
    3. 删除数据库
       drop database [if EXISTS] 库名;
    4. 选中库
       use 库名;
    5.
查看创建数据库语句
     show create database 库名;

(二)表的操作

数据库中的数据类型:

  1. 整型 tinyint  int  bigint
  2. 浮点型:double(8,2)  float
  3. 字符类型:char(len)固定长度类型  varchar(len)可变长度类型  char(10)   varchar(10)

1)固定长度类型char表示申请的多长就占用多长,没有字符的位置用空格填充;

2)可变长度类型varchar表示申请了一定的空间后占用其中一部分,剩余部分空间释放。

注意:一个汉字占2个字符空间。

  1. 日期类型:

1time   时分秒

2date   年月日

3datetime  年月日时分秒(推荐)

表操作:
    1. 查看所有表
        show tables;
    2.
创建表
       create table 表名(

列名数据类型 【约束说明】,

列名数据类型 【约束说明】,

.......

列名数据类型 【约束说明】

);
    3. 删除表
        drop table [ if exists] 表名;
    4. 查看表结构
        desc 表名;
    5. 查看创建表语句
        show create table 表名;

  6.  修改表
          1)修改表名
    alter table 原表名 rename 新表名;

 

2)修改列名
         alter table 表名 change column 原列名 新列名 类型;

   

3)修改列的类型
         alter table 表名 modify column】列名 新类型;

 

4)添加列
         alter table 表名 add column 列名 类型;

5)删除列
         alter table 表名 drop column 列名;

 

约束:指的是一种规则,确定数据库中数据的准确性(完整性)。这些约束都是给数据库中表添加的。

约束分类:

  1. 非空约束:not null  设置了非空约束的列不允许给null
  2. 主键约束: primary key  在一张表中一般是要设置一个主键约束的,也可以没有。设置了主键约束的列,非空且唯一,一个表中主键约束的个数最多就有一个。
  3. 唯一约束 unique 设置了唯一约束的列不能出现重复数据,唯一约束在一张表中可以有多个,而且可以为null,但null值最多只有一个。
  4. 默认值约束:default 设置了默认值约束的列,插入操作时如果不给值就会使用设置的默认值来代替。

添加约束

方式一:创建表的同时添加约束

方式二:通过修改表的属性添加约束

方式三:通过添加约束的语法添加约束(表级约束)

  1. 方式一:创建表的同时添加约束

 

CREATE TABLE stu(

id INT PRIMARY KEY,-- 学号主键,自动非空

NAME VARCHAR(30) NOT NULL UNIQUE, -- 姓名非空唯一

age INT NOT NULL,

sex INT NOT NULL DEFAULT 1,-- 性别非空默认为1

pic VARCHAR(500) NOT NULL,

degree VARCHAR(200) NOT NULL,

mark VARCHAR(200)

);

2.方式二:通过修改表的属性添加约束

alter table 表名 modify column 字段名 类型 约束;

 

# 添加学号主键约束

ALTER TABLE student MODIFY sid INT PRIMARY KEY;

# 添加姓名为唯一非空约束

ALTER TABLE student MODIFY sname VARCHAR(50) UNIQUE NOT NULL;

# 添加年龄非空约束

ALTER TABLE student MODIFY age INT NOT NULL;

# 添加性别默认值非空约束

ALTER TABLE student MODIFY sex INT NOT NULL DEFAULT 1;

3.方式三:通过添加约束的语法添加约束(主要针对表级约束

alter table 表名 add constriant 约束名 约束类型(作用的列名)

 

# 修改添加主键约束

ALTER TABLE student ADD CONSTRAINT PRIMARY KEY (sid);

# 修改添加唯一约束

ALTER TABLE student ADD CONSTRAINT UNIQUE (sname);

# 修改添加默认约束

ALTER TABLE student ALTER sex SET DEFAULT 1;

补充:自增列AUTO_INCREMENT,设置了自增列的字段,可以不给值,让它自动增长,从1开始的,也可以后动给值,但给值一定是表中没有的。

  1. 只有整型列才可以设置自增
  2. 必须是主键才可设置自增
  3. 自增列从1开始,每次增加1
  4. 一旦设置了自增列的记录被删除,修改,插入时出错了,没有一次插入成功,被使用过的自增列编号就不会再出现了。
  5. 在删除表中数据时,如果使用delete删除后,自增列不会从头开始,如果用truncate删除,自增列会从头开始。

ALTER TABLE student MODIFY sid INT AUTO_INCREMENT;

列级约束:对一个数据列建立的约束,称为列级约束。例如:非空约束、默认值约束。

列级约束既可以在列定义时声明,也可以在列定义后声明。

表级约束:对多个数据列建立的约束,称为表级约束。例如:组合主键,外键约束。

表级约束只能在列定义后声明。

删除约束

# 删除主键约束

ALTER TABLE student DROP PRIMARY KEY;

# 删除唯一约束

ALTER TABLE student DROP INDEX sname;

# 删除默认约束,直接修改列的属性

ALTER TABLE student MODIFY sex INT NOT NULL;

# 删除非空约束

ALTER TABLE student MODIFY age INT;

五. DML

Data Manipulation Language数据操作语言
关键字: insert  delete  update

(一)插入

1.单行插入

语法:

insert into 表名(列名1,列名2,...) values(1,2,....);

注意事项:列名可以省略,如果省略列名就要求值与原始表中列的个数、类型、顺序保持一致,这种方法不推荐,容易出错。

2. 多行插入
insert into 表名(列名1,列名2,...) values(1,2,....),(1,2,....),......

注意:
         1. 整型、浮点型不需要加引号,字符型和日期类型需要加引号
         2. 插入的值必须满足类型和约束
         3. 值和列名一一对应
         4. 如果约束是 null default 可以不插入

(二)删除

 

语法:
1. 删除单个
delete from 表名 where 条件;

2. 删除所有
① delete from 表名;
② truncate table
表名;

【面试题】简述delete删除和truncate删除的区别
1. delete 删除 后可以接where条件 truncate不可以。
2. delete 删除一行一行删除  truncate删除整个表,再创建一个与原表结构相同的新表,truncate删除效率高。
3. delete支持事务,truncate不支持事务。
4. delete删除自增值再次插入自增继续接着自;truncate 删除自增从新从1开始。

 

(三)修改 

语法:
         update 表名 set 列名1=新值1,列名2=新值2,... where 条件;

 

六. 综合案例

1.  创建数据库bookdb

 

2.  在数据库中创建两张表:bookType表和book

bookType:图书分类表

表中包含2列:

cid (类型编号)

cname(类型名称)

book:图书表

表中包含8列:

id(编号)

title(书名)

price (价格)

author(作者)

publisher(出版社)

description (描述信息)

pdate(出版日期)    datetime

要求:

1)两个表中cidid分别都是主键自增

2)两个表中cnametitle都要求唯一

3)两个表中所有字段均不允许为空

4)表中publisher字段要求默认为‘中国教育出版社’

 

3.  分向两张表中添加以下测试数据:下图数据仅供参考

 

 

 

INSERT INTO booktype(cname)VALUES('小说'),('散文'),('诗歌'),('历史'),('计算机');

INSERT INTO book(title,price,author,publisher,description,pdate)

VALUES('java编程思想',23,'张三','北京出版社','读书好','1998-3-4'),

('摆渡人',45.6,'李四','天津出版社','好书再不买就没了','2009-5-4'),

('mysql数据库入门',34.5,'刘小东','中国教育出版社','数据库是后台技术','2003-3-4'),

('百年孤独',44,'李小明','工业大学出版社','适合中老年人','2010-3-4'),

('计算机基础',11,'李四','清华大学出版社','学习IT必备读本','2009-3-4'),

('jsp从入门到精通',67,'王小丽','北京理工出版社','jsp服务器技术','2020-3-4'),

('你好,李焕英',99,'贾玲','北京出版社','票房过亿','2021-3-4');

  1. 根据以上表的数据完成以下练习:

-- 1.将图书编号为7的书名改成喜剧人生

UPDATE book SET title = '喜剧人生' WHERE id = 7;

-- 2.由于图店重新装修,现将每本图书的价格上调5元钱

UPDATE book SET price = price + 5;

-- 3.将图书价格少于20元的图书信息删除

DELETE FROM book WHERE price < 20;

-- 4.使用两种方法清空表中所有数据

DELETE FROM book;

TRUNCATE TABLE book;

-- 5.将图书表从数据库中删除

DROP TABLE book;

-- 6.将图书数据库删除

DROP DATABASE bookdb;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值