美文网首页
数据库了解及基本增删改操作

数据库了解及基本增删改操作

作者: 七点的太阳丶夕阳 | 来源:发表于2017-11-02 17:52 被阅读0次

一、什么是数据库:(数据库软件)

1).什么是"数据库":

    从字面上理解就是一个"存储数据的仓库",它本身是一个软件,它底层也是基于"文件系统",将我们的数据存储到硬盘上。使用数据库软件存储数据的优势:尤其在存储大量数据时,数据库软件内部采用"索引页"的形式,可以将我们的数据分成很多的"数据页"存储,并且在前面创建"索引页",目的后期可以让我们很快的检索到我们的数据。所以数据库软件在管理大量数据时,效率非常高。

2).什么是数据库管理系统:

    "数据库管理系统--(DataBase Management System,DBMS)"宏观上讲,任何基于"数据库软件"的"管理系统"都可以称为数据库管理系统。也就是我们的系统的一个重要目的--管理数据。

二、常见的数据库软件

    1).MySQL数据库:中型数据库软件,最初是免费、开源,目前被Oracle公司收购了,从6.X版本开始收费。

    2).SQLServer数据库:微软公司的,收费的。中型数据库软件。包含了很丰富的管理工具。、

    3).Oracle数据库:大型数据库软件,收费的。Oracle公司的产品。

    4).DB2:IBM公司的数据库产品,收费的。常应用在银行系统中.

    5).SQLite: 嵌入式的小型数据库,应用在手机端

三、数据库软件的内部结构

数据库软件:

|--逻辑数据库(通常是与"项目"对应的)

    |--表(通常是与项目中的"类"对应)

        |--列

        |--列

        ....

    |--表

    ...

|--逻辑数据库

.....

四、数据库软件和java的对应关系

Java                     数据软件

----------------------------------------------

项目                          逻辑数据库

类                               表

类中属性                     表中列(字段)

属性的数据类型         字段的数据类型

对象                             一行记录

五、Mysql的安装与登陆

1.安装:改天再发

2.验证安装:

    我的电脑-->右键-->管理-->左侧"服务和应用程序"-->展开-->选择"服务"-->在右侧列表中找到"MySQL",要确定是在"正在运行"的状态。

3使用mysql的命令行管理工具登陆:

    1.启动命令行

    2.登陆MySql:

        1.登陆本机的Mysql:C:\>mysql -uroot -p登录密码(回车)

mysql>(看到这个字样就说明登录成功)

        2.登录远程的MYSQL:C:\>mysql --host=MYSQL所在的服务器的IP地址  --user=root  --password=登录数据库的密码

六:SQL语言

1.什么是SQL:

    结构化查询语言(Structured Query Language)简称SQL,它是"数据库软件"的标准语言,由标准化组织来统一定义,所有的数据库软件都要遵守这个规则。使用SQL语言,可以对数据库软件进行任何的数据操作, 包括创建逻辑数据库,表,列,添加、修改、删除、查询记录等。

    普通话:标准的SQL,任何数据库软件都必须支持的。

    方言:每种数据库根据自己的特点又提供了一些新的语法,和操作规则,但只在本数据库软件中有效。

2.SQL语言宏观上的四大类

1.DDL(Data Definition Language):数据定义语言,create(创建)、alter(修改,只能对表,列操作),drop(删除)

2.DCL(Data Control Language):数据控制语言,用来定义操作用户以及为其分配权限。

3.DML(Data Manipulation Language):【重点掌握】:数据操作语言,用来操作"数据"的,可以添加(insert)、修改(update)、删除(delete)数据

4.DQL(Data Query Language):【重中之重】:数据查询语言,用来查询"数据"的,使用select ... from ... where .... group by ... order by ....;

七.数据库操作相关的语句: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();

八.表操作相关的SQL语句:

1).创建表:

    create table 表名(

    列名1  数据类型(长度) [约束],

    列名2  数据类型(长度) [约束],

    .....       ,

列名n  数据类型(长度) [约束] (注意:最后一列后面没有逗号)

)

例如:创建学员信息表:

    create table student(

    name varchar(100),

    age  int,

    sex  char(1)

    );(回车)

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

show tables;

3).查看表结构:

desc 表名;

4).删除表

drop table 表名;

5).修改表结构:

1).alter table 表名 add 列名 类型(长度) [约束];

作用:修改表添加列.

例如:

#1,为分类表添加一个新的字段为 分类描述 varchar(20)

ALTER TABLE category ADD `desc` VARCHAR(20);

2).alter table 表名 modify 列名 类型(长度) 约束;

