day-17-数据库-MySQL

1.什么是数据库:

1).什么是“数据库”:从字面上理解就是一个“存储数据的仓库”,他本身是一个软件,它底层也是基于“文件系统”,将我们的数据存储到硬盘;使用数据库的优势在于,存储大量数据时,能够让我们很快的检索到我们想要的数据,效率非常高;

2).什么是数据库管理系统:数据库管理系统(DataBase Management System,DBMS) 宏观上讲,任何基于“数据库软件”的“管理系统”都称为数据库管理系统。也就是我们的系统的一个重要的目的–管理数据。

2.数据库软件的内部结构:

数据库软件:

    |--逻辑数据库--通常是与“项目”对应的
            |--表--通常是与项目中的“类”对应
                |--列
                |--列
3.数据库软件和Java的对应关系:
Java                          数据库软件

项目                            逻辑数据库
类                               表
类的属性                          表中列(字段)
属性的数据类型                   字段的数据类型
对象                            一行记录
登录MySQL:
1).登录本机的MySQL:
    C:\>mysql -uroot -p登录密码(回车)
            ....
            ....
            mysql>(看到这个字样就说明登录成功)
2).登录远程的MySQL:
    C:\>mysql --host=MYSQL所在的服务器的IP地址  --user=root  --password=登录数据库的密码
4.SQL语言

1.什么是SQL语言:结构化查询语言,它是“数据库软件”的标准语言,由标准化组织统一定义,所有的数据库软件都要遵守这个规则。

2.SQL语言宏观上分为四大类:

1).DDL【次重点】:数据定义语言,用来定义逻辑数据库、表、列的一些语句。使用关键词:create(创建)、alter(修改)、drop(删除)。
2).DCL【不涉及】:数据控制语言,用来定义操作用户以及为其分配权限。
3).DML【重点掌握】:数据操作语言,用来操作“数据”的,可以添加 insert、修改 update、删除 delete 数据。
4).DQL【重中之重】:数据查询语言,用来查询“数据”的,使用 select...form...where...group by...order by...
5.DDL 数据库操作相关语句

1.创建数据库:

1).create database 数据库名;
2).create database 数据库名 character set字符集名称;

2.查看数据库MySQL服务器中的所有的数据库:

show databases;

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

show create database 数据库名;

4.删除数据:

drop database 数据库名称;

5.切换数据库:

use 数据库名;

6.查看当前正在使用的数据库:

select database();
6.表操作相关的SQL语句

1.创建表:

create table 表名(
    列名1 数据类型(长度)  [约束],
    列名2 数据类型(长度)  [约束],
    ....
    列名n 数据类型(长度)  [约束]  (注意:最后一列后面没有逗号);

例如:创建学生信息表:
    create table student(
        name varchar(100),
        age int,
        sex char(1)
    );(回车)

2.查看数据库中的所有表:

show tables;

3.查看表结构:

desc 表名;

4.查看表内容:

select*from 表名;

5.删除表:

drop table 表名;

6.修改表结构:

1).修改表结构格式:
    alter table 表名 add 列名 类型(长度) [约束];
    作用:修改表添加列;
2).alter table 表名 modify 列名 类型(长度)约束;
    作用:修改列的类型长度及约束。
3).alter table 表名 change 旧列名 新列名 类型(长度) 约束;
    作用:修改列名。
4).alter table 表名 drop 列名;
    作用:删除列。
5).rename table 表名 to 新表名;
    作用:修改表名;
6).alter table 表名 character set 字符集(了解);
    作用:修改表的字符集;
    为分类表 category 的编码表进行修改,修改成 gbk
    ALTER TABLE category CHARACTER SET gbk;
关于MySQL中的数据类型
Java的数据类型                   MySQL的数据类型

    整数:
    int                            int
    小数:
    float                          float(m,n)
    double                         double(m,n)
                        m:表示所有数字位(包括小数部分)的最宽的位数。
                        n:小数部分的位数;
    字符:
    char                          char(1):在MySQL中char表示“字符串”,char(1)才表示一个字符,不论中文还是英文。

    字符串:
    String                        char/varchar

    大字符串:
    String                        text(longtext)

    二进制字符串:
    byte[]                         binary

    二进制数据(视频,音频,图片)
    byte[]                         BLOB

    日期类型:
    String                         date(日期)
    java.util.Date                 datetime(日期和时间)

注意:

