码迷,mamicode.com
首页 > 数据库 > 详细

数据库基础总结

时间:2017-07-30 23:32:27      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:mysql



数据库基础总结

基础学习达到的目标

    01.如何使用MySQL数据库

    02.如何设计数据库

数据库概述

01.什么是数据库

数据库就是用来存储和管理数据的仓库!

数据库存储数据的优先:

02.关系型数据库和非关系型数据库

 

03.常见的数据库

Oracle:甲骨文;

DB2IBM

SQL Server:微软;

Sybase:赛尔斯;

MySQL:甲骨文;

 

Sql分类

DDLData Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;

DMLData Manipulation Language):数据操作语言,用来定义数据库记录(数据);

DCLData Control Language):数据控制语言,用来定义访问权限和安全级别;

DQLData Query Language):数据查询语言,用来查询记录(数据)。

 

数据库操作

01.创建数据库

Create database db_name;

02.查看数据库

Show databases;

03.查看数据库创建语句

Show create database db_name;

04.删除数据库

Drop database db_name;

05.修改数据库信息

Alter database db_name [修改指令]:修改指令一般是数据库属性的修改(比如字符集)

Alter database db_name character set utf-8;

06.修改数据库名称

将当前数据库进行备份,删除之前的数据库,并创建新的数据库,恢复原来数据库的数据。

 

表操作

01.创建表

CREATE TABLE 表名(

  列名 列类型,

  列名 列类型,

  ......

);

02.查看数据表

Show tables;

Show tables like xxx_%;

Show create table tb_name;

Show create table tb_name\G

Desc tb_name;

03.删除数据库

Drop table if exists tb_name;

04.修改表

01)重命名

Rename table old_tb to new_tb;

02)修改列定义

增加一个新列:alter table tb_name add 列定义(name int);

删除一个列:alter table tb_name drop 列名;

修改一个列定义:alter table tb_name modify 列名 varchar(40);

重命名一个列:alter table tb_name change 旧列名 新列定义;

修改表选项:alter table tb_name character set utf-8;

 

crud操作

01.插入数据

INSERT INTO 表名(列名1,列名2, ) VALUES(1, 2)

 

语法:

INSERT INTO 表名 VALUES(1,2,)

因为没有指定要插入的列,表示按创建表时列的顺序插入所有列的值:

02.获取数据

Select * from 表名 [查询条件];

Select 字段名列表 from 表名 [查询条件];

03.删除数据

语法:

DELETE FROM 表名 [WHERE 条件]

04.修改数据

语法:

UPDATE 表名 SET 列名1=1,  列名n=n [WHERE 条件]

索引操作

01.创建索引

Create unique index Stusno on student(Sno);

Create unique index SCno on Sc(sno ASC,Cno DESC);

 

Unique:表示每个索引值只对应唯一的数据记录

Cluster:表示简历聚簇索引。

02.修改索引

Alter index <old_Index_name> rename to <new_Index_name>;

03.删除索引

Drop index <index_name>;

 

mysql的数值类型


技术分享

整数型

技术分享 

例:tinyint:一个字节(8位)

有符号(-128——127)  无符号(0——255

其他整型类似

 

01.符号问题

可以在定义时,使用unsigned标识没有符号,如果不写,则有符号。

02.定义当前的显示宽度

Alter table tb_name add c tinyint(2):

2表示显示的最小宽度,当宽度不够,需要使用前导0填充,在数据库中叫做zerofill

03.MySQL中没有bool

bool,其实就是tinyint(1)的别名

 

小数型

技术分享 

浮点数:

小数位可以移动,分为floatdouble

对于123.456,存储的时候存的是1234563(因为0.123456*10^3

 

对于float,默认情况下,有效数位是6-7位,double的默认有效数位是16位左右,比如:同样存储123456789.10283637float表示出来可能就是123456700double表示出来可能就是123456789.102836

 

同样浮点数也支持控制数值范围,Type(M,D):M表示所有数值位数(不包括小数点和符号位),D:表示有效的小数位数。

定点数

不管怎样浮点数肯定有精度丢失的 问题,如果必须要求精度,可以采用定点数DECIMAL,在存储的时候采用小数整数分开,每9位为一组采用4字节存储(同样也做了优化,当不足9位的时候,适当采用合适的字节存储)

 

日期时间型

技术分享 

注意:

01datetime(年月日时分秒)timestamp(时间戳),这两个表现形式一样,但是存储格式不同(timestamp储存的时候是整型),因为储存的格式不同,所以表示的范围也就不相同。

 

02)支持任意分隔符的日期,但是容易出现歧义。

 

03)支持2位的年份

70-691970-2069

70-991970-1999

0-692000-2069

 

04MySQL支持0值,比如00000000000000

2004-04-00:表示4月份整个月

 

05time可以表示一天中的时间,也可以表示时间间隔(两个时间点相差了多少小时)。

 

字符串类型

技术分享 

这里的最大长度是物理最大长度

01.charvarchar

技术分享技术分享 

02.字段的长度(655356553365532

技术分享 

可以看出不一样的编码,字段长度是不一样的(Latin一个字符等于一个字节)

注意:字段的最大长度,除了类型本身限制之外,记录的总长度也有限制

技术分享 

这个图可以看出,65532可以创建成功,65533创建不成功;但是当65533加上not null之后,可以创建成功,如下图:

技术分享 

 

原因是:

技术分享 

 

技术分享 

这个sql也创建不成功,因为a,b都有可能为nullvarchar不够存储,所以会报错。

 

03.text

技术分享 

 

类型选择原则

技术分享 

 

MySQL的列属性

技术分享 

 

01.是否为空

规定一个字段是否为空:null|not null

(空值和空字符串不一样,null的话一定有一个表示空间,在整个记录上某个地方记录null,所有会有一定的储存空间)

 

02.默认值属性

Default value来声明

技术分享 

 

03.主键|唯一索引

关系模型的实体完整性在create table中用primary key定义。对单属性构成的码有两种说明方法,一种是定义为表级约束条件,另一种是列级约束条件。对于多个属性构成的码只有一种说明方法,即定义为表级约束条件。

 

实体完整性检查和违约处理

01)检查主码值是否唯一,如果不唯一则拒绝插入或者修改数据。

02)检查主码的各个属性是否为空,只要有一个为空就拒绝插入或者修改。

 

常见的设计:

每个表都应该存在一个可以唯一标识的主键字段,最好与实体没有关系,不是实体属性字段。

技术分享 

04.自动增长

技术分享 

补:实体

01.一对一

技术分享 

 

02.一对多

技术分享 

03.多对多

利用一个中间表,表示实体之间的对应关系,即两个一对多

技术分享技术分享 

05.外键

概念:

如果一个实体(student)的某个字段(studentclass_id),指向(引用)另外一个实体(class)的主键(class:class_id),就称student实体的class_id是外键。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


本文出自 “秦斌的博客” 博客,谢绝转载!

数据库基础总结

标签:mysql

原文地址:http://qinbin.blog.51cto.com/11773640/1952168

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!