Mysql

数据库

  • 数据库概述
    数据库是指长期储存在计算机中有组织的、可共享的数据集合,且数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的独立性,系统易于扩展,并可以被多个用户共享。

  • 学习数据库主要学习的就是如何对数据进行增删改查操作

    • 增:插入数据
    • 删:删除数据
    • 改:修改数据
    • 查:查询数据
  • 为什么使用数据库软件?

    • 之前在学习webServer时通过IO技术已经操作过数据,其实相当于自己写了数据库软件,但是功能非常少,执行效率也是非常低, 将来工作中不管开发什么项目都需要对数据进行增删改查操作,这种使用频率很高而且开发过程复杂的工作肯定会有一个通用的解决方案.数据库软件就是一个别人写好的通用解决方案,以后对数据进行增删改查全部使用的是数据库软件
    • 学习数据库,我们只需要学习SQL语言, 学习如何通过该语言和数据库软件进行交互即可.
  • 常见的数据库软件(DBMS:DataBase Management System):

  • 主流关系型数据库

    • MySQL数据库概述
      • MySQL是开放源码的小型关系型数据库管理系统,广泛应用在中小型网站中,总体拥有成本低、规模较Oracle和DB2小
      • 2008年1月16日,Sun公司收购MySQL。
      • 2009年4月20日,Sun被Oracle公司收购,所以 MySQL现在属于Oracle公司
      • 最新版本:MySQL5.7
      • 开源软件,市占率排名第一 , MySQL创始人从Oracle离职,创办MariaDB(实际上就是MySQL)
    • Oracle数据库概述
      • Oracle: Oracle公司产品,闭源软件, 性能最高,价格最贵,市场占有率排名第二
      • Oracle是著名的Oracle(甲骨文)公司的数据库产品
      • Oracle是世界上第一个商品化的关系型数据库管理系统
      • Oracle采用标准SQL (结构化查询语言) ,支持多种数据类型 ,提供面向对象的数据支持,具有第四代语言开发工
        具,支持UNIX、WINDOWS、OS/2等多种平台
      • Oracle公司的产品丰富, 包括Oracle服务器、Oracle开发工具和Oracle应用软件。其中最著名的就是Oracle数据库,目前的最新版本是Oracle 12c
    • SQL Server数据库概述
      • SQLServer: 微软公司产品, 运行在Windows NT服务器上,Microsoft SQL Server的最初版本适用于中小企业,但是应用范围不断扩展,已经触及到大型、跨国企业的数据库管理,最新版本是SQL Server 2012
      • 市占率第三. 主要应用在微软的整套解决方案中
    • DB2数据库概述
      • DB2: IBM公司的关系型数据库管理系统,主要应用在IBM整套解决方案中。
      • 安全性和功能性成反比
      • DB2有很多不同的版本,可以运行在从掌上产品到大型机不同的终端机器上
      • DB2 Universal Database Personal Edition和DB2 Universal Database -Workgroup Edition分别是单用户和多用户系统,可以运行在Windows上
      • DB2是Oracle的主要竞争对手
    • Sybase数据库概述
      • Sybase是美国Sybase公司的关系型数据库系统
      • Sybase是较早采用C/S技术的数据库厂商
      • 典型的UNIX或Windows NT平台上客户机/服务器环境下的大型数据库系统
      • Sybase通常与Sybase SQL Anywhere用于客户机/服务器环境,前者作为服务器数据库,后者为客户机数据库,采用该公司研制的PowerBuilder为开发工具在国内大中型系统中具有广泛的应用
      • 2010年被SAP收购
  • SQLite: 轻量级数据库软件,功能比较少,安装包非常小只有几十k

  • 网站整套解决方案包括: 开发语言(java/.net/php)+ 操作系统(windows/linux/mac os)+ web服务软件(Tomcat…)+数据库软件(mysql/orcale/sqlserver)

  • 开源和闭源

    • 开源: 开放源代码, 盈利方式: 主要靠卖服务, 可能会有技术大拿对开源产品进行维护升级.
    • 闭源: 不开放源代码,盈利方式:主要靠卖产品+卖服务, 闭源产品可能会有技术大拿对产品进行攻击.

SQL语言

  • Structured Query Language:结构化查询语言, 负责程序员和数据库软件之间的交流

  • SQL是在关系数据库上执行数据操作、检索及维护所使用的标准语言,可以用来查询数据,操纵数据, 定义数据,控制数据

  • 所有数据库都使用相同或者相似的语言

  • 执行SQL语言需要先链接数据库软件,如何链接:

    • window: 开始->所有程序->MySQL/MariaDB->MySQL Client 点击运行 输入安装时的密码回车
      在这里插入图片描述
    • Linux: 桌面空白区 右键 打开终端:输入 mysql -uroot -p 回车 再输入密码 回车
    • 提示以下内容说明OK
      在这里插入图片描述
  • 如何退出链接? 关闭窗口或执行 exit; 回车执行后有的退出 有的会关闭窗口 都属于正常