1.char 和varchar在MySQL中都表示“字符串”,在MySQL中没有“字符类型”。

2.char 表示“定长字符串”,定义其长度,如果输入字符串长度不够用“空格”填充,如果长度多了,取定义的长度;

varchar表示“不定长字符串”,如果输入字符串长度不够,输入多少显示多少,没有“空格”填充,如果长度多了,取定义的长度;

3.怎么样选择:char类型的查询速度要快于varchar,尽量使用char类型;

1).如果这列的所有数据的平均长度相同或者基本相同,这时建议使用char类型:
        例如:年龄、性别、身份证号、手机号、银行卡号...

2).如果这列的所有数据的平均长度相差很大,建议使用:varchar
        例如:地址、简介....

注意:关于长度:

1.整数int类型的长度:

create table student(
            ..
            age int(4) zerofill, 
//表示最宽的可见的位数(不表示最长4位,也不表示是4个字节存储)通常与 zerofill共同使用。如果这个数据不足这个宽度,前面填充0;如果超出这个宽度就存储实际的数字。

2.字符串char 和 varchar类型的长度:

char(4):表示最多存储"四个字符",可以中文,可以是英文.不足4个字符时,存储时后面自动填充"空格"。

varchar(4):表示最多存储"四个字符"...                  不足4个字符时,存储实际的字符。

3.浮点类型的长度:

double(10,2):表示:总长度10位,小数部分是2位。
7.记录操作相关的SQL语句【DML语句-重点掌握】

1.添加数据:

insert into 表名 values(值1,值2,值3...,值n)
A).有两种格式:
    1).insert into 表名 values(值1,值2,值3,.....,值n);
    例如:
        insert into student values('zhangsan',20,'m');
    注意:
    1).值列表:数量、顺序必须跟表中字段的数量、顺序一致;不填的字段要使用“null”;
    2).对于数值类性的值,可以不用单引号或者双引号。

    2).insert into 表名(字段1,字段2,....,字段n) values(值1,值2,....,值n);
    例如:
        insert into student(sex,name) values('m','lisi');
    注意:
        1).字段列表:可以不是表中的所有字段,而且可以不按照定义顺序;
        2).值列表:数量、顺序必须跟"字段列表"的数量、顺序一致;
        3).没有出现的字段,在本次添加中,自动填充:null。

B).怎么选择:
    1).第一种:适合对表中的所有字段,或者绝大部分字段都添加值时使用,只有少部分字段不添加,设置为null。
    2).第二种:适合对表中的少部分字段填充时使用。

    总体规则:只要是对"部分"字段添加,建议使用第二种。

2.修改数据:

update 表名 set 列名=新值,列名=新值,...列名=新值 where 条件;(注意:如果没有where条件,不会报错,回见这个字段的所有记录全部修改了)

3.删除数据:

delete from 表名 where 条件;(注意:如果没有where条件,不会报错,会删除所有数据)会删除所有符合条件的记录;
8.约束

1.什么是“约束”:它是“数据库软件”中的一个“实体”,跟“表”一样,单独管理。“约束”是有我们建立的,是告诉数据库软件,某些列必须按照某些规则去添加数据。数据库软件每次设计到修改这些数据时,都会参考这个“约束”来检查这些数据,如果数据不符合要求,数据库软件会自动拦截这些数据,组织其进入数据库。

2.常用的约束:

1.主键约束(primary key):
    1).什么是"主键":我们非常需要使用一种比较简单的方式,来"区分出表中的每一条记录",可以作为查询、删除、修改的条件来使用。
    所以,我们可以单独定义一个字段,这个字段的值有个特点:不重复,这样的话,这个字段的每个值都可以唯一标识一条记录;
    2).什么是"主键约束":定义一个"约束",告诉数据库软件,这列的值不能重复。当我们以后再添加数据时,数据库软件就会为我们监控这列的值,如果有非法的值,会立即抛出异常。
    3).创建主键约束:
        方式一:
                create table student(
                    id int primary key,//主键约束
                    name varchar(100)
                )
            其它方式大家参考讲义,自己练习。
    4).主键约束的说明:
        a).一个表中只能设定一个"主键约束";
        b)."一个主键约束"可以由1列组成,也可以由多列组成(复合主键、联合主键)。通常使用1列。
        c).如果一个字段被设定为"主键",意味着:这列的值:唯一、非空.
        d).建议:主键字段,要使用:没有任何业务意义的数据。因为如果有业务意义,就可能发生更改,如果多表时,更改时会非常困难。
                所以:主键字段建议:
                  1).使用单字段;
                  2).无业务意义;
        e).删除主键约束:
            alter table 表名 drop primary key;

