Java Web

day04-MySQL基础

2020-03-23  本文已影响0人  建国同学

一、数据库概述

1.为什么要使用数据库

使用数据库检索,相比从一个txt或者xml文档中检索只能通过线性搜索(从头到尾)去找,能大大的提高效率

2.数据库是什么

  • 数据库是按照数据结构来组织、存储和管理数据的仓库(本质还是一些文件,只是这些文件使用了对应的数据结构来组织数据)
  • 数据库管理系统(Database Management System:DBMS):专门用于管理数据库的计算机系统软件。能够为数据库提供数据的定义、建立、维护、查询和统计等操作功能,并完成对数据完整性、安全性进行控制的功能。

3.常见的关系数据库

4.SQL

SQL:结构化查询语言(Structured Query Language)。是关系型数据库标准语言,特点:简单,灵活,功能强大。


SQL包含6个部分:CRUD操作:CRUD(create, read, update, delete) 增删改查

二、ORM思想

ORM思想.png

三、mysql安装与配置

  • MySQL的默认端口是:3306
    数据库默认字符集就是utf8

设置密码:admin

  • 启动MySQL服务:
    开启服务: net start 服务名 如: net start mysql56
    关闭服务: net stop 服务名 如: net stop mysql56


    MySQL服务.png
  • 连接MySQL数据库:
    在命令行中:找到安装目录下的bin录制中有个mysql的命令(环境变量)
    1.格式:
    mysql -u账户 -p密码 -h数据库服务器安装的主机 -P数据库端口
    mysql -uroot -padmin -hlocalhost -P3306//// 127.0.0.1 //// 看飞秋,真实ip
    若连接的数据库服务器在本机上,并且端口是3306。
    2.可以简写: mysql -u root -p admin


    image.png
  • Navica工具:如果没有连接网线,那么在连接数据库的时候输入localhost是连接不上的,此时修改ip为127.0.0.1

四、MySQL数据库操作

1.数据类型

常用类型.png 整数类型2.png 小数类型02.png

对于字符类型来说,一定要指定位宽. varchar(20)

  • char(size)定长字符,0 - 255字节,size指N个字符数,若插入字符数超过设定长度,会被截取并警告。
  • varchar(size) 变长字符,0 - 255字节,从MySQL5开始支持65535个字节,若插入字符数超过设定长度,会被截取并警告。
字符类型01.png 字符类型02.png

BIT:我们一般存储0或1,存储是Java中的boolean/Boolean类型的值。其他的大二进制类型,开发中一般都不用.

二进制类型.png

2. 建表

2.输入建表的命令;

CREATE TABLE 表名(
   列名1    列的类型   [约束1]  [约束2] ,
   列名2    列的类型   [约束],
   ....
   列名N    列的类型   [约束]   
);

例子:primary key(主键),auto_increment (自增),default (默认值)
#创建表
create table `t_person`(
id bigint primary key auto_increment 
, name varchar(20) default null
, sex bit(1) default 0
, age int(11) default 18
, address varchar(255))

注意:最后一行没有逗号

