01-数据库基础

1.数据库概述

1.存放数据的方式

  • 1.存在内存中
  • 2.保存在普通文件中
  • 3.保存在数据库中

2.什么是数据库

存储数据的仓库,用户可以对数据库中的数据进行增加,修改,删除及查询操作。

1.数据库的优点

数据库是按照特定的格式将数据存储在文件中,通过SQL语句可以方便的对大量数据进行增、删、改、查操作,数据库是对大量的信息进行管理的高效的解决方案。

2.数据库管理系统(DBMS)

数据库管理系统(DataBase Management System,DBMS):指一种操作和管理数据库的大型软件,用于创建、使用和维护数据库,对数据库进行统一管理和控制,以保证数据库的安全性和完整性。用户通过数据库管理系 统访问数据库中表内的数据

3.数据库管理系统、数据库和表的关系

数据库管理系统可以管理多个数据库,每个数据库中可以有多张数据库表。

4.常见数据库

  • MYSQL :开源免费的数据库,小型的数据库.已经被Oracle收购了.MySQL6.x版本也开始收费。
  • Oracle:收费的大型数据库,Oracle公司的产品。Oracle收购SUN公司,收购MYSQL。
  • DB2:IBM公司的数据库产品,收费的。常应用在银行系统中.
  • SQLServer:MicroSoft 公司收费的中型的数据库。C#、.net等语言常使用。
  • SyBase:已经淡出历史舞台。提供了一个非常专业数据建模的工具PowerDesigner。
  • SQLite: 嵌入式的小型数据库,应用在手机端。

2.sql语句

  1. 简介

概述

结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。

   数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时就需要使用到数据库认识的语言---SQL语言

作用:

通过Sql语言可以对数据库管理系统中的数据库,表,表中的数据进行增删改查。

2.sql分类和语法

1.DDL(Data Definition Language)数据定义语言

 用来操作数据库和表

关键字:create,drop,alter等

2.DML(Data Manipulation Language)数据操作语言

用来对数据库中表的数据进行增删改

关键字:insert,delete, update等

3.DQL(Data Query Language)数据查询语言

用来对数据库中表的数据进行查询

关键字:select,from,where等

4.DCL(Data Control Language)数据控制语言(了解)

用来定义数据库的访问权限和安全级别,及创建用户。

关键字:grant, revoke等

5.TCL(Transaction Control Language) 事务控制语言

用于控制数据库的事务操作

关键字: commit,rollback等

sql语法注意事项:

1 SQL语句可以单行或多行书写,以分号结尾
2 可使用空格和缩进来增强语句的可读性
3 MySQL数据库的SQL语句不区分大小写
4 可以使用-- 或# 或/**/的方式完成注释

3.DDL(数据定义语言)

1.操作数据库

1-创建数据库

创建数据库 (掌握)

        create database 数据库名;

                        默认使用的是安装时候选择的字符集

判断是否存在并创建数据库(了解)

        create database if not exists 数据库名;

创建数据库并指定字符集(了解)

        create database 数据库名 character set 字符集;

2-查询数据库

查询所有数据库

    show databases;

查看某个数据库的定义信息

     show create database 数据库名称;

3-修改数据库(了解)

修改数据库字符集格式

    alter database 数据库名  character set 字符集;

4-删除数据库

drop database 数据库名;

5-数据库的其他操作

查看当前使用的数据库

    select database();

切换数据库

    use 数据库;

2.操作表

条件:首先要进入到指定的数据库中

创建表

create table 表名(
            字段名1 字段类型1[长度],
            字段名2 字段类型2[长度]   
            .....
        )
ps:只有字符串类型需要手动加长度,其它类型都不需要加长度(默认有)

-- 需求: 创建一个学生表(id name sex)

数据类型:
java的数据类型      mysql数据库的数据类型
int                     int
float                   float
double                  double

char/string             varchar
date                    date      yyyy-MM-dd
                        time      HH:MM:SS
                        datetime  YYYY-MM-DD HH:MM:SS  

查看表

查看某个数据库中的所有表:  show tables;

查看表结构:  desc 表名称;

查询建表语句: show create table 表名;

快速创建表结构: create table 新表名 like 旧表名;

修改表结构

添加表列 :   alter table 表名 add 列名 类型;

删除表列 : alter table 表名 drop 列名;

修改列名 : alter table 表名 change 旧名称 新名称 类型;

修改列类型  :   alter table 表名 modify 列名 新类型

修改表名称 : rename table 旧表名 to 新表名;

删除表

直接删除表: drop table 表名;

判断表是否存在并删除表(了解):   drop table if exists 表名;

4.DML(数据操作语言)

插入记录

添加全部字段

insert into 表名 (字段名1, 字段名2, 字段名3…) values (值1, 值2, 值3);    

insert into 表名 values (值1, 值2, 值3);  

添加部分字段

insert into 表名 (字段名1, 字段名2, ...) values(值1, 值2, ...);

注意事项

