数据库、数据表操作

数据库

数据库就是存储数据的仓库,其本质是⼀个⽂件系统,数据按照特定的格式将数据存储起来。⽤户可以
对数据库中的数据进行增加,修改,删除及查询操作。

集合、文件和数据库三者的异同点 :

  1. 集合:数据存储在内存中;问题是,⼀旦程序执行完毕了,数据消失了,数据不能永久性的储存
  2. ⽂件:数据储存在磁盘中,可以永久性储存;问题是,当文件储存数据量达到几个G时,文件的打开
    都成文件,数据的操作就更成问题了
  3. 数据库:数据储存的磁盘中,可以永久性储存;当数据量很大时,数据操作起来也很流畅;合适数据的频繁的增删改查的操作

数据库管理系统

数据库管理系统(DataBase Management System,DBMS):指⼀种操作数据库、管理数据库的大型
软件。
作用:用于数据库的建立、使用和维护数据库。

注意

  1. ⽤户必须通过数据库管理系统才能访问到数据库中表的数据
  2. 数据库中的表,是存储数据的基本单位

数据库管理系统的功能:实现了对多个数据库进⾏统⼀管理和控制,以保证数据库的安全性和完整性

  • 数据库与数据库管理系统的内部结构
  • 在这里插入图片描述

Java类和数据表的对应关系

数据库中以表为基本单位,进⾏存储数据。

Java 数据库
定义的成员变量 字段(列)
对象 记录(列)

常⻅数据库

MYSQL:开源免费的数据库,⼩型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
Oracle:收费的⼤型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
DB2 :IBM公司的数据库产品,收费的。常应⽤在银⾏系统中.
SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语⾔常使⽤。
SyBase:已经淡出历史舞台。提供了⼀个⾮常专业数据建模的⼯具PowerDesigner。
SQLite:嵌⼊式的⼩型数据库,应⽤在⼿机端。
常⽤数据库:MYSQL
我们学习的是MySQL数据库。为了追求⾼性能,开发中多个Mysql,搭建MySQL⾼可⽤负载均衡集群

MySql数据库

  1. 安装MySQL数据库
  2. 连接MySQL数据库
    MySQL是⼀个需要账户名密码进⾏连接的数据库,连接后才能使⽤,它提供了⼀个默认的root账号,使⽤安装时设置的密码即可登录。
    上代码,
-- 格式1,本地连接:cmd> mysql –u⽤户名 –p密码
-- 通常情况下,我们win+R,输入cmd回车,输入“mysql –u⽤户名 –p”后不输密码回车,窗口会提示输入密码,此时输入的密码会被加密也就是说保证了用户信息的安全性,在Mac和Windows下均可使用
mysql -uroot –proot
-- 格式2,远程连接:cmd> mysql --host=ip地址 --user=⽤户名 --password=密码
-- 通常情况下我们不使用远程连接,,直接用dos窗口和图形化工具连接数据库
mysql --host=127.0.0.1 --user=root --password=root

默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf⽂件。

  1. SQL语句
    数据库是不认识JAVA语⾔的,但是我们同样要与数据库交互,这时需要使⽤到数据库认识的语⾔【SQL语句】,它是数据库的代码。
    结构化查询语⾔(Structured Query Language)简称SQL,是关系型数据库管理系统都需要遵循的规范。
    不同的数据库⽣产⼚商都⽀持SQL语句,但都有特有内容。简单来说,SQL就像普通话,全国人都听得懂并以此为标准,有些特有的东西只能在自己的产品或地区使用。
    在这里插入图片描述
    SQL语句分类:
    数据定义语⾔:简称DDL(Data Definition Language),⽤来定义数据库对象:数据库,表,
    列等。关键字:create,alter,drop等
    数据控制语⾔:简称DCL(Data Control Language),⽤来定义数据库的访问权限和安全级别,及创建⽤户。
    数据操作语⾔:简称DML(Data Manipulation Language),⽤来对数据库中表的记录进⾏
    更新。关键字:insert,delete,update等
    数据查询语⾔:简称DQL(Data Query Language),⽤来查询数据库中表的记录。关键字:
    select,from,where等

SQL语句的书写语法

  • MySQL数据库的SQL语句不区分⼤⼩写,关键字建议使⽤⼤写,以分号结尾。例如:
SELECT * FROM user; 
  • 使⽤/**/、 – 、# 的⽅式完成注释
/*
多⾏注释
*/
-- 单⾏注释
# 单⾏注释
SELECT * FROM user;

SQL中数据的常⽤数据类型

类型名称 说明
int 整数类型
double 小数类型
decimal(m,d) 定义整数位和小数位长度的小数类型
date 日期类型,格式为yyyy-MM-dd,包含年⽉⽇,不包含时分秒
datetime ⽇期类型,格式为 YYYY-MM-DD HH:MM:SS,包含年⽉⽇时分秒(默认是计算机中的时间)
timestamp 日期类型,时间戳(默认是格林尼治时间)
varchar(M) 文本类型,M为0~65535中的一个整数
char(M) 文本类型,M为0~65535中的一个整数

