MySQL

        结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以 及查询、更新和管理关系数据库系统。

SQL优点:

不是某个特定数据库供应商专有的语是言,几乎所有DBMS都支持SQL 简单易学,灵活使用可以进行非常复杂和高级的数据库操作

DDL

数据(结构)定义语言DDL(Data Definition Language),是用于创 建和修改数据库表结构的语言。

常用的语句:create(创建) ,alter(修改),drop(删除),rename

数据类型

字符类型

char(n) 长度为n的定长字符串,最大长度255个字符

varchar(n最大长度为n的可变长字符串

日期时间类型

date    日期, 包含年月日

datetime 年月日 时分秒

整数类型:

TINYINT 1字节

SMALLINT 2字节

MEDIUMINT 3字节

INT 4字节

BIGINT 8字节

浮点型

decimal(a,b)  a是该数有几位,b是小数点后有几位

TEXT列字符字符串

TINYTEXT、TEXT、MEDIUMTEXT和LONGTEXT

表中操作

约束

-- 主键约束,一个表只能有一个主键,AUTO_INCREMENT可以设置INT型主键自动增长

-- not null 不可为空约束

-- unique 唯一约束,被设置的目标不可以为空

-- check 检查约束,满足检查条件的数据才能成功添加

--外键约束

设置部分功能
1.comment

设置注释

2.default

设置默认值

于是id,name和gender有了注释

gender被默认设置为男

3.删除表

drop

4.修改表名

rename

5.修改表的编码集

alter

6.复制表结构

create table,创建一个结构和原来表相同的新表

由是获得stu0

DML

数据操纵语言DML(Data Manipulation Language)

常用语句: insert,delete,update

1..在指定表中插入数据

insert into

2.修改表中语句

update

3.删除表中语句

delete

DQL

1.符号

在数据库中+-*/只能进行算术,没有其他作用

如此,查询结果中的id大小比原本多了10.

2.concat

拼接函数

3.为查询结果起别名

在此为id加10后的结果取名newid

4.distinct

删除选项中的重复行,并返回结果

单行函数

字符函数

length():获取参数值的字节个数

char_length()获取参数值的字符个数

concat(str1,str2,.....):拼接字符串

upper()/lower():将字符串变成大写/小写

substring(str,pos,length):截取字符串 位置从1开始

instr(str,指定字符):返回子串第一次出现的索引,如果找不到返回0

trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)

lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度

rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度

replace(str,old,new):替换,替换所有的子串

逻辑处理函数

数学函数

round(数值):四舍五入

ceil(数值):向上取整,返回>=该参数的最小整数

floor(数值):向下取整,返回<=该参数的最大整数

truncate(数值,保留小数的位数):截断,小数点后截断到几位

mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负

rand():获取随机数,返回0-1之间的小数

日期函数

now():返回当前系统日期+时间(年月日时分秒)

curdate():返回当前系统日期,不包含时间(年月日)

curtime():返回当前时间,不包含日期(时分秒)

获取指定的部分,年、月、日、小时、分钟、秒

YEAR(日期列),MONTH(日期列),DAY(日期列) ,HOUR(日期列) ,MINUTE(日期列) SECOND(日期列)

str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期

date_format(日期列,格式):将日期转换成字符串

datediff(big,small):返回两个日期相差的天数

分组函数

分组函数用来做统计作用

sum 求和、avg 平均值、max 最大值、min 最小值、count 计数 (非空)

其中,sum,avg只能用于处理数值型

max,min,count可以处理任何数据类型 2.以上分组函数都忽略null值 

分组函数查询的字段要求是group by分组后的字段

逻辑运算符

 and(与) or(或) not(非)

基础查询

模糊查询 LIKE : 一般和通配符搭配使用,用来判断是否包含某些字符.

通配符: %

between and: and左右两个值,判断是都在该区间内;

in 判断某字段的值是否属于in列表中的某一项

IS NULL(为空的)或 IS NOT NULL(不为空的)

union和union All

union和unionall都会将两个查询的结果链接起来,但是区别在于union会去除重复项,而union不会.

order by子句

order用来对结果进行排序,desc是降序,asc是升序,默认不写也是升序

limit子句

对查询的显示结果限制数目  (sql语句最末尾位置)前面的数字是起始位置,后面的是查几个数据)

多表设计

数据库设计三范式

第一范式:所有的元素都不能再分解

第二范式:有主键,其他元素都依赖于主键

第三范式:每列都和主键列直接相关,不可以间接相关,并且表中不能包含其他表中的非主键值

添加外键

CONSTRAINT 约束名 foreign key(外键在本表的名字) references 外键表名(外键在外表的名字)

约束名规则::FK_外键表名字_本表名字_On_外键在本表名字

添加约束后,会有以下效果:

主表指的是外键来源的表,从表是本表

1、当主表中没有对应的记录时,不能将记录添加到从表
2、不能更改主表中的值而导致从表中的记录孤立
3、从表存在与主表对应的记录,不能从主表中删除该行
4、删除主表前,先删从表

如果是创建表完成后添加,格式如下:

fk_外表名_本表名_on_本表外键 FOREIGN KEY(本表外键) REFERENCES 外表名(外表外键)

ALTER TABLE stu03 ADD CONSTRAINT fk_stu03_major_on_majorhaoma FOREIGN KEY(majorhaoma) REFERENCES major(haoma)

关联查询

自连接

在该查询中,相当于是开辟了一样的自己,然后分而比较

内连接

只将满足条件的内容筛选出来

左外连接
右外连接

子查询

出现在其他语句中的select语句,称为子查询或内查询;外部的查询语句,称为主查询或外查询.

分类:按子查询出现的位置

from后面:支持表子查询

where:支持标量子查询,列子查询

按功能、结果集的行列数不同:

标量子查询(结果集只有一行一列)

结果集中只有一行一列,一个1.75m的人

列子查询(结果集只有一列多行)

表子查询(结果集一般为多行多列)

子查询结果为多行多列,该查询中,子查询查询出几个专业号和该专业最高的个子,再通过内连接进行筛选.

JDBC

JDBC搭建

1.导入mysql的jar文件

2.加载驱动类

加载驱动类有两种方式,二选一即可

3.建立与数据库的连接,获取数据库对象

4.发送数据

5.关闭连接

JDBC增删改

方法一Statement

Connection对象调用createStatement()方法创建Statement对象,Statement对象调用excuteUpdate()方法对数据库进行操作

对传来的数据要用'"++"'框起来

增加

修改

删除

方法二PreparedStatement

Collection对象调用prepareStatement()方法创建PreparedStatement对象,并在构造器中选择要进行的操作,然后对操作进行赋值,最后调用executeUpdate()方法执行程序.

这种方法,传来的参数不需要拼接,先在预编译中用?占位,再在赋值操作中添加即可

新增

修改

删除

Statement和PreparedStatement的区别

二者都是向数据库发送sql,但是Statement是直接将参数拼接到sql中,要拼接字符串,安全性差(可拼接or 1=1来对数据库数据进行攻击);PreparedStatement先用?占位,然后通过setObject()方法赋值.在赋值时会进行检测,防止通过sql注入攻击,是安全可靠的

JDBC查询

根据编号查询结果只有一个的信息.

在做好配置后,仍然使用PreparedStatement来发送文件,PreparedStatement的对象调用executeQUery()方法查询结果,将查询结果封装在ResultSet对象中.再用Result调用next()方法判断是否查询到结果.因为我们查询的是学生信息,所以最后将结果封装在Student类的对象中返回.

查询返回结果为多个的信息

与返回一个结果不同的是,该情况将查询的结果一一存储在集合中,然后将集合返回.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值