1、数据库的简介
(1)什么是数据库,就是一个文件系统,使用标准sql对数据库进行操作(crud)
(2)常见的数据库
* oracle:是oracle公司产品,是大型的收费的数据库
* db2:是ibm公司的产品,是大型的收费的数据库
* SQLServer:是微软公司产品,是中型的数据库
* MySQL : 在oracle收购之后6.x版本开始收费,之前的版本是免费的。
* SQLite:是小型的嵌入式数据库,应用在客户端开发中,比如安卓
(3)关系数据库:存储的是实体之间的关系
* 比如有购物网站,有用户,订单,商品,称为实体
* 用户、订单和商品之间的关系称为实体之间的关系
* 使用er图表示实体之间的关系
** 实体使用矩形、在实体上面属性使用椭圆,之间的关系使用菱形
2、mysql的安装和卸载
(1)安装mysql 5.x版本
(2)mysql的卸载
第一步,找到mysql的安装路径,找到一个文件my.ini文件找到两个路径,复制出来
basedir="C:/Program Files (x86)/MySQL/MySQL Server 5.5/"
datadir="C:/ProgramData/MySQL/MySQL Server 5.5/Data/"
第二步,打开控制面板,找到安装的mysql数据库,进行卸载
第三步,找到第一步复制出来的两个路径,把这两个路径的里面的所有的文件都删除
第四步,打开注册表 regedit,搜索mysql,找到了都删除
第五步,重新启动系统
3、mysql服务器的存储结构
(1)mysql服务器
* 服务器:从硬件上,服务器就是一台电脑;从软件上,在电脑上安装了服务器软件。
* mysql服务器:在一台电脑上,安装了mysql数据库,这台电脑称为mysql服务器。
(2)mysql服务器的存储结构
* 有多个数据库,在每个数据库里面有多个数据库表,在每个表里面有多条记录
* 学习重点:对数据库、数据库表、表中的记录的操作(crud操作)
4、sql语言简介
(1)数据库是文件系统,使用标准sql对数据库进行操作
* 标准sql,在mysql里面使用语句,在oracle、db2都可以使用这个语句
(2)什么是sql
* Structured Query Language, 结构化查询语言,对数据库进行操作
* sql非过程性语言,不需要依赖于其他的条件就可以运行
** 比如 在java里面
*** if(a > 5) {
System.out.....
}
(3)sql的分类
第一类:DDL (数据定义语言)
* 创建数据库,创建数据库表
* 常用的语句 create
第二类:DML (数据操纵语言)
* 对表中的记录进行增加 修改 删除操作
* 常用的语句 insert update delete
第三类:DCL (数据控制语言)
* 数据库的编程的语言
第四类:DQL (数据查询语言)
* 对表中的进行查询的操作
* 常用的语句 select
* 学习的主要内容:使用sql语言对数据库、数据库表、表中的记录进行增删改查(crud)操作
5、使用sql对数据库操作
(1)连接数据库
* 打开cmd窗口,使用命令,连接mysql数据库
* 命令: mysql -u root -p 密码
(2)创建数据库
* 语句: create database 数据库的名称;
** 示例:create database testdb1;
(3)查看所有的数据库
* 语句:show databases;
(4)删除数据库
* 语句:drop database 要删除的数据库的名称;
** 示例: drop database testdb1;
(5)切换数据库
* 如果想要创建一个数据库表,这个表要在一个数据库里面,所以需要切换到数据库
* 语句:use 要切换的数据库的名称;
** 示例:use testdb2;
6、使用sql对数据库表操作
(1)创建数据库表
* 语句 create table 表名称 (
字段 类型,
字段 类型
)
* 创建表 user,字段 id username password sex
create table user (
id int,
username varchar(40),
password varchar(40),
sex varchar(30)
)
(2)mysql的数据类型
字符串型
VARCHAR、CHAR
* 当创建表时候,使用字符串类型,name varchar(40),指定数据的长度
* varchar和char的区别
** varchar的长度是可变的,比如 name varchar(5),存值 a ,直接把a存进去
** char的长度是固定的,比如 name char(5),存值 b,把b存进去,后面加很多空格
大数据类型
BLOB、TEXT
* 使用这个类型可以存储文件,一般开发,不会直接把文件存到数据库里面,存文件的路径
数值型
TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
* 对应java里面
byte short int long float double
逻辑性
BIT
* 类似java里面的boolean
日期型
DATE:用于表示日期 1945-08-15
TIME:用于表示时间 19:10:40
下面的两个类型可以表示日期和时间
DATETIME:手动添加时间到数据表里面
TIMESTAMP:自动把时间添加到表里面
(3)查看表结构
* 语句 desc 表名称;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| username | varchar(40) | YES | | NULL | |
| password | varchar(40) | YES | | NULL | |
| sex | varchar(30) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
(4)mysql的约束有三种
第一种,非空约束 not null
* 表示数据不能为空
第二种,唯一性约束 unique
* 表中的记录不能重复的
第三种,主键约束 primary key
* 表示非空,唯一性
* 自动增长 auto_increment
(5)创建带约束的表
create table person (
id int primary key ,
username varchar(40) not null,
sex varchar(20)
)
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| username | varchar(40) | NO | | NULL | |
| sex | varchar(20) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+