zoukankan      html  css  js  c++  java
  • springbootday06 mysql

    一、MySql

    1. 数据库概述

    数据库( Database )是按照数据结构来组织、存储和管理数据的仓库 。 数据按照特定的格式存储起来,用户可以通过SQL (Structured Query Language)对数据库中的数据进行增删改查, 这比咱们之前使用文件来管理数据要方便得多。

    • 数据库 & 表

    数据库管理系统(DataBase Manager System ) , 简称 DBMS , 是指一种操作和管理数据库的软件,这类软件用于创建、使用、维护数据库,对数据库进行统一管理和控制,以保证数据的完整性和安全性。我们可以通过它访问数据库中的表数据

    数据库其实是存储数据的仓库,在数据库中有数据表,我们所存的数据其实都是往数据表里面存储,而数据库又管理者很多张表,表示这几张表示一批数据的集合。正如我们第一天使用文件存储学生数据一样,如果使用数据库来存储,我们就会有一个表叫做 student表,如果还需要存储教师信息,那么还应该有一个teacher表 ,而这两张表正好位于一个数据库中。

    01

    • 常见的数据库 SQL 适合做
    1. mysql 开源免费 , 小型数据库, oracle收购
    2. oracle 收费 ,大型数据库,oracle公司产品
    3. sql server 收费 微软产品
    4. SQLite 嵌入式小数据库 、 移动端常用(Android | ios)
    5. DB2 收费 , IBM 产品
    6. H2 开源 ,嵌入式 | 内存版 数据库,纯java实现

    ...

    以上数据库都是关系型数据库 ---> 里面存储的数据,可以建立关系。

    非关系型数据库。 NoSql not only sql 不仅仅是sql 适合做缓存 购物车

    mogodb redis ... 秒杀 抢购

    2. MySql 安装

    • mysql安装

    • 可视化工具安装

    3. 数据库操作

    先使用可视化工具演练过一次后,再使用命令演示

    • 创建数据库
    create database xxx;
    
    • 删除数据库
    drop database xxx;
    
    • 修改数据库
    # 一般很少修改数据库 , 如果修改,只会修改数据库的编码,这一般很少修改。
    alter database xxx character set gbk;
    
    alter database xxx character set utf8;
    
    • 显示数据库
    show databases;
    
    # 显示这个数据库创建的语句,以及编码是什么
    show create database xxxx; 
    

    4.字段类型介绍

    java 			mysql
    
    int				int
    float			float
    double			double
    char(字符)/String(字符串)		char/varchar    固定长度(即便长度不够,会补空格) | 可变长度 (数据多长,长度多长)
    Date		    date(日期)|time(时间)|datetime (日期和时间)| timestamp(日期时间 ,会自动使用当前时间):
    
    文件类型		 BLOB | TEXT : TEXT 文本类型 , BLOB 二进制类型
    
    约束:
    	单表约束: 
    		主键约束: primary key 
    		唯一约束: unique
    		非空约束: not null
    
    
    

    5. 数据库表操作

    先使用可视化工具演练过一次后,再使用命令演示

    • 创建数据表
    语法: create table 表名(字段名  类型(长度) 【约束】 , 字段名 类型(长度)[约束]);
    
    CREATE TABLE aa (id INTEGER PRIMARY KEY AUTO_INCREMENT , username VARCHAR(25));
    
    • 删除数据表
    语法: delete from --表名
    
    delete from aa;  -- 只会清空表数据,不释放空间(序号接上以前),表依然存在
    truncate table aa ; -- 清空表数据,释放空间(序号从1开始),表依然存在
    
    DROP TABLE aa;   -- 删除表,一切都消失
    
    • 修改数据表
    alter table 表名 add 列名 类型(长度) 约束; 		--修改表添加列. 
    alter table 表名 modify 列名 类型(长度) 约束;	--修改列的类型长度及约束.
    alter table 表名 change 旧列名 新列名 类型(长度) 约束;	--修改列名.
    alter table 表名 drop 列名;					--删除列.
    rename table 表名 to 新表名;					--修改表名(比较少用)
    
    • 显示数据表
    show tables ; -- 显示当前数据库的所有表
    
    desc  aa;  --查看具体某张表的结构
    
    show create table aa; --显示建表语句
    

    6. 约束介绍

    • 主键约束:primary key

    关键字(primary key) 是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录 。 比如如何突出一名学生的唯一性,一般我们采用学号来表示,如何表示一个人的唯一,我们可以使用身份证号来表示。但是在数据库范畴里面,表示一条记录的唯一,我们通过会增加id 列来表示主键。

    主键必须是唯一、 不能为空 , 可以设置为自增长。

    # 主键约束可以在建表的时候就给定
    create table stu(id int primary key auto_increment , name varchar(25));
    
    # 也可以后面在修改,增加主键约束
    create table stu(id int , name varchar(25));
    
    alter table stu modify id int primary key ;
    
    # 如果还想增加自增长,那么还可以继续修改
    alter table stu modify id int auto_increment;
    
    • 唯一约束:unique 主键的值 也是唯一的。

    唯一约束指的是表示某个列的值唯一不允许重复。

    # 可以在建表的时候给出
    create table stu(id int primary key auto_increment , name varchar(25) unique);
    
    # 或者后面再修改
    create table stu(id int primary key auto_increment , name varchar(25));
    
    alter table stu modify name varchar(25) unique;
    
    
    • 非空约束:not null

    非空约束,指的是具体某一列不允许为空,必须有值。

    # 可以在建表的时候给出
    create table stu(id int primary key auto_increment , name varchar(25) not null);
    
    # 或者后面再修改
    create table stu(id int primary key auto_increment , name varchar(25));
    
    alter table stu modify name varchar(25) not null;
    

    7. 表记录CRUD

    该小节注重的是表中数据的操作。

    1. 增加

    --添加一条记录,对具体某些列赋值。顺序要对应 ,若是字符或者日期需要添加 '' 引号
    insert into 表 (列名1,列名2,列名3..) values  (值1,值2,值3..); 
    
    	
    --添加一条记录,表中的所有列都要赋值。	
    insert into 表 values (值1,值2,值3..); 
    
    

    2. 删除

    -- 删除的命令和上面删除表的命令非常相似。 只是多了where条件而已。
    delete from 表名 [where 条件];
    

    3. 修改

    -- 修改表,针对具体某一列进行赋值
    update 表名 set 字段名=值,字段名=值 [where 条件];
    
    -- 如: 更新张三的年龄 ,后面的where 用于限定找到张三
    update student set age = 18 where name = '张三';
    
    --如果后面不带where, 那么将会把整张表的所有学生年龄都改为18
    update student set age = 18;
    

    4. 查询

    • 简单查询
    --语法如下: 
    select [distinct]*[列名,列名] from 表 [where 条件].
    
    --例子: 
    * 1.查询所有的商品.	select * from product;
    * 2.查询商品名和商品价格.	select pname,price from product;
    * 3.别名查询.使用的关键字是as.as可以省略的.	
        * 3.1表别名:	select * from product as p;
        * 3.2列别名:select pname as pn from product;	
    * 4.去掉重复值.	select distinct price from product;
    	图书借阅系统,
    		谁来借图书。
    			张三 1
    			张三 1
    			张三 1
    
    • 条件查询
    * 1.查询商品名称为十三香的商品所有信息:
        * select * from product where pname = '十三香';
    * 2.查询商品价格>60元的所有的商品信息:
        * select * from product where price > 60;
    
    	-- where后的条件写法:
        * > ,<,=,>=,<=,<>
        
        
        
        * like 使用占位符 _ 和 %  _代表一个字符 %代表任意个字符. 
            * select * from product where pname like '%新%';
        * in 在某个范围中获得值.
            * select * from product where pid in (2,5,8);
        * between 12 and 56
    
    
    • 排序查询
    * 1.查询所有的商品,按价格进行排序.(asc-升序,desc-降序)
        * select * from product order by price;
    * 2.查询名称有新的商品的信息并且按价格降序排序.
        * select * from product where pname like '%新%' order by price desc;
        
     按价格排序 、 分数排序 、 日期 、 年龄...
     
     	order by 列  asc(升序) | desc(降序)
    
    
    • 聚合查询
    * sum(),avg(),max(),min(),count();
    * 1.获得所有商品的价格的总和.--select sum(price) from product;
    * 2.获得所有商品的平均价格.--select avg(price) from product;
    * 3.获得所有商品的个数.--select count(*) from product;
    
    • 分组查询
    * 1.根据cno字段分组,分组后统计商品的个数.
        * select cno,count(*) from product group by cno;
        
    * 2.根据cno分组,分组统计每组商品的平均价格,并且平均价格> 60;
        * select cno,avg(price) from product group by cno having avg(price)>60;
    
    	having 关键字可以让我们筛选成组后的各种数据,可以理解为对分组后的数据进行再次过滤
    
    • 分页查询
    -- 第一个?表示跳过前面多少条 , 第二个?表示返回多少条记录。
    select * from product limit ? , ? ; 
    
  • 相关阅读:
    第一节:RestfulCRUD案例
    第三节:<mvc:annotationdriven />标签解析
    第二节:SpringMVC 的表单标签
    第一节:SpringMVC—数据绑定流程分析
    第四章:(2)Web开发 之 webjars&静态资源映射规则
    第三节:处理静态资源
    10.05
    四则运算二柱子1
    10.08
    10.02
  • 原文地址:https://www.cnblogs.com/xiaocongcong888/p/9436297.html
Copyright © 2011-2022 走看看