6-数据类型与常见约束
数据类型整型12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788# 常见数据类型/*数值型: 整型 小数: 定点数 浮点数字符型: 较短文本:CHAR,VARCHAR 较长文本:TEXT,BLOB(较长的二进制数据)日期型:*/# 一,整型/*分类:TINYINT,SMALLINT,MEDIUMINT,INT/INTEGER,BIGINT字节数从左至右以此增大,分别是1,2,3,4,8字节 特点:1. 不设置无符号类型,默认采用有符号类型。如果想设置无符号类型,需要添加UNSIGNED关键字2. 如果插入数值超出范围会报out of range 异常,并且插入临界值3. 如果不设置长度,会添加默认长度4. 注意,这里设置的长度只是显示的长度,文本实际占用字节数并没有改变仍然是按照规定大小创建,设置了长度后 ...
5-DDL数据定义语言
数据定义语言DDL用于库和表的管理
库的管理: 创建,修改,删除
表的管理: 创建 修改,删除
创建:CREATE
修改:ALTER
删除:DROP
库的管理123456789101112131415161718192021222324252627282930313233343536373839# DDL语言/*数据定义语言用于库和表的管理1. 库的管理创建,修改,删除2. 表的管理创建 修改,删除创建:CREATE修改:ALTER删除:DROP*/# 一,库的管理# 1. 库的创建/*语法:CREATE DATABASE 库名;*/CREATE DATABASE text1;# 如果不存在就创建,如果存在就不执行CREATE DATABASE IF NOT EXISTS text1;# 2. 库的修改(一般情况下不直接修改库。很容易导致数据丢失)# 更改库的字符集ALTER DATABASE text1 CHARACTER SET gbk;# 3. 库的删除DROP DATABASE text1;
表的管理123456789101112131415161718192021222 ...
4-DML数据操控语言
插入语句123456789101112131415161718192021222324252627282930313233343536373839# 插入语句/*语法:INSERT INTO 表名(列名,...) VALUES(值1,...);*/# 插入值类型需要与列的类型一致或兼容INSERT INTO student(name,age,score,birth) VALUES('Leslie',19,100,'2001/02/14');# 可以为null的列如何给值(nullable的列),不可以为空的列必须插入值# 方式一:直接赋给nullINSERT INTO student(name,age,score,birth) VALUES('John',18,NULL,'2001/05/21');# 方式二:直接在给定列名时跳过该列INSERT INTO student(name,age,birth) VALUES('Lala',18,'2003/03/22');# ...
2-SQL语言中的函数
SQL语言–函数概念:将一组逻辑语句封装在方法体内,对外暴露方法名
优点:隐藏了实现细节,提高了代码的重用性
调用语法:SELECT 函数名(实参列表) 【FROM 表】;
特点:函数名与函数功能
分类:
单行函数,例如:CONCAT(str1,str2,…),LENGTH(str)等等
分组函数(也叫统计函数,聚合函数,组函数),做统计使用
字符函数123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354# 常见函数/*概念:将一组逻辑语句封装在方法体内,对外暴露方法名优点:隐藏了实现细节,提高了代码的重用性调用语法:SELECT 函数名(实参列表) 【FROM 表】;特点:函数名与函数功能分类:1. 单行函数,例如:CONCAT(str1,str2,...),LENGTH(str)等等2. 分组函数(也叫统计函数,聚合函数,组函数),做统计使用*/# 单行函数又分为:字符函数,数学函数,日期函数,其他函数,流程控制函数# 字符函数# LE ...
2-DQL数据查询语言
DQL查询语言DQL基础查询语句–SELECT12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576# DQL基础查询语句/*语法:SELECT 查询列表 FROM 表名;FROM可省特点:1. 查询列表可以是:表中的字段,常量,表达式,函数2. 查询的结果是一个虚拟表格*/# 选中指定库USE myemployees;# 查询表中的单个字段SELECT last_name FROM employees;# 查询表中的多个字段,中间用逗号隔开,对顺序无要求SELECT last_name,first_name,email FROM employees;# 查询所有字段SELECT * FROM employees;# `列名`,注意可以用反单引号标注列名(不是单引号!),主要是避免列名和关键字相同的情况SELECT `salary`FROM employe ...
1-MySQL简述
MySQL简述
数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。
保存数据的容器常用的保存数据的容器有数组,集合,文件以及数据库。数组,集合将数据存储在内存中,但内存中的数据具有易失性,很容易丢失。文件可以实现永久存储,但文件不适用于大量文件的存储,难于检索查询。
数据库优点
实现数据持久化
使用完整的管理系统统一管理,易于查询
数据库相关概念DB(database)数据库,存储数据的“仓库”。保存了一系列有组织的数据
DBMS(Database Management System)数据库管理系统,数据库通过数据库管理系统创建和操作容器(常见的DBMS有:MySQL,Oracle,DB2,Sql Server)
SQL(Structure Query Language)结构化查询语言,专门用来与数据库通信的语言。SQL具有诸多优点:它不是某个特定数据库供应商专有的语言,几乎所有主流DBMS都支持SQL。SQL语言简单易学,虽然简单,但是一种强有力的语言,可以灵活运用其他语言进行诸多复杂和高级的数据库操作 ...
3-传输层
传输层传输层概述传输层是整个TCP/IP协议栈核心之一,位于网络层之上,应用层之下。利用网络层的服务,为上层应用层提供服务。与网络层类似,传输层也拥有面向连接的服务与无连接的服务两种,用途在于提供高效的可靠的,性价比高的数据传输
传输层的作用在于为运行在不同主机上的应用进程提供逻辑通信(这里的逻辑通信指的是在传输层角度看来两个进程间直接进行通信,实际上还是通过下层提供的服务,不都安将数据向下层传递并在对方处向上传递后才实现通信),简言之,传输层提供的是进程到进程间的通信
传输实体完成传输层任务的硬件或软件
传输实体可以在操作系统的内核
可以以一个链接库的形式绑定到网络应用中
可以以一个独立的用户进程运行
甚至可以实现在网络接口卡(网卡)上
传输层与网络层的区别网络层运行在由承运商操作的路由器上,因此用户无法真正控制网络层。对于丢包,高延迟等问题只能选择被动接受。传输层架设在网络层之上,允许用户控制服务质量
传输层原语独立于网络层原语,而网络层原语会因为网络的不同而不同。传输层的原语在向应用层传输的原语可以屏蔽掉这些不同,只提供标准,统一的原语。
原语:计算机进程的控制通常由原语完 ...
19-MyBatis注解开发
MyBatis注解开发MyBatis同时支持注解开发模式,在面对简单的配置时,注解开发可以明显的减轻开发难度
MyBatis注解类型
注解
作用
@Insert
用于执行新增语句
@Update
用于执行更新语句
@Delete
用于执行删除语句
@Select
用于执行查询语句
@Result
用于实现结果集的封装
@Results
与@Result一起使用,实现多个结果集的封装
@One
实现一对一结果集的封装
@Many
实现一对多或多对多的结果集的封装
基本使用步骤直接在mapper接口类中使用注解参数传入的是要执行的sql语句
12345678910public interface UserMapper { @Select("select * from user") public List<User> findAll(); @Insert("insert into user values (#{id},#{username}, ...
18-MyBatis多表操作
MyBatis多表操作一对一查询模型以用户-订单模型为例,假定用户与订单之间是一一对应的关系,建立如下数据库
订单表中的userId表示标识用户的ID信息,若直接通过sql语句进行一对一查询,则可写作select * from orders o ,user u where o.userId=u.id ,得到如下查询结果
可在mybatis中进行查询时,其并不知道各个数据段对应的参数,所以需要我们手动通过map进行对应
首先定义order类,注意这里通过User对象来储存的用户信息,而不是数据库中的userId
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748public class Order { private Long id; private String orderName; private int orderAmount; private User user; public Long getId() ...
17-MyBatis映射文件与核心配置文件深入
MyBatis映射文件深入动态sql可以看到,在之前的映射文件中,所有sql语句都是写死的,并不会根据我传入参数的不同进行区分,但在实际开发过程中,可能需要执行sql语句查询前先进行逻辑判断或其他操作,对参数进行简单的判断
例如下面的简单情况,我们在映射文件中写明了查询的条件,需要你User对象传入三个参数
123<select id="findByCondition" parameterType="user" resultType="user"> select * from user where id=#{id} and username=#{username} and password=#{password}</select>
此时,传入的User对象若存在该三个属性值则能够进行正常的查询
12345678910111213141516@Testpublic void test() throws IOException { ...