数据库就是存储数据库的仓库
之前怎么存储数据?
1)定义变量,类似局部变量,随着方法调用而结束;
2)容器存储:
数组--->查询快,增删慢
集合--->单列集合Collection/双列集合Map
长度可变,
List<Student>
字符串缓冲区:StringBuffer/StringBuilder
最终可能需要将字符串缓冲区类型---String
3)IO流
Input
Output
可以将内容存储磁盘上 文件中 (读写复制---很耗时)
4)数据库来存储数据
执行效率高
底层有树结构在里面
数据库支持 "事务",来解决 业务中存在问题 "转账操作"!
即使关机了,数据永久保存!
数据库的分类
关系型数据库:
书写sql语句 (Structure Query Language:结构化查询语言)
oracle :收费 大型公司企业居多(西安银行,汇丰,神州数码...)
买数据库,买oracle第三方服务...
mysql :免费 中小型公司使用居多
sqlserver:跟.net平台兼容性比较好一些
sqllite: 轻量级的关系数据库,嵌入式里面居多
mariaDB:跟mysql同级别的
非关系型数据库:NoSQL数据库
键值(Key-Value)存储数据库 : redis 做数据缓存------ 分布式系统架构 使用redis 分布式缓存
文档类型数据库:
MongoDb
mysql的基本语法
安装mysql之后
1)方式登录 dos窗口登录
2)方式登录 mysql自带的客户端登录
C:\Users\Administrator>mysql -uroot -p
Enter password: ******
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 19
Server version: 5.5.40 MySQL Community Server (GPL)
Copyright (c) 2000, 2014, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
数据库的DDL语句(数据库的定义语句)之库的操作
-- :普通注释 单行注释
/* mysql的多行注释*/
#特殊注释
-- 查询当前mysql中自带的所有库有哪些
库在我们电脑磁盘上----> 文件夹
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema | mysql的默认配置库
| mysql | 有user表 (管理员用户表) :root用户就在这个库中
| performance_schema | mysql其他库(性能相关)
| test | 测试库,但是不用它,自己创建新的库
+--------------------+
4 rows in set (0.00 sec)
-- 创建库
-- create database 库名;
mysql> create database myEE_2203 ;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myee_2203 |
| mysql |
| performance_schema |
| test |
+--------------------+
5 rows in set (0.00 sec)
-- create database if not exists 库名;
mysql> create database if not exists ee2203;
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| ee2203 |
| myee_2203 |
| mysql |
| performance_schema |
| test |
+--------------------+
6 rows in set (0.00 sec)
-- 查询创建库的字符集
-- show create database 库名;
mysql> show create database myee_2203;
+-----------+--------------------------------------------------------------------+
| Database | Create Database |
+-----------+--------------------------------------------------------------------+
| myee_2203 | CREATE DATABASE `myee_2203` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+-----------+--------------------------------------------------------------------+
1 row in set (0.00 sec)
-- 修改库的字符集
-- alter database 库名 default character set 字符集名称;
mysql> alter database myee_2203 default character set gbk;
Query OK, 1 row affected (0.00 sec)
mysql> show create database myee_2203;
+-----------+-------------------------------------------------------------------+
| Database | Create Database |
+-----------+-------------------------------------------------------------------+
| myee_2203 | CREATE DATABASE `myee_2203` /*!40100 DEFAULT CHARACTER SET gbk */ |
+-----------+-------------------------------------------------------------------+
1 row in set (0.00 sec)
-- 删除库
-- drop database 库名 ;
mysql> drop database ee2203;
Query OK, 0 rows affected (0.01 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| myee_2203 |
| mysql |
| performance_schema |
| test |
+--------------------+
-- drop database if exists 库名 ; 如果存在这个库删除
mysql> drop database if exists myee_2203;
Query OK, 0 rows affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.00 sec)
数据库DDL语句(数据库定义语句)之建表,修改表,查询表,删除表...
mysql常见的数据类型
int :整数类型 默认最大长度11位字符,给int类型的数据的时候,当前存储的是值的真实长度
举例
年龄字段age int类型
int(字符数): 整数类型, 给int(3)这个值的时候,实际存储3位,但是赋值的时候不够3位 (使用很少)
id字段 1-----int(3) -------------------001
varchar(最大支持255个长度): 字符串类型
指定varchar(指定长度)
date:仅仅是日期类型
datetime:日期+时间类型
timestap:时间戳 (举例:管理员添加一个商品,商品上架的时间:当前系统瞬时时间 :2021-5-11 16:50分)
double:小数类型
double(几位数,小数点后保留的位数)
举例:
double(4,2): 4位,小数点后保留2位
clob:大字符类型
支持 "大文本"
blob:大字节类型
最大支持4G
-- 建表之前,必须使用哪个库
-- use 库名;
mysql> use ee_2203;
Database changed
mysql>
/*
create table 表名(
字段名称1 字段类型1,
字段名称2 字段类型2,
...
...
字段名称n 字段类型n
) ;
*/
mysql> create table student(
-> id int,
-> name varchar(10),
-> age int,
-> gender varchar(2),
-> address varchar(50),
-> socre double(3,1)
-> );
Query OK, 0 rows affected (0.02 sec)
-- 查询当前库中有哪些表
-- show tables ;
mysql> show tables ;
+-------------------+
| Tables_in_ee_2203 |
+-------------------+
| student |
+-------------------+
1 row in set (0.00 sec)
mysql>
-- 查看表的结构
-- desc 表名;
mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| gender | varchar(2) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
| socre | double(3,1) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
-- 修改表的字段名称
-- alter table 表名 change 旧字段名称 新的字段名称 以前的字段数据类型;
mysql> alter table student change gender sex varchar(2) ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student;
+---------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
| address | varchar(50) | YES | | NULL | |
| socre | double(3,1) | YES | | NULL | |
+---------+-------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
-- 修改表的字段类型 modify
-- alter table 表名 modify 字段名称 新的字段类型 ;
mysql> alter table student modify address varchar(100) ;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc student;
+---------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+--------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(10) | YES | | NULL | |
| age | int(11) | YES | | NULL | |
| sex | varchar(2) | YES | | NULL | |
| address | varchar(100) | YES | | NULL | |
| socre | double(3,1) | YES | | NULL | |
+---------+--------------+------+-----+---------+-------+
6 rows in set (0.01 sec)
-- 修改表:给表中添加一个新的字段
-- alter table 表名 add 字段名称 字段类型;
mysql> alter table student add description varchar(200) ;
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
-- 复制一张表
-- create table 新表名 like 旧表名;
mysql> create table teachear like student ;
Query OK, 0 rows affected (0.02 sec)
mysql> show tables;
+-------------------+
| Tables_in_ee_2203 |
+-------------------+
| student |
| teachear |
+-------------------+
2 rows in set (0.00 sec)
-- 删除表
-- drop table 表名;
-- drop table if exists 表名;
mysql> drop table if exists teachear;
Query OK, 0 rows affected (0.01 sec)
mysql> show tables;
+-------------------+
| Tables_in_ee_2203 |
+-------------------+
| student |
+-------------------+
1 row in set (0.00 sec)