• 传智播客JavaWeb day09-mysql入门、数据库操作、数据库表操作、数据行操作


    不知不觉已到了第九天了,今天主要讲了关系数据库的基本概述、安装、数据库、表和数据行的操作

    1. 基本概述

      1.1 数据库就是用来存储数据的。早期是存在文件里面的操作起来效率低而且不是很安全。

      1.2 关系型数据库。这个可以简单理解成以表的形式存储的数据库,表与表存在着某些关系,而数据库能帮我们保存这种关系。

      1.3 ANSI和ISO制定了一套SQL标准,所有数据库厂商都得遵循这个标准,但是他们也各自进行了扩展(即他们的SQL方言如:oracle的pl/sql,sql server的T-sql) 

    2.安装

     安装很简单就不赘述了

    3.操作数据库 ps:其实就是讲了数据库的CRUD(格式:要做的操作+操作对象类型+对象名字)

      3.1 创建数据库

        3.1.1 创建一个数据库 mydb4

                 create database mydb4;

        3.1.2 创建一个字符集为gbk的数据库mydb5

             create database mydb5 character set gbk;

      3.2 查看数据库 

        3.2.1 查看数据库列表  show databases;

        3.2.2 查看被选中的数据库(正在操作的数据库) select database();

        3.2.3 查看指定数据库的创建语句 show create database mydb5;

      3.3 修改数据库

        将mydb5的字符集修改成utf8  

                alter database mydb5 character set utf8;

      3.4 删除数据库

        drop database mydb5;

      3.5 补充

        3.5.1 选中数据库 use mydb4;

        3.5.2 数据库中自带的数据库不要删,因为数据库运行的时候依赖这几个数据库。比如:当你新建一数据库的时候,他会将自带的数据库当做模板

    4.操作表

      4.1创建表

        练习:在mydb2中创建表employee(id,name,gender,bithday,entry_date,job,salary,resume)

        4.1.1 约束  主键约束:primary key;唯一性:unique;非空:not null

      4.2 修改表

        Alter table 表名 Add/modify/drop/change

        4.2.1 增加一列 alter table 表名 add 列名 类型  alter table employee add image blob;

        4.2.2 修改某一列的类型 alter table 表名 modify 列名 类型  alter table dept modify dept_name varchar(44)

        4.2.3 修改表名  rename table 表名 to 新表名

        4.2.4 修改列名称 alter talbe 表名 change 列名 新列名 类型 alter table dept1 change dept_name name varchar(22);

        4.2.5 修改表的字符集 alter table 表名 character set uft8   alter table dept1 character set gbk;

      4.3 查看表

        4.3.1 查看表结构 Desc+tableName

        4.3.2 查看建表语句  show create table +tableName

      4.4 删除表

            drop table 表名 删除表中的数据,标识不会重新计数

        truncate table employee 摧毁表在重建表,标识也会重新开始计数

      4.5 附属补充

        4.5.1 varchar和char:varchar类型长度可变,char类型长度不可变,但是char类型读取性能高,varchar每次都要判断长度

        4.5.2 大数据类型:blob(大二进制,最大支持4G,读取时用byte数组)、Text(文本类型,读取时用char数组)

        4.5.3 数值类型vsjava类型:  tinyint = byte;smallint  = short; int = int ;bigint = long;

        4.5.4 bit类型(默认是一位可用来保存bool值)

        4.5.5日期类型。date(日期)、time(时间)、datetime(日期时间)、timestamp(时间戳,当行数据发生改变时这个值会自动变可用来记录最后更改时间)

        4.5.6 mysql中sql语句中有字符跟日期是要用单引号(数据库中不认双引号,只认单引号)

        4.5.7 mysql中乱码的问题 数据库服务器默认是用iso8859-1来保存数据的,当有中文从客户端传过来的时候,服务器在iso8859-1这张码表里没有找到对应的编码,所以保存时会出现乱码.  ps:可以通过设置mysql安装目录下的my.ini来更改服务器端默认码表(每个国家都有自己的码表)

        4.5.8 插入数据时auto_increment字段给null

        4.5.9 如果要插入所有字段列的声明可以省写 insert into dept1 values(……)

    5.操作数据行

      5.1 模糊查询(% _) select * from dept where dept_name like '%a%' 或者 like 'a_'(a后面跟一个字符)

      5.2 聚合函数(就是数据库自带的一些函数)

        select count(name), math+chinese 总成绩 from exam where math+chinese(这里不可用总成绩来替代因为数据库语句的执行顺序问题) >180

        select  name,math+chinese 总成绩 from exam order by 总成绩(这里可以替代也是执行顺序的问题)

      5.3 只要null参与计算的结果都会为null  ps:利用ifnull(字段,0)排除计算结果为null

      5.4 group by 分组后一组只显示一条了(摞在一起了);没有用聚合的字段必须在group by之后

      5.5 where 和having的区别 where 是分组之前进行过滤,having是分组之后进行过滤;where后不能用聚合函数(执行顺序的问题),having可以

      5.6 sql的书写顺序 select from where group by having order by

      5.7 sql的执行顺序 from where select group by having order by

    6. 多表设计  ps:为什么叫关系型数据库,因为表与表之间存在着某种关系,而数据库能帮我们保持这种关系所以就叫关系型数据库(如:外键)

      6.1 外键

        某一个表中一列数据会参照另外一个表中的列(主键)

      6.2 表关系类型

        6.2.1 1对1 任意表中保存一方主键作为外键

        6.2.2 1对多  多方表中保存1方主键作为外键

        6.2.3 多对多  建立中间表保存两方主键

      6.3 多表查询  inner join,left join,right join,full join

      

  • 相关阅读:
    数字化航电平台 3D 可视化,图扑助力珠海航展国产民机航电平台品牌发布
    20211123
    多叉树操作
    ILjava/lang/String;)Ljava/util/List
    Fiddler使用总结
    java stream map对于 key重复的处理方式,上述代码表示,重复的话,取信值
    java中map里面的key按我们插入进去的顺序输出
    IntelliJ IDEA 中自动去除未使用的引入(Unused import statement)
    加redis锁
    LambdaQueryWrapper 查distinct数据
  • 原文地址:https://www.cnblogs.com/lihongchen/p/4408956.html
Copyright © 2020-2023  润新知