2.自动增长(auto_increment)【方言--只有MySQL才支持】:
    1).设置自动增长:
        方式一:
            create table student(
                id int primary key auto_increment,//设置主键约束,同时设定自动增长
                name varchar(100)
            )
    2).自动增长约束说明:
        1).必须对数值类型设置自动增长;
        2).一个表中只能有一个自动增长列;
        3).一般都是用在"主键"上。
    3).删除自动增长约束:
        alter table 表名 modify 字段名 数据类型(长度) [这里只要不出现自动增长约束即可,如果原来有这个约束,就表示删除此约束]
        示例:
            alter table student modify id int primary key;//新约束会覆盖原来的所有约束。

3.非空约束(not null):
    1).非空约束:可以约束魔劣的值,不接收: null。
    2).非空约束说明:
        一个表中可以有多个字段设定为“非空约束”;
    3).删除非空约束:
        alter table 表名 modify 字段名 数据类型(长度) [这里只要不出现非空约束即可,如果原来有这个约束,就表示删除此约束]
        示例:
            alter table student modify name varchar(100);//新约束会覆盖原来的所有约束。
4.唯一约束(unique):
        a).唯一约束:可以约束某列值的必须唯一。但可以有null。
        b).设置唯一约束:
            方式一:
                create table student(
                    id int primary key, auto_increment,
                    name varchar(100) not null,
                    cardid char(18)  unique     //设置"唯一约束"
                )
        c).唯一约束说明:
            1).一个表中可以有多个字段设置为"唯一约束";
            2).被"唯一"约束的字段,可以添加:null(状态,不是值)
        d).删除唯一约束:
            ALTER TABLE 表名 DROP INDEX 列名;
学习目标总结:

1.能够理解数据库的概念

a,  说出数据库的概念
        存储数据的仓库。它是一个软件,底层基于"文件系统"。

b,  说出数据库的作用
        可以非常高效的管理大量数据。

c,  说出数据库与表的关系
        一个逻辑数据库中可以定义多个表。多个表不能重名;
        多个逻辑数据库中的表可以重名;

d,  说出常见的数据库
        MySQL
        Oracle
        SQLServer
        SQLLite
        DB2:

2,能够安装MySQL数据库

参考安装文档,细致的一步一步操作。

3,能够启动,关闭及登录MySQL

1.启动、关闭:
    我的电脑-->右键-->管理-->左侧"服务和应用程序"-->选择"服务"-->右侧找到"mysql",可以"启动"和"关闭"

2).登录MySQL
    1).登录本机:C:\>mysql -uroot -p登录密码(回车)
    2).登录网络:C:\>mysql --host = MySQL的服务器iP地址  --user = root --password = MySQL的登录密码

4,能够使用SQL语句操作数据库

a,  写出创建数据库的SQL语句
        create database 数据库名;
b,  写出删除数据库的SQL语句
        drop database 数据库名;
c,  写出查看所有数据库的SQL语句
        show databases;
d,  写出切换数据库的SQL语句
        use 数据库名;

5,能够使用SQL语句操作表结构

a,  写出创建表的SQL语句
        create table 表名(
            列名1  数据类型(长度) [约束],
            列名2  数据类型(长度) [约束],
            ....                ,
            列名n  数据类型(长度) [约束]
        );
b,  写出删除表的SQL语句
        drop table 表名;
c,  写出添加一列的SQL语句
        alter table 表名 add 新列名 数据类型(长度) [约束];
d,  写出删除一列的SQL语句
        alter table 表名 drop 列名;
e,  写出查看当前数据库下所有表的SQL语句
        show tables;
f,  写出查看表结构的SQL语句
        desc 表名;

6,能够使用SQL语句进行数据的添加修改和删除的操作

a,  写出添加数据的SQL语句
        1).insert into 表名 values(值1 ,值2 ,...,值n);
        2).insert into 表名(字段1,字段2,...,字段n) values(值1,值2,....,值n);

b,  写出修改数据的SQL语句
        update 表名 set 字段 = 值,字段 = 值,....,字段 = 值 where 条件;//符合条件的所有记录将全部被修改;
c,  写出删除数据的SQL语句
        delete from 表名 where 条件;//符合条件的所有记录将全部被删除