SQL分类

  • DDL(Data Definition Language) : 数据定义语言, 负责数据库和表相关的操作
  • DML(Data Manipulation Language): 数据操作语言, 负责数据增删改查
  • DQL(Data Query Language): 数据查询语言, 只包括查询
  • TCL(Transaction Control; Language): 事务控制语言,处理事务相关
  • DCL(Data Control Language): 数据控制语言, 负责控制用户权限相关

DDL数据定义语言

  • DDL ( Data Definition Language )
  • 负责数据结构定义与创建数据库对象的语言
  • 常用的有CREATE、ALTER与DROP三个
  • 注意: DDL不支持事务DDL语句操作以后无法回滚( rollback ) ,常见面试考点!
  • 使用数据库保存数据需要先建库再建表, 在表里面对数据进行操作
  • 开发的每一个工程都对应MySQL里面一个单独的数据库, MySQL里面可以创建n个数据库
  • 一个数据库里面有n张表, 一个网站是由一个数据库里面的多张表来实现
  • 在表里面有n条数据
  1. 数据库相关

    1. 如何创建数据库

      • 格式: create database 数据库名; 使用的是默认字符集

      • 指定字符集的格式: create database 数据库名 character set utf8/gbk;

      • 举例:

        create database db1;

        create database db3 character set utf8;

        create database db4 character set gbk;

    2. 查询所有数据库

      • 格式: show databases;
    3. 删除数据库

      • 格式: drop database 数据库名;
      • 举例: drop database db4;
    4. 使用数据库

      • 作用: 对表或者数据进行操作时必须先指定你要操作的是哪个数据库里面的
      • 格式: use 数据库名;
      • 举例: use db1;
    5. 查询数据库详情(主要看下字符集)

      • 格式: show create database 数据库名;
      • 举例: show create database db1;

数据库相关练习:

  1. 分别创建mydb1和mydb2 第一个字符集utf8 第二个gbk

    create database mydb1 character set utf8;

    create database mydb2 character set gbk;

  2. 查询所有数据库检查是否创建成功

    show databases;

  3. 分别查询两个数据库的字符集是否成功

    show create database mydb1;

    show create database mydb2;

  4. 先使用mydb1 再使用mydb2

    use mydb1;

    use mydb2;

  5. 删除两个数据库

    drop database mydb1;

    drop database mydb2;

表相关SQL

  • 执行表相关的SQL 必须先使用了某个数据库才可以

    create database db5;

    use db5;

  1. 创建表

    • 格式: create table 表名(字段1名 类型,字段2名 类型);
    • 指定字符集创建格式: create table 表名(字段1名 类型,字段2名 类型) charset=utf8/gbk;
    • 举例:
      • create table person(name varchar(10),age int);
      • create table hero(name varchar(10),gender varchar(5),money int)charset=gbk;
  2. 查询所有表

    • 格式: show tables;
  3. 查询表详情

    • 格式: show create table 表名;
    • show create table hero;
  4. 查询表字段

    • 格式: desc 表名
    • desc hero;
  5. 删除表

    • 格式: drop table 表名;
    • drop table hero;
  6. 修改表名

    • 格式: rename table 原名 to 新名;
    • rename table person to per;
  7. 添加表字段

    • 最后面添加格式: alter table 表名 add 字段名 类型;
    • alter table per add salary int;
    • 最前面添加格式: alter table 表名 add 字段名 类型 first;
    • alter table per add id int first;
    • 在某个字段的后面添加格式:alter table 表名 add 字段名 类型 after 字段名;
    • alter table per add gender varchar(5) after name;
  8. 删除表字段

    • 格式: alter table 表名 drop 字段名;

      alter table per drop gender;

  9. 修改表字段

    • 格式: alter table 表名 change 原名 新名 新类型;

      alter table per change salary sal int;

表相关SQL回顾

  1. 创建 create table t1(name varchar(10),age int)charset=utf8;
  2. 查询所有 show tables;
  3. 查询详情 show create table t1;
  4. 查询表字段 desc t1;
  5. 删除表 drop table t1;
  6. 修改表名 rename table t1 to t2;
  7. 添加表字段 alter table add age int first/ after xxx;
  8. 删除表字段 alter table drop 字段名;
  9. 修改表字段 alter table change 原名 新名 新类型;

表相关SQL 练习题:

  • 创建数据库mydb1 字符集utf8 并使用该数据库

    create database mydb1 character set utf8;

    use mydb1;

  • 在mydb1中创建员工表emp 字段有name 表字符集也是utf8

    create table emp(name varchar(10))charset=utf8;

  • 添加表字段age在最后

    alter table emp add age int ;

  • 添加id字段在最前面

    alter table emp add id int first;

  • 添加性别gender在name后面

    alter table emp add gender varchar(10) after name;

  • 修改gender为工资sal

    alter table emp change gender sal int;

  • 删除age字段

    alter table emp drop age;

  • 修改表名为t_emp

    rename table emp to t_emp;

  • 删除t_emp表

    drop table t_emp;

  • 删除数据库

    drop database mydb1;