作用:修改表修改列的类型长度及约束.

例如:

#2, 为分类表的描述字段进行修改,类型varchar(50) 添加约束 not null

ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;

3).alter table 表名 change 旧列名 新列名 类型(长度) 约束;

作用:修改表修改列名.

例如:

#3, 为分类表的分类名称字段进行更换 更换为 description varchar(30)

ALTER TABLE category CHANGE `desc` description VARCHAR(30);

4).alter table 表名 drop 列名;

作用:修改表删除列.

例如:

#4, 删除分类表中description这列

ALTER TABLE category DROP description;

5).rename table 表名 to 新表名;

作用:修改表名

例如:

#5, 为分类表category 改名成 category2

RENAME TABLE category TO category2;

6).alter table 表名 character set 字符集(了解);

作用:修改表的字符集

例如:

#6, 为分类表 category 的编码表进行修改,修改成 gbk

ALTER TABLE category CHARACTER SET gbk;

6).关于MySQL中的数据类型

java的数据类型 MySQL的数据类型

-------------------------------------------------------------------------------------------------------------------------------

整数:

int         int

小数:

float         float(m,n)

double         double(m,n)

                decimal(m,n)

                m:表示所有数字位(包括小数部分)的最宽的位数。

                n:小数部分的位数

例如:double(10,2):表示数字整体最宽10位(包括小数),小数部分2位。

字符:

char          char(1):在MySQL中char表示"字符串",char(1)才表示一个字符,不论中文还是英文。

字符串:

String          char/varchar

大字符串:

String          text(longtext)

二进制字符串:

byte[]         binary

二进制数据(视频、音频、图片):

byte[]          BLOB

日期类型:

String          date(日期) YYYY-MM-DD 1000-01-01~9999-12-3

java.util.Date datetime(日期和时间) YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00~ 9999-12-31 23:59:59

=======================================================================================================================

注意:

char和varchar在MySQL中都表示"字符串",在MySQL中没有"字符类型"。

    1).char表示"定长字符串":例如:设置列的类型和长度:char(5),假如存储"abc"-->硬盘上-->"abc  "

存储"a" -->硬盘上-->"a    "

存储"abcdef"-->硬盘上-->"abcde"

    2).varchar表示"不定长字符串":例如:设置列的类型和长度:varchar(5),存储"abc"-->硬盘上-->"abc"

存储"a"  -->硬盘上-->"a"

存储"abcdef" -->硬盘上-->"abcde"

怎样选择?: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位。

=========================================================================================================================

八.记录操作相关的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条件,不会报错,会将这个字段的所有记录全部修改了)

例如:修改lisi的性别为:W

update student set sex = 'w' where name = 'lisi';

修改lisi的性别为:w,年龄为:25,姓名为:lisi2

update student set sex = 'w',age = 25,name = lisi2 where name = lisi;

3).删除数据:

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

例如:删除lisi2的记录

delete student where name = 'lisi2';

删不掉!!!!!!!!!!!!!!zg还是NB啊

九.约束:

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

    2).常用的约束【语句--了解即可。重点掌握--各种约束的意义】:

1).主键约束:

1).什么是"主键":我们非常需要使用一种比较简单的方式,来"区分出表中的每一条记录",可以作为查询、删除、修改的条件来使用。所以,我们可以单独定义一个字段,这个字段的值有个特点:不重复,这样的话,这个字段的每个值都可以唯一标识一条记录

2).什么是"主键约束":定义一个"约束",告诉数据库软件,这列的值不能重复。当我们以后再添加数据时,数据库软件就会为我们监控这列的值, 如果有非法的值,会立即抛出异常。

3).创建主键约束:

方式一:

create table student(

id int primary key,//主键约束

name varchar(100)

4).主键约束的说明:

1).一个表中只能设定一个"主键约束";

2)."一个主键约束"可以由1列组成,也可以由多列组成(复合主键、联合主键)。通常使用1列。

联合主键示例:

name(主键) age(主键) sex

zhangsan 20 男

zhangsan 21 男 //OK的

lisi 20 男 //OK的

zhangsan 20 女 //错误

3).如果一个字段被设定为"主键",意味着:这列的值:唯一、非空.

4).建议:主键字段,要使用:没有任何业务意义的数据。因为如果有业务意义,就可能发生更改,如果多表时,更改时会非常困难。

所以:主键字段建议:

    1).使用单字段;

    2).无业务意义;

    5).删除主键约束:

alter table 表名 drop primary key;

注意:这个删除是只删除"约束"本身,不删除之前的主键列,也不更改数据,只意味着:将约束删除,没有约束了。