7,能够使用SQL语句添加约束

a,  能够给表加上主键约束
        create table student(
            id int primary key
        )
b,  能够给字段加上唯一约束
        create table student(
            id int primary key,
            cardId  char(18) unique
        )
c,  能够给字段加上非空约束
        create table student(
            id int primary key,
            cardId  char(18) unique,
            name    varchar(100) not null
        )
d,  能够给某一个键添加自动增长
        create table student(
            id int primary key auto_increment,
            cardId  char(18) unique
        )
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
mysql-connector-j 是 MySQL 官方提供的 Java 连接器,用于在 Java 程序中连接 MySQL 数据库。它的文件结构如下: ``` mysql-connector-java-x.x.xx.jar ├── META-INF │ ├── MANIFEST.MF │ └── maven │ └── mysql │ └── mysql-connector-java │ ├── pom.properties │ └── pom.xml ├── com │ └── mysql │ ├── jdbc │ │ ├── Blob.class │ │ ├── CallableStatement.class │ │ ├── Clob.class │ │ ├── Connection.class │ │ ├── DatabaseMetaData.class │ │ ├── Date.class │ │ ├── Driver.class │ │ ├── DriverManager.class │ │ ├── ParameterMetaData.class │ │ ├── PreparedStatement.class │ │ ├── ResultSet.class │ │ ├── ResultSetMetaData.class │ │ ├── RowId.class │ │ ├── Savepoint.class │ │ ├── SQLClientInfoException.class │ │ ├── SQLException.class │ │ ├── SQLData.class │ │ ├── SQLInput.class │ │ ├── SQLOutput.class │ │ ├── SQLPermission.class │ │ ├── SQLWarning.class │ │ ├── SQLXML.class │ │ ├── Statement.class │ │ ├── Struct.class │ │ ├── Time.class │ │ ├── Timestamp.class │ │ └── Types.class │ ├── jdbc2 │ │ ├── optional │ │ │ ├── Blob.class │ │ │ ├── Clob.class │ │ │ ├── Connection.class │ │ │ ├── DatabaseMetaData.class │ │ │ ├── Date.class │ │ │ ├── ParameterMetaData.class │ │ │ ├── PreparedStatement.class │ │ │ ├── ResultSet.class │ │ │ ├── ResultSetMetaData.class │ │ │ ├── Statement.class │ │ │ ├── Time.class │ │ │ ├── Timestamp.class │ │ │ └── Types.class │ │ ├── optional │ │ │ ├── Blob.class │ │ │ ├── Clob.class │ │ │ ├── Connection.class │ │ │ ├── DatabaseMetaData.class │ │ │ ├── Date.class │ │ │ ├── ParameterMetaData.class │ │ │ ├── PreparedStatement.class │ │ │ ├── ResultSet.class │ │ │ ├── ResultSetMetaData.class │ │ │ ├── Statement.class │ │ │ ├── Time.class │ │ │ ├── Timestamp.class │ │ │ └── Types.class │ │ └── optional │ │ ├── Blob.class │ │ ├── Clob.class │ │ ├── Connection.class │ │ ├── DatabaseMetaData.class │ │ ├── Date.class │ │ ├── ParameterMetaData.class │ │ ├── PreparedStatement.class │ │ ├── ResultSet.class │ │ ├── ResultSetMetaData.class │ │ ├── Statement.class │ │ ├── Time.class │ │ ├── Timestamp.class │ │ └── Types.class │ └── statements │ ├── CallableStatement.class │ ├── PreparedStatement.class │ ├── Statement.class │ └── StatementImpl.class └── java └── time ├── Clock.class ├── Duration.class ├── Instant.class ├── LocalDate.class ├── LocalDateTime.class ├── LocalTime.class ├── Month.class ├── MonthDay.class ├── OffsetDateTime.class ├── OffsetTime.class ├── Period.class ├── Year.class ├── YearMonth.class ├── ZonedDateTime.class └── ZoneId.class ``` 其中,最重要的文件是 `mysql-connector-java-x.x.xx.jar`,这是一个 Java 归档文件,包含了连接 MySQL 所需的所有类和资源。在该文件中,`META-INF` 目录下是元数据信息,`com.mysql.jdbc` 是连接 MySQL 所需的核心类,`java.time` 是 Java 8 中的时间 API,用于与 MySQL 中的日期和时间数据交互。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值