DML数据操纵语言

  • DML ( Data Manipulation Language )

  • 负责对数据库中更改数据操作的指令,包括SELECT、INSERT、UPDATE、DELETE指令,简称: "CRUD"操作(增删改查)

  • 经常将DQL(SELECT)作为DML的一部分

  • 注意: DML语句支持事务,在非自动提交模式时候,可以利用rollback回滚操作, 常见面试考点!

  • 操作数据必须先使用了某个数据库 并且准备好了数据对应的表格
    create database mydb2 character set utf8;
    use mydb2;
    create table person(name varchar(10),age int)charset=utf8;

  1. 插入数据

    • 全表插入格式: insert into 表名 values(值1,值2);

      • 值的数量和顺序必须和表字段数量和顺序一致

      insert into person values(‘Tom’,18);

    • 指定字段插入格式: insert into 表名(字段1名,字段2名) values(值1,值2);

      • 值的数量和顺序必须和指定的字段一致

        insert into person (name) values(‘Jerry’);

    • 批量插入格式: insert into 表名 values(值1,值2),(值1,值2);

      insert into person values(‘Lucy’,20),(‘Lily’,21);

      insert into person(name) values(‘AAA’),(‘BBB’);

    • 插入中文问题

      insert into person values(‘刘德华’,20);

      • 如果出现以下内容: 执行 set names gbk;
        在这里插入图片描述
        在这里插入图片描述
  2. 查询数据

    • 格式: select 字段信息 from 表名 where 条件;

      select * from person; *代表查询所有字段 没有条件代表查询的是所有数据

      select name from person; 查询person表中所有数据的name

      select name,age from person where age>20; 查询年龄大于20岁的姓名和年龄

  3. 修改数据

    • 格式: update 表名 set 字段1名=值,字段2名=值 where 条件

      update person set age=80 where name=‘Lucy’;

      update person set name=‘汤姆’ where age=18;

      update person set age=10 where age is null; null不能用= 要用 is

  4. 删除数据

    • 格式: delete from 表名 where 条件;

      delete from person where name=‘AAA’;

      delete from person where age<20;

      delete from person; 删除全部

DML数据操纵语言

  • DML ( Data Query Language )
  • 用于查询表格内数据的指令,包括 SELECT命令
  • 一般作为DML的一部分
  • DQL是工作中最常用的语句,面试必考!

TCL和DCL

  • 事务控制语言TCL
    • TCL ( Transaction Control Language )
    • 负责实现数据库中事务支持的语言, 包括COMMIT、
      ROLLBACK、SAVEPOINT 等指令
  • 数据库控制语言DCL
    • DCL ( Data Control Language )
    • 用于管理数据库授权,角色控制等,包括GRANT(授权),REVOKE(取消授权)等

数据类型

  1. 整数类型: int(m) m代表显示长度 需要结合zerofill使用 , bigint(m) 大整型 等效java中的long

    create table t1(age int(10) zerofill);

    insert into t1 values(186);

    select * from t1;

  2. 浮点数: double(m,d) m代表总长度 d代表小数长度 28.234 m=5 d=3 , 超高精度浮点数decimal(m,d) 只有涉及到超高精度运算时使用

  3. 字符串:

    • char(m): 固定长度字符串 m=10 存"abc" 占10 , 执行效率略高于可变长度 最大长度255
    • varchar(m): 可变长度 m=10 存"abc" 占3 , 好处:节省空间 最大长度65535但是建议保存字符长度为255以下的内容
    • text(m): 可变长度, 最大长度65535, 建议保存长度大于255的字符串
  4. 日期

    • date: 只能保存年月日

    • time:只能保存时分秒

    • datetime: 年月日时分秒 默认值为null 最大9999-12-31

    • timestamp时间戳: 年月日时分秒 默认值为当前系统时间 , 最大2038-1-19

      create table t_date (t1 date, t2 time, t3 datetime, t4 timestamp);

      insert into t_date values(‘2020-7-14’,null,null,null);

      insert into t_date values(null,‘17:44:20’,‘2010-10-10 10:10:10’,null);

常见错误:

  1. SQL语句中有错,没有提示具体错误 解决方案: 检查自己拼写的SQL在这里插入图片描述

  2. 出现箭头是因为没有加;

  3. 数据库已经存在 解决方案:换个名字在这里插入图片描述

  4. MySQL服务未开启 在这里插入图片描述
    在这里插入图片描述

    解决方案: window键+r 输入 services.msc 弹出窗口中找MySQL右键启动即可

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值