值与字段必须对应,个数相同,类型相同

值的数据大小必须在字段的长度范围内

除了数值类型外,其它的字段类型的值必须使用引号引起。

如果要插入空值,可以不写字段,或者插入null

DOS命令窗口操作数据乱码问题的解决(了解)

  • 错误说明:
    当我们使用DOS命令行进行SQL语句操作如有有中文会出现乱码,导致SQL执行失败
  • 错误原因:
    因为MySQL的设置编码是utf8,而系统的DOS命令行编码是gbk,编码不一致导致的乱码
  • 解决方案:
    设置mysql编码方式
    • 快捷设置(临时)
      set names gbk;
    • 修改配置文件(永久)
      1 my.ini文件,在[mysql]设置字符集:GBK
      2 重启mysql服务

蠕虫复制

在已有的数据基础之上,将原来的数据进行复制,插入到对应的表中

前提:表结构得一致

语法格式: insert into 新表 select * from 旧表;

修改记录

不带条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 ;  全改

根据条件修改数据 : update 表名 set 字段名 = 值,字段名 = 值 where 字段名=值; 按条件改

删除记录

不带条件删除数据: delete from 表名;   全删

根据条件删除数据: delete from 表名 where 字段名=值; 按条件删

truncate删除表记录: truncate table 表名;  全删

truncate和delete的区别:(面试题)

    delete是将表中的数据一条一条删除

    truncate是将整个表摧毁,重新创建一个新的表,新的表结构和原来表结构一模一样

        delete删除的数据可以还原  truncate的数据无法还原

5.DQL(数据查询语言)

1.简单查询

查询所有列:  select * from 表名;
查询指定列:  select 字段名1,字段名2... from 表名; 
别名查询:  select 字段名1 as 别名, 字段名2 as 别名... from 表名 as 表别名; 
清除重复值:  select distinct 字段名 from 表名;
查询结果参与运算: select 列名1 + 固定值 from 表名;(参数运算的字段必须为数值型)

2.条件查询

格式:select * from 表名 where 条件;

比较运算符

    > 大于 
    < 小于 
    <= 小于等于 
    >= 大于等于 
    = 等于 
    <> 、 != 不等于

逻辑运算符

and(&&) 多个条件同时满足 
or(||) 多个条件其中一个满足 
not(!) 不满足

范围

between 值1 and 值2   类似与的关系
in(字段1,字段2)     类似或的关系
/not in(字段1,字段2)  不在in中

模糊查询 like

like
%  : 模糊多位
_  : 模糊一位       

排序 order by 字段

select * from 表名 where 条件 order by 字段名称 [desc | asc] , 字段名 [desc | asc] ;
asc(默认) : 升序   desc : 降序

聚合函数

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

分组 group by 字段

select * from 表名 where 条件 group by 分组字段 [having 分组条件 ] ;


having与where的区别(面试题)
having是在分组后对数据进行过滤.
where是在分组前对数据进行过滤
having后面可以使用聚合函数
where后面不可以使用聚合函数

分页

limit
select * from 表名 limit 起始数,查询几条;

null查询

#null判断只能用is
SELECT * FROM 表名 WHERE 列名 IS NULL;
SELECT * FROM 表名 WHERE 列名 IS NOT NULL;

查询顺序

select distinct *或者字段或者聚合 from 表名 where 条件 and 条件 或 btween 条件 或 or 条件  或 in 条件 group by 字段 having 条件 order by 字段 asc/desc limit a,b

6.数据库约束

约束:对表中的数据可以进行进一步的限制,来保证数据的唯一性,正确性和完整性

约束种类:

单表约束

PRIMARY KEY : 主键约束    代表该字段的数据不能为空且不可重复
NOT NULL : 非空  代表该字段的数据不能为空
UNIQUE : 唯一   代表该字段的数据不能重复

多表约束

 外键约束
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,864评论 6 494
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,175评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,401评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,170评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,276评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,364评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,401评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,179评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,604评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,902评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,070评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,751评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,380评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,077评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,312评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,924评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,957评论 2 351

推荐阅读更多精彩内容

  • 1 数据库 数据库是一个以某种有组织的方式存储的数据集合。最简单的办法是将数据库想象为一个文件柜。这个文件柜是一个...
    ATHAS阅读 729评论 3 52
  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,196评论 1 16
  • 什么是MySQL? MySQL是一个关系型数据, MySQL是由瑞典MySQL AB 公司开发,目前属于 Orac...
    喝酸奶要舔盖__阅读 113评论 0 0
  • 软件设计师考试——数据库基础部分 思维导图 概述首先是数据库相关的一些概念数据库(DB)、数据库管理员(DBA)、...
    三点水滴阅读 866评论 6 20
  • 春风,徐徐地吹,把大地装扮得花红柳绿,木棉花儿像红色的火焰在燃烧;春天的茉莉开得刹是可爱,像胖嘟嘟的婴儿的拳头。女...
    哈哈楼哈哈阅读 99评论 0 0