一.数据库简介 1.简而言之就是存储数据的仓库; 2.之前在Java中怎么存储数据? 1)定义变量,类似局部变量,随方法调用而结束; 2)容器存储: 数组--->查询快,增删慢; 集合--->单列集合Colleation/双列集合Map 长度可变, 字符串缓冲区:StringBuffer/StringBuider 最终可能需要将字符串缓冲区类型---String 3)IO流 Input Output 可以将内容存储在磁盘上,文件中(读写复制---很耗时) 3.数据库来存储数据 优点:1> 执行下率高 2>底层有树结构在里面 3>数据库支持"事务"来解决业务存在问题"转账操作"! 4>即使关机了,数据永久保存; 二.数据库的分类 1.关系型数据库: 书写sql语句(Strcture Query Language:结构化查询语言) oracle:大型企业应用居多(收费); mysql:中小型企业应用居多(不收费) sqkserver:跟.net平台蒋荣兴比较好一些 sqllite:轻量级的关系数据库,嵌入式中使用较多; mariaDB:跟mysql同级别的; 2.非关系型数据库NoSQL数据库 键值(Key-Value)存储数据库:redis 做数据缓存, 分布式系统架构 使用redis 分布式缓存 文档类型数据库:MongoDb 三.mysal的基本语法 1.安装完MySQL之后 1)登录:方式一:在dos命令框登录mysql ①输入 mysql -uroot -p ②输入mysql密码 方式二:在mysql子代的客户端登录 直接输入muysql密码登录 四.数据库的DDL语句(数据库的定义语句)之库的操作 1.注释 --:普通注释当行注释 #特殊注释 2.查询库 查询当前mysql中自带的所库有哪些 mysql>show databases; mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | +--------------------+ 6 rows in set (0.00 sec) 3.创建库 1)方式一:create database 库名; mysql> create database 小小; Query OK, 1 row affected (0.00 sec) 2)方式二:create database if not exists 库名; mysql> create database if not exists xiaoxiao; Query OK, 1 row affected (0.00 sec) 4.查看建库的字符集 show create databases 库名 mysql> show create database 小小; +----------+---------------------------------------------------------------+ | Database | Create Database | +----------+---------------------------------------------------------------+ | 小小 | CREATE DATABASE `小小` | +----------+---------------------------------------------------------------+ 1 row in set (0.00 sec) 5.修改字符集 alter database 库名 default character set 想要的字符集; 修改"小小"的字符集 mysql> alter database 小小 default character set gbk; Query OK, 1 row affected (0.00 sec) 修改后的"小小"字符集 mysql> show create database 小小; +----------+--------------------------------------------------------------+ | Database | Create Database | +----------+--------------------------------------------------------------+ | 小小 | CREATE DATABASE `小小` | +----------+--------------------------------------------------------------+ 1 row in set (0.00 sec) 6.删除库 1)方式一:drop database 库名(暴力删除) mysql> drop database 小小; Query OK, 0 rows affected (0.01 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | | xiaoxiao | +--------------------+ 7 rows in set (0.00 sec) 2)方式二: drop databases if exists 库名;(如果存在,删除) mysql> drop database if exists xiaoxiao; Query OK, 0 rows affected (0.00 sec) mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | mysql | | performance_schema | | sakila | | sys | | world | +--------------------+ 6 rows in set (0.00 sec) 五.数据库的DDL语句(数据库的定义语句)之表的操作 1.mysql常见的数据类型; 1)int:整数类型 默认最大长度11位字符,给int类型的数据的时候,当前存储的是值的真实长度; 举例: 年龄自贡段 age int类型; 2)int(字符数):整数类型 给int(3)这个值的时候,实际存储三位,但是赋值不够三位(使用很少); id字段 1-------int(3)-------001 3)varchar(最大支持255个长度):字符串类型 指定varchar长度 格式:varchar(指定长度) 4) date:仅仅是日期类型 5) datetime:日期+时间类型; 6)timestap:时间戳(举例:管理员添加一个商品,商品上架的时间:时间戳--表示当前系统的瞬时时间); 7)double:小数类型 double{几位数,小数点后保留几位数} 举例: double{4,2}表示4位数,小数点后面保留两位 8)cold:大字符类型 支持"大文本"; 9)bold:大字节类型 最大支持4G 2.建表之前需要使用哪个库 1)前提:建立需要使用的库 方式一: mysql> create database if not exists first; Query OK, 1 row affected (0.00 sec) 方式二: mysal>create database first; Query OK, 1 row affected (0.00 sec) 2)使用库: use 库名; mysql> use first; Database changed 注意:如果不创建库的话所有的表都会跑进mysql库中; 3.创建表 create table表名( 字段名称1 字段类型1, 字段名称2 字段类型2, 字段名称3 字段类型3, .... 字段名称n 字段类型n ); mysql> use first; Database changed mysql> create table Student( -> name varchar(5), -> age int, -> sex varchar(2), -> school varchar(20), -> 籍贯 varchar(20) -> ); Query OK, 0 rows affected (0.02 sec) 注意:1)每个字符段类型后+","最后一个不用; 2)表内对象应放在一对"()"内; 4.查询当前库中有哪些表 show tables; mysql> show tables; +-----------------+ | Tables_in_first | +-----------------+ | student | +-----------------+ 1 row in set (0.00 sec) 5.查看表的结构 desc 表名; mysql> desc Student; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | name | varchar(5) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | school | varchar(20) | YES | | NULL | | | 籍贯 | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.01 sec) 6.修改表的字段名称(change) alter table 表名 change 旧字段名称 新字段名称 旧的数据类型; 改变name这段名称; mysql> alter table Student change name 姓名 varchar(5); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 改变name为姓名的显示 mysql> desc Student; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | 姓名 | varchar(5) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | school | varchar(20) | YES | | NULL | | | 籍贯 | varchar(20) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) 注意:不能将字符段类型用修改字符段名称一并改变,运用到后期可能会出现不同程度上的问题. 7.修改表的字段类型(modify) alter table 表名 modify 字段名称 新的字段类型; 改变籍贯的字段类型为varchar(50); mysql> alter table Student modify 籍贯 varchar(50); Query OK, 0 rows affected (0.01 sec) Records: 0 Duplicates: 0 Warnings: 0 改变籍贯字符端类型的表的结构 mysql> desc Student; +--------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +--------+-------------+------+-----+---------+-------+ | 姓名 | varchar(5) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | school | varchar(20) | YES | | NULL | | | 籍贯 | varchar(50) | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec) 8.给表中增加新的字段 alter table 表名 add 字段名称 字段类型; 向表中增加"出生日期"字符段,字符段类型为"datetime" mysql> alter table Student add 出生日期 datetime; Query OK, 0 rows affected (0.02 sec) Records: 0 Duplicates: 0 Warnings: 0 增加"出生日期"后标的表的结构; mysql> desc Student; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | 姓名 | varchar(5) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | school | varchar(20) | YES | | NULL | | | 籍贯 | varchar(50) | YES | | NULL | | | 出生日期 | datetime | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 6 rows in set (0.01 sec) (重复字段名称不能增加); 9.复制一张表 create table 新表名 like 旧表名; 将表Student复制给表Testher mysql> create table Tescher like Student; Query OK, 0 rows affected (0.01 sec) 复制后表Testher的结构 mysql> desc Tescher; +----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +----------+-------------+------+-----+---------+-------+ | 姓名 | varchar(5) | YES | | NULL | | | age | int(11) | YES | | NULL | | | sex | varchar(2) | YES | | NULL | | | school | varchar(20) | YES | | NULL | | | 籍贯 | varchar(50) | YES | | NULL | | | 出生日期 | datetime | YES | | NULL | | +----------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec) 10.删除表 方式一:drop table 表名; 删除表Student mysql> drop table Student; Query OK, 0 rows affected (0.01 sec) 删除之后显示不出表"Student"的结构 mysql> desc Student; ERROR 1146 (42S02): Table 'first.student' doesn't exist 通过show 显示所有表,发现并没有Student表,证明其已经删除; mysql> show tables; +-----------------+ | Tables_in_first | +-----------------+ | tescher | +-----------------+ 1 row in set (0.00 sec) 方式二:drop table if exists 表名; 删除Testher表, mysql> drop table if existsTescher; Query OK, 0 rows affected (0.01 sec) 删除只有库里面没有表格固有下面的显示 mysql> show tables; Empty set (0.00 sec) 11.删除表中的某列数据 alter table 表名 drop 想要删除字符段名称; 六.总结 1.show 英语翻译是显示,表现的意思,在mysql中表示 1)查询库或表; 格式 show databases(库)/tables(表); 2)查看库的字符集 格式show create database 库名; 2.create 英语翻译是创造,创建的意思,在mysql中表示 1)创建库或表的意思 格式 create database 库名; create table 表名( 字段名称1 字段类型1, 字段名称2 字段类型2, 字段名称3 字段类型3, .... 字段名称n 字段类型n ); 2)复制一张表 create 新表名 like 旧表名; 3.exists 英语翻译中表示存在的意思,在mysql用于判断此表或此库是否存在; 应用 1)创建库 格式:create database if not exists 库名; 2)删除库或表 drop database if exists 库名; drop tableif exists 表名 ; 4.drop 英语翻译中表示放弃,放下的意思,在mysql中用于删除库或表; 格式: drop database 库名; drop table 表名; 5.alter 英语翻译表示改变,更改的意思,在mysql中用于改变库或表; 应用 1)修改库的字符集 alter database 库名 default character set 想要的字符集; 2)修改表的字符段名称 alter table 表名 change 旧字符段名称 新字符段名称 旧字符段数据类型; 3)修改标的字符段类型 alter table 表名 modify 字符段名称 新字符段类型; 4)给表增加新的字段 alter table 表名 add 字符段名称 字符段类型 5)删除表中的某一列 alter table 表名 drop 字符段名称; 6.desc 表名,查看表的结构



