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

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

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列名;

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,359评论 2 46
  • 什么是SQLite?数据库存储数据的步骤 ●SQLite是一款轻型的嵌入式数据库,它占用资源非常的低,在嵌入式设备...
    飞行的猫阅读 2,538评论 1 7
  • 1.MySQL数据库 2.SQL语句 第一节课 ###1(MySQL数据库)数据库概念.avi 5...
    码了个农啵阅读 1,240评论 1 16
  • 一段不合适的爱情真的会使人变得更差。 曾经遭遇过背叛,却沉迷于他所谓的好而不能自拔,便在原谅与离开两头挣扎。这种日...
    EC_Yilia阅读 437评论 0 0
  • 用户需求是产品设计的大前提,对需求的本质解析与需求量的分析是决定产品、服务模式能否做成的关键,而对于需求的分析,往...
    一井阅读 984评论 0 9