上面的varchar和char的说明是一样的,但是还是有本质上的区别的。通俗来讲:varchar是一个设定上限的动态文本类型,你储存多少数据,就开放多少内存,不会造成内存的浪费;而char文本不管存储多少数据,就开放那么大的内存,会造成一些内存的浪费。

数据库操作: database

1. 创建数据库

/*创建数据库*/

-- ⽅式⼀: 使⽤指定的字符编码表,创建数据库. 格式: create database 数据库名 character set 字符编码;
CREATE DATABASE mydb CHARACTER SET utf8;

-- ⽅式⼆: 使⽤默认的字符编码表,创建数据库. 格式: create database 数据库名;
CREATE DATABASE mydb2;

2. 查看数据库

/*查看数据库*/

-- 查看所有的数据库. 格式: show databases;
SHOW DATABASES;

-- 查看指定数据库的字符编码. 格式: show create database 数据库名;
SHOW CREATE DATABASE mydb;
SHOW CREATE DATABASE mydb2;

3. 删除数据库

/*删除数据库*/

-- 删除数据库. 格式: drop database 数据库名;
DROP DATABASE mydb2;

4. 使⽤数据库

/*使⽤数据库*/

-- 查看当前使⽤的数据库. 格式: select database();
SELECT DATABASE();

-- 设置当前使⽤的数据库. 格式: use 数据库名;
USE mydb;

表操作:table

1. 创建表

/*
创建表, 格式:
create table 表名 (
字段名 数据类型[⻓度] [约束],
字段名 数据类型[⻓度] [约束],
...
);
注:[]中的内容是可选项
*/
-- 创建表student, 字段包括 编号id\ 姓名name\ 年龄age
CREATE TABLE student (
id INT,
NAME VARCHAR(100),
age INT
);
-- 创建表users, 字段包括 编号id\ ⽤户名username \ 密码password
CREATE TABLE users (
id INT,
username VARCHAR(100),
PASSWORD VARCHAR(100)
);

2. 查看表

-- 查看所有表, 格式: show tables
SHOW TABLES;
-- 查看指定表的建表结构, 格式: show create table 表名;
SHOW CREATE TABLE users;

3. 删除表

-- 删除表, 格式: drop table 表名;
DROP TABLE users;

4. 修改表结构格式

/*
对表中的列进⾏修改
1. 添加新的列, 格式: alter table 表名 add 新列名 数据类型(⻓度);
2. 修改列的数据类型(⻓度), 格式: alter table 表名 modify 列名 修改后的数据类型(⻓
度);
3. 修改列的名称, 格式: alter table 表名 change 列名 新列名 新列名的数据类型(⻓度);
4. 删除指定列, 格式: alter table 表名 drop 列名;
*/
ALTER TABLE student ADD `desc` VARCHAR(100); -- 添加新的列
ALTER TABLE student MODIFY `desc` VARCHAR(50);-- 修改列的数据类型(⻓度)
ALTER TABLE student CHANGE `desc` description VARCHAR(100);-- 修改列的名称
ALTER TABLE student DROP description;-- 删除指定列
/*
对表进⾏修改
1. 修改表的名称, 格式: rename table 表名 to 新表名;
2. 修改表的字符编码, 格式: alter table 表名 character set 字符编码;
*/
RENAME TABLE student TO stu; -- 修改表的名称
ALTER TABLE stu CHARACTER SET gbk; -- 修改表的字符编码

表中记录操作

插入表操作

/*
插⼊表记录
⽅式⼀, 对指定的字段插⼊值, 格式: insert into 表名(字段1, 字段2, ...) values (值
1, 值2, ...);
⽅式⼆, 对所有字段插⼊值, 格式: insert into 表名 values(值1, 值2, ...);
*/
INSERT INTO student(id, NAME, age) VALUES(1, 'tom', 24);
INSERT INTO student(NAME, age) VALUES('lili', 22);
INSERT INTO student(id, NAME, age) VALUES(3, 'jim', NULL);
INSERT INTO student VALUES(4, 'jack', 26);
INSERT INTO student VALUES(5, 'zhangsan', 26),
(6,'lisi',27);
  • 注意:
  1. 值与字段必须对应, 个数相同, 类型相同
  2. 值的数据⼤⼩必须在字段的指定⻓度范围内
  3. 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号引起来 (建议单引号)
  4. 如果要插⼊空值, 可以不写字段, 或者插⼊null

更新表记录

-- 更新表记录, 格式: update 表名 set 字段1=值, 字段2=值... where 条件;
UPDATE student SET NAME='lili', age=21 WHERE id=1;
UPDATE student SET age=25 WHERE age=27;
  • 注意:
  1. 列名的类型与修改的值要⼀致
  2. 修改值时不能超过字段的⻓度范围
  3. 除了整数\⼩数类型外, 其他字段类型的值必须使⽤引号扩起来

删除表记录

-- 删除表记录, 格式: delete from 表名 where 条件;
DELETE FROM student WHERE id=1;
DELETE FROM student WHERE age IS NULL;

猜你喜欢

转载自blog.csdn.net/qq_43511405/article/details/108444538