表名的问题:使用标识符时不要用SQL的关键字,如果用到的话怎么办呢?
比如新建一张桌子表:(table),但是table是数据库中的关键字.
解决方案一:使用反引号(`)把自定义的标识符引起来:`table`.
解决方案二:使用表名的前缀,一般的,习惯t_table.

sql cmd 命令:
查看表目录(了解):
SHOW TABLES;
查看表结构:
DESC table_name;

查看DDL语句:
SHOW CREATE TABLE table_name;

删除表:
DROP TABLE table_name;

3.表的约束

1.非空约束:NOT NULL(NK),不允许某列的内容为空。
2.设置列的默认值:DEFAULT。
3.唯一约束:UNIQUE(UK),在该表中,该列的内容必须唯一。
4.主键约束:PRIMARY KEY(PK), 非空且唯一。
5.主键自增长:AUTO_INCREMENT,从1开始,步长为1。(MySQL特有)
6.外键约束:FOREIGN KEY(FK),A表中的外键列的值必须参照于B表中的某一列(B表主键)。

----
主键设计:
1:单列主键,单列作为主键,建议使用。
     复合主键,使用多列充当主键,不建议。
2:主键分为两种:
   1)自然主键:使用有业务含义的列作为主键(不推荐使用);
   2)代理主键:使用没有业务含义的列作为主键(推荐使用);

五、数据操作(DML)

image.png

1.简单查询:

保留字有WHERE,ORDER BY,GROUP BY和HAVING

> SELECT  {*, column [alias],...}
FROM  table_name  [where...];

2.过滤查询:

比较运算符

=               等于
>               大于
>=              大于或等于
<               小于
<=              小于或等于
!=(<>)       不等于

注意:字符串和日期要用单引号扩起来.
要让MySQL查询区分大小写,可以用BINARY保留字 :(了解)
SELECT * FROM table_name WHERE BINARY productName='g9x'
SELECT * FROM table_name WHERE BINARY productName='G9X'

逻辑运算符

AND(&&)          如果组合的条件都是TRUE,返回TRUE
OR(||)           如果组合的条件之一是TRUE,返回TRUE
NOT(!)           如果下面的条件是FALSE,返回TRUE

范围查询

使用BETWEEN运算符显示某一值域范围的记录,
这个操作符最常见的使用在数字类型数据的范围上,但对于字符类型数据和日期类型数据同样可用。

格式:
SELECT <columnList> FROM table_name
WHERE 列名 BETWEEN minvalue AND maxvalue:闭区间。

集合查询

使用IN运算符,判断列的值是否在指定的集合中。
格式: WHERE 列名 IN (值1,值2....);
注:集合查询,值与值之间是OR的关系.

空值查询

格式:WHERE  列名  IS NULL;
设置某一列的数据为null,    列名=null

模糊查询

使用LIKE运算符执行通配查询,查询条件可包含文字字符或数字:
%通配符:可表示任意个数的任意字符。
_通配符:可表示一个任意字符。
通配符:用来实现匹配部分值得特殊字符。

3.结果集排序

使用ORDER BY子句将记录排序(先有结果,再排序)
ASC : 升序,缺省。
DESC: 降序。
ORDER BY 子句出现在SELECT语句的最后。
格式:
SELECT <selectList> 
FROM table_name
WHERE 条件
ORDER BY 列名1 [ASC/DESC],列名2 [ASC/DESC]...;

注意:别名用于排序时不能加引号,否则,排序失效。

SELECT语句执行顺序:
先执行FROM--->接着执行WHERE--->再执行SELECT--->最后执行ORDER BY

4.分页查询

假分页(内存分页/逻辑分页):所有数据已经存在内容中,只是显示部分而已,
优点:每次翻页时都从内存中取数据,翻页速度极快,简单
缺点:消耗内存大,容易内存溢出

真分页(数据库分页/物理分页):每次翻页都去数据库查询数据
优点:设计合理的情况下, 不会造成内存溢出
缺点:翻页较慢,复杂

想要分页,后台必须要知道的两个条件: 当前页 currentPage, 每一页多少条数据 pageSize.
起始索引: startIndex ===> (当前页:currentPage - 1) * 每一页的条数:pageSize.
select * from product limit (currentPage - 1) * pageSize , pageSize;

5.聚合函数

什么是分组函数/聚合函数/统计函数/聚集函数:
分组函数作用于一组数据,并对一组数据返回一条记录。

COUNT:统计结果记录数  (COUNT(*))
MAX:  统计计算最大值
MIN:  统计计算最小值
SUM:  统计计算求和
AVG:  统计计算平均值

6.数据备份和恢复

MySQL自身的数据库维护:
这功能默认的禁用的,需要修改my.ini配置后重启服务器
注释掉[client]no-beep


1.导出:mysqldump -u账户 -p 数据库名称>脚本文件存储地址
mysqldump -u root -padmin test> f:/test_bak.sql
2.导入:mysql -u 账户 -p 数据库名称< 脚本文件存储地址
mysql -u root -padmin test< f:/test_bak.sql
需要存在一个数据库叫做 目标数据库.

Navicat工具的导入和导出.png
上一篇 下一篇

猜你喜欢

热点阅读