MySQL中的DDL,DML
Posted fansik
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中的DDL,DML相关的知识,希望对你有一定的参考价值。
mysql中的DDL,DML
DDL:数据定义语言:
CREATE,ALTER,DROP
DB组件:数据库、表、索引、视图、用户、存储过程、存储函数、触发器、事件调度器等
CREATE相关的常用命令:
CREATE DATABASE
CREATE EVENT
CREATE FUNCTION
CREATE FUNCTION UDF
CREATE INDEX
CREATE LOGFILE GROUP
CREATE PROCEDURE
CREATE SERVER
CREATE TABLE
CREATE TABLESPACE
CREATE TRIGGER
CREATE USER
CREATE VIEW
DML:数据操作语言
INSERT,DELETE,UPDATE,SELECT
数据库:
CREATE,ALTER,DROP
{DATABASE|SCHEMA}
[IF EXISTS]
[IF NOT EXISTS]
表:二维关系
设计表:遵循规范
定义:字段,索引
字段:字段名,字段数据类型,修饰符
约束:索引,应该创建在经常用作查询条件的字段上
索引:实现级别在存取引擎
分类:
稠密索引、稀疏索引
B+所以、hash索引、R树索引、FULLTEXT索引
聚集索引:数据和主键索引存放在一起,按主键索引次序进行存储
非聚集索引:索引和数据分开存放,索引通过指针找到原始数据所在位置
简单索引(只索引在一个字段上)、组合索引(索引在多个字段上)
创建表:
1、直接创建;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
2、通过查询现存的表创建:新表会被直接插入查询而来的数据;
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
[(create_definition,...)]
[table_options]
[partition_options]
[IGNORE | REPLACE]
[AS] query_expression
3、通过复制现存的表的表结构创建:不复制数据。
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
{ LIKE old_tbl_name | (LIKE old_tbl_name) }
注意:Storage Engine是指表类型,也即在表创建时指明其使用的存储引擎;
同一个库中的表要使用同一种存储引擎;
查看表结构:
DESCRIBE table_name
+------------------+--------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+--------------+------+-----+---------+-------+
| id | varchar(100) | NO | PRI | NULL | |
| createTime | datetime | YES | | NULL | |
| host | varchar(255) | YES | | NULL | |
| name | varchar(255) | YES | | NULL | |
| originalFilename | varchar(255) | YES | | NULL | |
| relativeUrl | varchar(255) | YES | | NULL | |
| relativeUrlAbb | varchar(255) | YES | | NULL | |
| savePath | varchar(255) | YES | | NULL | |
| savePathAbb | varchar(255) | YES | | NULL | |
| suffix | varchar(255) | YES | | NULL | |
| url | varchar(255) | YES | | NULL | |
| urlAbb | varchar(255) | YES | | NULL | |
+------------------+--------------+------+-----+---------+-------+
查看表的状态信息:
SHOW TABLE STATUS LIKE ‘table_name‘\G;
*************************** 1. row ***************************
Name: fansik # 表名
Engine: InnoDB # 存储引擎
Version: 10 # 版本号
Row_format: Dynamic # 行格式
Rows: 381042 # 已有行数
Avg_row_length: 401 # 现有的所有行的平均长度
Data_length: 153026560 # 表中数据的大小
Max_data_length: 0 # 表数据的最大容量,该值与存储引擎有关,0为不限制
Index_length: 0 # 索引大小,无索引
Data_free: 6291456 # 目前已分配,但尚未存入数据的空间,通常对myisam比较有用
Auto_increment: NULL # 下一次自动增长的字段
Create_time: 2017-07-11 10:12:06 # 表的创建时间
Update_time: 2017-10-13 15:58:52 # 表的最近一次的修改时间
Check_time: NULL # 最近一次使用checktable命令检查表的时间
Collation: utf8_general_ci # 排序规则
Checksum: NULL # 表的校验和
Create_options: # 创建表时其他的额外选项
Comment: # 注释信息
1 row in set (0.00 sec)
修改表:ALTER TABLE
删除表:DROP TABLE
以上是关于MySQL中的DDL,DML的主要内容,如果未能解决你的问题,请参考以下文章