一.数据库

一.含义:
        存储数据的仓库
二.特点:
        永久存储
        可以支持一些事物
        (数据库的事务--将整个业务操作看成一个整体:转账(要莫一起成功,要莫一起失败!))
        执行效率高
三.之前存储方式:
        1.临时变量:存储在内存中,方法结束,局部变量就消失了
        2.数组 存储同一种类型元素,但是长度固定的
        3.StringBuffer;字符串缓冲区,里面存储的可变的字符序列
        4.集合 存储任意类型元素,必须引用类型,取元素:(单例集合:Iterator),增强for循环
                存储大量大数据,效率太低
        5.Io流,也能存储数据,但是太耗时(读写过程)
四.常见的数据库:
    关系型数据库:oracle,针对javaee支持的(Java平台),收费
                 mysql,开源的而且免费,相同的数据库引擎:MariaDB
                 SqlServer,针对net平台更兼容一些
    非关系数据库:NoSQL
                redis-->分布式缓存,可以缓存用户:User,缓存相关商品数据/缓存一些经常改变的数据
                MangoDb
    
                
                  

二. Mysql

安装的话,太麻烦了,略过,直接进入正题,开始上手。
1.使用进入dos控制台进行登录(黑窗口去使用)
    c:\Users\zhangyang>mysql -uroot -p


    DDL语句:操作数据库


2.查询当前服务器软件中的所有的数据库
    mysql>show databases;
3.创建新的数据库
    create database 数据库名称;
    create database if not existe 数据库名称;
4.查看创建的数据库的默认字符集
    show create database 数据库名称;
5.修改数据库的默认字符集
    alter database 数据库名称 character set 字符集;
6.删除数据库
    drop database 数据库名称;
    drop database if exists 数据库名称;
7.切换数据库(数据库本身就是一个文件夹,进入到某个文件夹中)
    use 数据库名称;

    DDL语句:来操作表


1.查询当前指定数据库中的所有表
    show tables;
2.创建表的语法:
    create table 表名(
        字段名称1 字段类型1,
        字段名称2 字段类型2,
        字段名称3 字段类型3,
        ...
        字段名称n 字段类型n

    );
3.mysql常见的字段类型
    int:整数类型(推荐):默认11位
        给定的值,它获取到当前整数的实际长度(自动获取)
    int(位数):不推荐
    varchar(指定长度):就是java类的String,字符串类型:推荐使用'',也可以是双引号,也可以不带引            
                      号
    date:日期,仅仅只是表示日期,没有时间
    datetime:日期+当前时间
    timestap:时间戳(就当前被访问/操作具体:当前系统时间)
    double(5,3):小数类型,可以5位数据,小数点后3位...
    double 小数类型:100-->100.0
4.查询表的结构
    desc 表名;
5.修改表
    a.给表中添加一列(添加一个字段)
        alter table 表名 add 字段名称 字段类型:
        例:mysql>alter table student add hobit varchar(20);
    b.修改表的字段名称
        alter table 表名 change 以前的列名称 新的列名称 以前的字段类型;
        例:mysql>alter table student change gender sex varchar (5)
    c.修改表的字段类型
        alter table 表名 modify 字段名称 更改后的字段类型
        例:mysql>alter table student modify sex varchar(3);
    d.修改表的名称
        alter table 以前的表名 rename to 新表名;
        例;mysql>alter table student rename to stu;
    e.创建表的时候复制一张相同的表
        create table 新表名 like 存在的表名;
        例:mysql>create table teacher like stu;
    f.删除表
        drop table 表名;
        drop table if exists 表名;
        例:mysql>drop table teacher;

三.sqlyog

一.工具介绍
    sqlyog:图形界面话工具,可以提高开发频率,对于前期,需要自己手动写sql.
二.零散知识点
    1.--普通注释
      #注释,引用注释
    Show variables like'%character%',模糊查看当前mysql服务端所有的字符编码集
三.数据库操作语句:操作表的记录
    例:USE ee_2104;
        DESC stu;
    1.给stu表插入数据
        插入语法
           a.语法一:insert into 表名 values(字段值1,字段值2,...n:全部字段);
            例:INSERT INTO stu VALUES(1,'高圆圆',41,'西安市','女','1990-02-27','喜欢足球') ;
           b.语法二:插入部分字段
                inset into 表名 (字段名称1,字段名称2,字段名称3..)values(值1,值2,值3..);
            例:INSERT INTO stu (sid,name,age,sex)VALUES(2,'赵又廷',45,'男');
           c.语法三:插入全表字段或者部分字段的时候,可以一次性插入多条记录
                insert into 表名 values(字段值1,字段值2,..n:全部字段),(字段值1,字段值                
                 2,..n:全部字段),(...)
            例:INSERT INTO stu VALUES
               (3,'李四',24,'广州市','女','1998-10-20','喜欢跑步'),
               (4,'王五',27,'运城市','男','1997-11-20','喜欢篮球'),
               (5,'文章',28,'西安市','男','1997-11-20','喜欢足球') ;
    2.注意事项:
        插入数据的时候,必须保证插入值对应的字段类型一致,否则会存在潜在问题(类型不匹配)
        插入全表字段的值必须总数据要和字段列名的总数一致
 

