您的位置:首页 > 数据库 > MySQL

mysql 基础 ddl dml 总结

2017-02-15 22:08 309 查看
首先需要说明:数据库到底是怎么存储数据库的!  (现在的数据库基本都是关系数据库)

数据库是以二维表的形式存储数据的(有点像Excel 的样子)

表中每一列必须有一个列名,数据类型和约束,每一行数据都表示一个数据实体。每个数据库可以有多张表。

可以提供多个给多个用户使用,多个数据库都存储在一个数据库服务器(程序)中

SQL:(结构化查询语句(Structured Query Language),用于操作数据库以及数据库中的表)
主要分为:

1.DDL(Data Definition Language):数据定义语言 主要有:(CREATE    ALTER    DROP



2.DML(Data Manipulation Language ):数据操纵语言   主要有:(插入:INSERT2)
更新:UPDATE3)
删除:DELETE)

3.DQL(Data Query Language): 数据查询语言         
SELECT<字段名表>     FROM <表或视图名
>   WHERE<查询条件>

4.TCL(Transaction Control Language):      事务控制语言

文件后缀名的说明:

Mysql安装后在data文件夹中有4种文件frm,MYD,MYI,OPT,请问这四种文件的作用

 

*.frm是描述了表的结构,*.MYD保存了表的数据记录,*.MYI则是表的索引


数据类型:

1.整数类型

tinyint   :无符号(0-255) 
有符号(-128 
到127)   
1字节

smallint     :   
2字节

mediumint   :  
3字节

int   :   
4字节

bigint   : 8字节

2.浮点型

float : 4字节

double : 8字节

1.   定点数

decimal(数据类型,小数长度)

4.日期时间类型

Year : 00-99
之间的数: 00-69
的年表示2000-2069 70-99
表示1970-1999

需要区分字符的‘00’和0
‘0’表示2000年 0
表示的值为0000

 date:可以存储yyyy-mm-dd
或者 yyyymmdd
的字符串或存储yy-mm-dd和YYMMDD
的字符串值,还可以使用YY-MM-DD
和YYMMDD的数字格式

 ‘2017-2-14’或‘20170214’

‘17-2-14’或‘170214’

17-2-14    或 
170214

使用now()或current_date
表示当前系统时间

time             :可以存储‘D HH-MM-SS’, D
表示日,0-34之间的值,表示的小时数为 D*24 

eg:‘2 12:32:25’表示的‘60:32:25‘ 


可以使用HHMMSS的字符串或数字表示,‘144025’和144025
都表示14:40:25

 

datetime         :  
日期时间  eg:‘2017-02-14 14:44:30‘ 或20170214144430

或  ‘17-02-14 14:44:30‘或170214144430 
或‘0170214144430’

 

    

 timestamp     :和datetime不同的地方是,使用
current_ timestamp可以输入当前日期和时间,输入null时系统会输入mysql日期和时间,输入任何数据时,系统会输入当前mysql系统日期和时间


 

字符串类型:

text  :存储大文本,有4中可选

tinytext:存储0-255个字节

mediumtext :

longtext

char:存储固定

定义语法: char(长度)和varchar(长度)

char(10) varchar(10) 

‘abc’ ,在char
中存储10个字节 
,在varchar中存储3个字节

varchar:存储可变

enum:只能输入枚举中的数据类型

表的约束:避免输入错误数据

按照功能划分:

- NOT NULL(非空约束) 
- PRIMARY KEY(主键约束) : 数据库中每一张表只能有一个主键约束  ,主键列默认是 
非空  唯一 


- UNIQUE KEY(唯一约束) 
- DEFAULT(默认约束) 
- FOREIGN KEY (外键约束)



主键约束只能有一个,唯一约束可以有多个, 主键约束必须是非空的, 唯一约束 可以是非空的。

列级约束即可在列定义时声明,也可以在列定义后声明,表级约束只能在列定义后声明。

外键约束的条件

1.    父表(子表参照的表)和子表(具有外键列的表)必须使用相同的存储引擎,而且禁止使用临时表。

2.    数据表的存储引擎只能为InnoDB。

3.    外键列和参照列必须具有相似的数据类型。其中数字的长度或是否有符号必须相同;而字符的长度可以不同。

4.    外键列和参照列必须创建索引。如果外键列不存在索引的话,MYSQL将自动创建索引。

索引:提高数据的查询和排序效率

unique:唯一索引,要求索引列的值必须是唯一的

fulltext:全文索引,只能创建在使用char
, varchar
, text的列上

spatial:空间索引,只能在非空的和使用空间数据类型的列上

 

index | key :都一样,二选一

 

使用create index
给已经存在的表上添加索引

create [unique|fulltext|spatial]index|key[别名] on
表名 (列名[asc|desc])

删除索引:

 

Alter table  表名 drop index
索引名

或 drop index
索引名 on 表名

注意:索引会消耗磁盘空间,需要及时删除不使用的索引
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 约束 索引 基础