今日内容

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

一. 数据库简介

(一)理解

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

(二)特点

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

(三)数据库的分类

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

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

例如:redis、Mongodb、HBase...

对比:

(四)数据库系统的结构

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窗口:

  • SQL语言

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

分类

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

四. 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. 日期类型:

1)time   时分秒

2)date   年月日

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

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

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

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

.......

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

);
    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)两个表中cid和id分别都是主键自增

2)两个表中cname和title都要求唯一

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;

小白学习Java第二十八天相关推荐

  1. 小白学习Java第二十九天

    今日内容 数据库的导入和导出 DQL 基本查询 条件查询 排序查询 函数 分组查询 分页查询 连接查询 一. 导入导出数据库 1.导出数据库 选中要导出的数据库,鼠标右键备份/导出-->备份数据 ...

  2. 小白学习Java第二十六天

    今日内容 BOM模型,重点定时器 jQuery简介 jQuery使用步骤 jQuery选择器 jQuery事件 jQuery中的循环 一.BOM (一)BOM简介 1.Bom(browser obje ...

  3. 小白学习Java第二十三天<进入Javaweb>

    课程介绍: 今日内容: HTML概述 软件架构 HTML语言介绍 HTML入门案例 HTML常见标签                         文本标签                      ...

  4. Java第二十八天——杂七杂八的流 多线程

    Java第二十八天--杂七杂八的流 多线程 一.杂七杂八的流 1._序列化流和反序列化流的概述和使用(理解) A:序列化流的概述 ​ 所谓的序列化:就是把对象通过流的方式存储到文件中.注意:此对象 要 ...

  5. 小白学习Java技术知识点总结,其实学习Java没那么难

    边学习边记录是程序员快速进步的途径,只有你不断累积知识,才能有质的飞跃,不断的coding,累积经验. 第一讲,主要是Java环境变量的配置. 搭建好环境才能干活.要理解什么是编译.什么是运行.编译是 ...

  6. 什么?你还在花一两万学Java,快来看看小白学习java全路线吧

    ---------------------------龙珠悟空------------------------- 龙珠悟空一个写故事的程序员,小白学java专栏我会以故事的方式,通过老师讲解同学讨论个 ...

  7. 学习java第二周——面向对象、堆栈方法区、代码块、抽象类、接口和异常

    面向对象 2020年9月7日星期一 概述:面向对象(Object Oriented)是软件开发方法.面向对象的概念和应用已超越了程序设计和软件开发,是一种对现实世界理解和抽象的方法,是计算机编程技术发 ...

  8. 小白学习java之mybatis第三天

    第16节:延迟加载策略 首先说明什么是延迟加载及应用场景.特别要说明mybatis应用延迟加载的前得条件必须是嵌套方式才可以.其次解释使用延迟加载可减少访问数据库的频率,减少系统资源的消耗从而提高my ...

  9. 小白学习Java必练基础题(一)

    1.请实现两个整数变量的交换 ​ int a = 1; ​ int b = 2; //经过交换之后,这里需要大家实现交换的代码 ​ System.out.println(a);//2 ​ System ...

最新文章

  1. 厌倦了“正在输入…”的客服对话,是时候pick视频客服了
  2. sqlalchemy 使用mysql_使用SQLALchemy连接MySql数据库并进行操作
  3. 双向循环链表的插入排序
  4. android rfid 读写sdk,Android-SDK-1.0.0-STD android手机调用RFID模块读取电子标签Demo - 下载 - 搜珍网...
  5. 开发人员生产力指南,细节决定成败!
  6. Java、创建一个文本文件
  7. BSC-币安智能链主网节点搭建(详细步骤)
  8. SECS协议的SML表示
  9. 苹果的widget抄袭android,并非致敬!苹果解释iOS 14“桌面小工具”细节:和Android很不一样...
  10. red hat linux 9.0下载地址集合,Red Hat Linux 9.0 iso最新下载地址
  11. Spring Admin 入门
  12. 湖南人与江西人,关系有多密切?回顾四省填湘的历史
  13. java lru笔试题,2016年头条校招笔试(LRU算法)
  14. 深入浅出JS—18 手把手实现一个Promise类
  15. 遥控车钥匙算法之KeeLoq
  16. 电脑使用技巧提升篇7:两种方法给U盘加密
  17. 【转】计算机精品免费视频下载
  18. 计算机内存的故障,电脑内存报警故障分析及解决方法
  19. internal()方法
  20. PTA|pintia.cn计算摄氏温度

热门文章

  1. MATLAB实现CRC校验码的计算
  2. 华为企业园区网络建设技术方案建议书
  3. 【ASP.NET Identity系列教程(三)】Identity高级技术
  4. (CHM-Software)工具集锦
  5. 《大学物理:电磁学》练习题答案(含题目)
  6. 2022年版中国全自动洗衣机市场现状调研及品牌竞争力分析报告
  7. 使用批处理修改Floppy image - 免费小工具EXTRACT.EXE介绍
  8. 2018 上半年总结
  9. 人的横向发展与纵向发展
  10. 用 wingrub 引导Linux安装详述