四.SQLyog基本操作

一.修改
    update语句:修改
    update 表名 set 字段名称 = 值 where xx=xx;    带条件进行修改
    来来来,老哥给你来举例
        例:将name为7的人的学号改成6
            UPDATE stu SET sid = 6 WHERE NAME = '7' ;
        例:将sid为6的学生 把name 改成"杨德财",address改为"西安市" 
            UPDATE stu SET NAME = '杨德财',address = '西安市' WHERE sid = 6 ;
        例:update 表名 set 字段名称 = 值; (属于批量修改) (都会带条件修改:推荐的)
            UPDATE stu SET address = '西安市' ;
二.删除
    delete from 表名 where ...:带条件来删除:     
        例:删除sid=6的学生
            delete from stu where sid =6;
    1).delete from 表名:是删除全表数据(只是删除表的记录,表字段都还在!)
        例:delete from stu;
    2).truncate table 表名:删除全表数据
        例:truncate table stu;
    drop table stu:删除表
        例:drop table stu;
    (拓展分析):
            试问,1)跟2)都是删除全表数据,这两货有啥区别呢?
                答:    delete from 表名:只是删除了表中的全部数据,那么当前表的结构还存在, 
                     针对自增长主键id,下次从之前id值继续自增。
                        truncate table 表名:会将当前的表的全部数据以及表都删除掉,并且自动         
                     创建一张一摸一样的表,直接影响自增长主键,从0继续开始自增。
                        拿我自己的话说,就相当于微信退出一样,前者是退出账号,你自己的账号信息     
                     都在,下次直接登录是可以的,后者是注销登录,下次登录的话,得从新重新输入        
                     信息。
三.查询
    DQL语句:数据库查询语句(这玩意是重点,查询种类还贼鸡多,加油记)
    有七种,来,我给你罗列。
        a.基本查询
        b.带where条件查询
        c.模糊查询
        d.聚合查询
        e.分组查询
        f.筛选查询
        e.分页查询
    1.基本查询
        select
                要查的内容
        from
                从哪个表里查
      要是字段重复了,查询字段的时候,前面加上distinct去重,
      有些值为null咋办,可以使用mysql自带的函数ifnull
      查询字段的时候给别名as"别名",它可以省略。
      进行字段求和/求差,字段类型必须一致,否则出现警告
    2.where查询
        select
                  all
        from
                从哪个表里查
        where
                要查的条件
        where 赋值运算符=
        where 比较运算==,<,<=,>,=>,!=,<>(最后这个是不等于)
        where 其他符号:&&,||,and,or,between,and...
        where 字段名称 in(值1,值2,值3)等价于:字段名称=xx or xx or xx
        where 字段名称 是否为null    (is null):为空        (is not null):不为空
        提醒一下,java语言的==null,在这块不支持,用is null 或者is not null.
    3.模糊查询
        select
                字段列表
        from
                表名
        where
                字段名称
        like(关键字)
                '%xx%';
        %:表示可以匹配的任意的多个字符,一般都是'%字符值%':包含指定的字符的信息,模糊查询出来.
        _:表示代替一个字符:模糊查询,名字为三个字符的人'___'
      空格:模糊查询姓名为两个字符的人,'_化'
        show variables like '%character%';
    4.聚合查询
        count(字段名称):查询总记录数,字段名称必须非null,且都使用非业务字段
        avg(字段名称):查询当前字段的平均值
        max(字段名称):查询当前字段的最大值
        min(字段名称):查询当前字段的最小值
        sum(字段名称):查询字段的求和值
        注意,不能使用业务字段作为条件查询总记录数,因为业务字段都是可能发生变化的字段(不建议)
        这家伙查出来的都是单行单列的
    5.排序查询
        select
                字段列表
        from
                表名
        order by
                字段名称 排序方式
    6.分组查询
        group by 带条件查询,必须先使用条件,然后参与分组
        where语句必须放置在group by 之前
        查询时候:
            分析:查询哪个字段
                  带什么条件
                  有没有分组(需要分组,where条件必须在前)
                  有没有筛选,如果有筛选,有分组
                  先where
                  在分组
                  再筛选...
        筛选:having
            其后可以使用聚合函数,而且如果sql语句有where条件,有group by ,有having
            where必须置于group by之前
            group by 必须置于having 之前
    7.分页查询
        mysql :limit 起始行数,每页显示的条数
        select 
                字段列表 
        from
                表名
        limt
                起始行数,每页现实的条数;
        
    
        
 

 

你可能感兴趣的:(数据库,java)