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

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

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 196,099评论 5 462
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 82,473评论 2 373
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 143,229评论 0 325
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,570评论 1 267
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 61,427评论 5 358
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,335评论 1 273
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,737评论 3 386
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,392评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,693评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,730评论 2 312
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,512评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,349评论 3 314
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,750评论 3 299
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,017评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,290评论 1 251
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,706评论 2 342
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,904评论 2 335

推荐阅读更多精彩内容

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