本章内容介绍大纲
一、SQL 语句分类
SQL语句有很多,我们最好分门别类,这样容易记忆…
1.DQL(数据查询语言)
数据查询语言(Data Query Language, DQL)是SQL语言中,负责进行数据查询而不会对数据本身进行修改的语句,这是最基本的SQL语句。
我们在 看到 select … 这样的 sql 语句,都是数据查询语句,凡是带有 select 关键字的 SQL 语句都是 DQL 语句
2.DML(数据操纵语言)
数据操纵语言(Data Manipulation Language, DML)是SQL语言中,负责对数据库对象运行数据访问工作的指令集,以INSERT、UPDATE、DELETE三种指令为核心,分别代表插入、更新与删除。
凡是带有INSERT、UPDATE、DELETE 关键字的语句都是 DML
insert —— 插入,等同于增 update —— 更新,等同修改 delete —— 删除
这个主要操作的是表中的数据
3.DDL(数据定义语言)
数据定义语言 (Data Definition Language, DDL) 是SQL语言集中,负责数据结构定义与数据库对象定义的语言,由creat、alter 与 drop 三个语法所组成. DDL 主要操作的是 表的结构 不是表中的数据
凡是带有 create(增)、alter (改)、drop (删) 关键字的语句都是 DDL
create —— 新建、等同于增 drop —— 删除 alter —— 修改
这个增删改与 DML 有所不同,这个主要是对表结构进行操作.
4.DCL(数据控制语言)
数据控制语言 (Data Control Language) 在SQL语言中,是一种可对数据访问权进行控制的指令,它可以控制特定用户账户对数据表、查看表、预存程序、用户自定义函数等数据库对象的控制权。对数据的权限进行控制的语言.
例如:
请求授权—— grant 撤销授权 —— revoke …
5.TCL(事务处理语言)
这里的TCL可不是王牌电视,事务处理语言(Transaction Control Language),它的语句能确保被DML语句影响的表的所有行及时得以更新。是一种事务控制语言。
TCL 主要包括
事务提交 —— commit 事务回滚 —— rollback …
现在我们还没学到,到我们在后面就会接触到了。
二、数据库的分类
在上节课中 我们了解了 几种数据库软件(mysql、sql server、Oracle …),我们来看一看数据库的分类
1.关系型数据库
Mysql、Sql server 、Oracle 、SqLite 属于 关系型数据库
把数据按照 表 的形式来进行组织(类似于Excle这种形式的). 关系型数据库能够对数据进行更严格的校验,带来更好的数据的完整性.
2.非关系型数据库
Redis 、 HBase 、MongoDB …属于 非关系型数据库
把数据按照 文档 的形式来进行组织,文档和文档之间的差别可以较大. 更灵活的组织数据,效率更高,更容易在分布式环境下使用.
那么什么是表呢?
3.表的理解
数据库中最基本的结构是表—— table
什么是表 table ? 为什么用 表 table 进行存储数据呢?
我们给大家看一下什么是表,相信 EXcel 大家都用过
这样的结构 就是一个简单的表,表是组织数据的一种形式
数据库中是以 表格的形式来表示数据的,因为 表格比较直观.
任何 表 都有行和列
行(row): 被称为数据/ 记录
列 (column): 被称为字段
在这个表中 列的数据就表示字段,有 姓名字段、性别字段、年龄字段,每一行的数据表示记录.
了解一下,每个字段都有 字段名、数据类型、约束条件等属性.
字段名: 只是一个普通的名字,见名知意就行了.
数据类型: 字符串类型,数字、日期等类型,在后面我们会详细介绍
约束:约束也有很多,其中有一个叫做唯一性约束,这种约束添加后,该字段的数据不能重复.
那我们怎么查看 某个数据库中的 表呢?
1.查看我们有哪些数据库
2.选中我们想要查看的数据库
3.查看数据库中的表
三、数据库操作
1.显示当前的数据库
代码语言:javascript复制mysql> show databases;
2.创建数据库
代码语言:javascript复制mysql> create database [数据库名]
展示数据库与 创建数据库 在上一节课中我们已经具体的讲过了,我们重点来看 删除数据库
3.选中数据库/使用数据库
代码语言:javascript复制use [ 数据库名 ]
要想对数据库进行更具体的操作 (建表、查询、…)就需要先确定是针对那个数据库进行的.
例如: 我们在查询完数据库之后,希望选中 java100 这个数据库.
使用use java100;
出现 Database changed 则选中成功.当前的数据库已经被选中,后续的操作都是针对这个数据库来展开的.
4.删除数据库
4.1语法
代码语言:javascript复制 drop database [数据库名];
说明:
数据库删除后,内部看不到对应的数据库,里边的表和数据全部被删除.
我们对这个数据库进行简单的删除操作…
我们在这个数据库中新建了一个 rain7 的数据库
然后我们输入
drop database rain7 ;
进行删库操作
再次查看数据库
rain7 的数据库 已经成功被删去了…
在这里 我们希望大家牢牢记住
一旦删除数据库,这里的 数据通过常规的手段就找不回来了!!!所以删除数据库是一个非常危险的操作!!~~
以后在工作中,无论如何都不要使用 drop database 操作,尤其是针对线上环境~
四、常用数据类型
1.数值类型
分为整形 与 浮点型
扩展资料
数值类型可以指定为无符号(unsigned),表示不取负数。
对于整型类型的范围:
1.有符号范围:-2 ^ (类型字节数 * 8-1)到2 ^ (类型字节数 * 8-1)-1,如int是4字节,就是-2^ 31 到 2^31-1
2.无符号范围:0到2 ^ (类型字节数*8)-1,如int就是2 ^ 32-1
尽量不使用unsigned,对于int类型可能存放不下的数据,int unsigned同样可能存放不下,与其如此,还不如设计时,将int类型提升为bigint类型。
bit [ M () ]
bit 就表示一个二进制的数据,在方括号里我们可以指定该数据占多少个bit 位,M()就来指定有多少位,如果不指定的话,默认就为 1.
数据类型 | 对应Java类型 |
---|---|
tinyint | byte |
smallint | short |
int | Integer |
bigint | long |
float(M,D) | float |
double(M,D) | double |
decimal(M,D) | bigdecimal |
float (M,D)的含义
float (3,1)—— 有效数字是 3 位,小数点后保留一位.
95.5 合法 25.1 合法 101.2 不合法
decimal 在之前我们没有接触过
Java中的 float 和 double 都是有问题的,不能精确表示一些数据 ~~ 遵循 IEEE754 标准,受限于浮点数在内存中的表示.
后来Java为了解决这个问题,就有了 bigdecimal,内部使用其他方式来存储表示浮点数,就能够做到更精确的表示~~
所以在 sql 中也有一个 decimal 来对应Java中的 bigdecimal.
2.字符串类型
varchar (size) 在() 中我们可以规定 字符串的大小,具体是字符的个数~~
blob 针对的类型主要是 二进制形式的文本数据
3.日期类型
现在我们写代码优先使用 datetime 这个时间戳,因为 表示的范围更大
我们如何使用时间类型?
五、表的操作
需要操作数据库中的表时,需要先使用该数据库
use db_test;
1.查看表结构
desc 表名;
我们来使用一下该条命令语句
1.选中数据库,查看该数据库中的所有 table
2.查看表结构
表结构的具体解释
2.创建表
create table table_name(字段 类型,字段 类型 , …);
语法:
与其他编程语言 定义的不一样,在MySQL中 类型放在 字段的后面.
java 中可以用 // 表示注释 mysql中可以用 comment 表示注释说明,也可以用 - - 表示注释~
我们可以操作一下,我们想要添加一个工作人员表,以下图为例,同样在java100 的数据库中添加该表
1.查找数据库,选中Java100;
2.创建一个 工作人员表,要求有姓名,年龄,性别等属性~
3.查看表结构
3.删除表
drop table table_name;
我们再次来练习,删除我们在之前操作建立的 workers 这个表
1.删除 worker 这个表
2.查看删除成功
此时 workers 已经不存在.
六、建表小练习
给大家一个小练习,来熟悉 MySQL的基本操作吧
有一个商店的数据,记录客户及购物情况,有以下三个表组成:
商品goods ( 商品编号 goods_id,商品名 goods_name , 单价 unitprice , 商品类别 category , 供应商 provider )
客户 customer ( 客户号 customer_id , 姓名 name ,住址 address ,邮箱email,性别 sex ,身份证 card_id )
购买 purchase ( 购买订单号 order_id , 客户号 customer_id ,商品号 goods_id ,购买数量 nums ).
数据库还有表的 增删查改 操作,我们会在下一节中集中介绍.
好了今天的知识就分享到这里,希望大家多多练习,熟练掌握,感谢大家的欣赏与关注!!
下一篇~ Mysql 数据库(三)—— 表的增删查改(CRUD) 敬请期待~~
谢谢欣赏!