mysql 基础 ddl dml 总结

来源:互联网 发布:匡恩网络是个奇葩公司 编辑:程序博客网 时间:2024/05/01 05:30

首先需要说明:数据库到底是怎么存储数据库的!  (现在的数据库基本都是关系数据库)

数据库是以二维表的形式存储数据的(有点像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’和00’表示2000 0表示的值为0000

 date可以存储yyyy-mm-dd或者 yyyymmdd 的字符串或存储yy-mm-ddYYMMDD字符串,还可以使用YY-MM-DDYYMMDD数字格式

 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 

eg2 1232:25’表示的‘60:32:25 

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

 

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

  17-02-14 14:44:30170214144430 或‘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 表名

注意:索引会消耗磁盘空间,需要及时删除不使用的索引





0 0