2).自动增长【方言--只有MYSQL才支持】:

    1).之前使用了一个id列作为主键,并且设置了"主键约束",每次添加时需要添加一个不重复的id值,如果长期我们自己来处理这个值,会很不方便。

MySQL为我们提供了一种方式:自动增长列,设定后,由数据库软件根据一个基数,来对这列的值进行自动增长运算,不需要我们来处理了。

    2).设置自动增长:

方式一:

create table student(

id intprimary key auto_increment,//设置主键约束,同时设定自动增长

name varchar(100)

)

添加时:

insert into student(null,'zhangsan');//第一个字段为null,会自动应用:自动增长

    3).自动增长约束说明:

        1).必须对数值类型设置自动增长;

        2).一个表中只能有一个自动增长列;

        3).一般都是用在"主键"上。

4).删除自动增长约束:

alter table 表名 modify 字段名 数据类型(长度) [这里只要不出现自动增长约束即可,如果原来有这个约束,就表示删除此约束]

示例:

alter table student modify id int primary key;//新约束会覆盖原来的所有约束。

3).非空约束:

    1).非空约束:可以约束某列的值,不接收:null。

    2).设置非空约束:

方式一:

create table student(

id int primary key auto_increment,

name varchar(100) not null,//定义非空约束

age int

)

添加时:

insert into student values(null,null,20);//第一个null可以(自动增长),第二个null不可以(此字段被设置为非空约束)

insert into student values(null,'null',20);//OK的

insert into student values(null,'',20);//OK的

insert into student values(null,' ',20);//OK的

    3).非空约束说明:

1).一个表中可以有多个字段设定为"非空约束";

    4).删除非空约束:

alter table 表名 modify 字段名 数据类型(长度) [这里只要不出现非空约束即可,如果原来有这个约束,就表示删除此约束]

示例:

alter table student modify name varchar(100);//新约束会覆盖原来的所有约束。

4).唯一约束:

    1).唯一约束:可以约束某列值的必须唯一。但可以有NULL。

    2).设置唯一约束:

方式一:

create table student(

id int primary key auto_increment,

name varchar(100) not null,

cardid char(18)  unique //设置"唯一约束"

)

添加时:

insert into student values(null,'zhangsan','220105200001010207');//OK的

insert into student values(null,'zhangsan',null);//OK的

insert into student values(null,'lisi','220105200001010207');//错误

    3).唯一约束说明:

        1).一个表中可以有多个字段设置为"唯一约束";

        2).被"唯一"约束的字段,可以添加:null(状态,不是值)

        4).删除唯一约束:

ALTER TABLE 表名 DROPINDEX列名;

============================================================================================================================

相关文章

  • 数据库了解及基本增删改操作

    一、什么是数据库:(数据库软件) 1).什么是"数据库": 从字面上理解就是一个"存储数据的仓库",它本身是一个软...

  • mongoDB数据库的简单CRUD操作

    mongodb数据库的操作 基本的增删改查 增 增加一条文档:db.sf.insert({ :" "}) 增加多条...

  • SQL查询结构总结

    SQL 增删改查 对数据库有修改的操作是:增删改 增 insert into 表名 values(); 删 del...

  • 安卓开发

    今天学习了数据库的一些基本操作:增删改查。还运用了litepal来操作数据库,litepal的设置以及运行环境有了了解

  • 增删改查

    增删改查,是实现数据操作的基本功能。 在数据库的操作中,习惯把它分为两大类,数据查询(查)和数据更新(增、删、改)...

  • pymongo简单了解

    数据库的主要操作就是增,删,改,查简单了解mongdb的基本用法,与python的交互

  • 利用JTS构建R树索引

    空间索引(Spatial Indexing) 回忆下数据库最基本的操作:增删改查以及稍复杂些的比如连接操作,基本都...

  • 2019-07-08

    数据库 MySQL数据库的基本操作(增删改查)高级操作视图备份和还原事务触发器函数存储过程 什么是数据库?数据库(...

  • 2018-01-11 JDBC连接数据库代码

    1.JDBC操作mysql数据库-增删改查 2.JDBC操作Oracle数据库-增删改查

  • 数据库学习笔记-mysql数据库的基本操作以及一些高级操作

    〇、数据库学习阶段: 基础阶段:mysql数据库的基本操作(增删改查),以及一些高级操作(视图,触发器,函数,存储...

网友评论

      本文标题:数据库了解及基本增删改操作

      本文链接:https://www.haomeiwen.com/subject/vwoopxtx.html