主要用来处理数据库中的数据内容。允许用户对数据库中的数据进行查询 ,插入,更新和删除等操作
DML语句 | 功能说明 |
---|---|
SELECT | 从表或视图中检索数据行 |
INSERT | 插入数据到表或视图 |
UPDATE | 更新数据 |
DELETE | 删除数据 |
CALL | 调用过程 |
MERGE | 合并(插入或修改) |
COMMIT | 将当前事务所做的更改永久化(写入数据库) |
ROLLBACK | 取消上次提交以来的所有操作 |
是一组 SQL 命令,用于创建和定义数据库对象,并且将对这些对象的定义保存到数据字典中。通过 DDL 语句可以创建数据库对象,修改数据库对象和删除数据库对象等
DDL语句 | 功能说明 |
---|---|
CREATE | 创建数据库结构 |
ALTER | 修改数据库结构 |
DROP | 删除数据库结构 |
RENAME | 更改数据库对象的名称 |
TRUNCATE | 删除表的全部内容 |
DCL语句 | 功能说明 |
---|---|
CRANT | 授予其他用户对数据库结构的访问权限 |
REVOKE | 收回用户访问数据库结构的权限 |
数据库的组件(对象):
数据库、表、索引、视图、用户、存储过程、函数、触发器、事件调度器等
命名规则:
语法:CREATE DATABASE|SCHEMA [IF NOT EXISTS]
CREATE DATABASE testdb1;
DROP DATABASE IF EXISTS testdb1;
SHOW DATABASES;
创建新表
语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name (create_definition,...) [table_options] [partition_options]
CREATE TABLE testable1 ( system_id TINYINT UNSIGNED PRIMARY KEY, system_name CHAR(10) NOT NULL, system_release CHAR(10), system_version CHAR(20) );
查询建表
语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name [(create_definition,...)] [table_options] [partition_options] select_statement
CREATE TABLE testable2 SELECT user,host,password FROM mysql.user;
复制表结构
语法:CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name { LIKE old_tbl_name | (LIKE old_tbl_name) }
CREATE TABLE testable3 LIKE mysql.user;
分类 |
子类型 |
数据类型 |
上限 |
数据类型说明 |
日期和时间数据类型 |
|
date |
3字节 |
日期,格式:2014-09-18 |
日期和时间数据类型 |
|
time |
3字节 |
时间,格式:08:42:30 |
日期和时间数据类型 |
|
datetime |
8字节 |
日期时间,格式:2014-09-18 08:42:30 |
日期和时间数据类型 |
|
timestamp |
4字节 |
自动存储记录修改的时间,格式:2009-09-18 08:42:30 |
日期和时间数据类型 |
|
year |
1字节 |
年份, 格式:2009 |
数值数据类型 |
整型 |
tinyint |
1字节 |
有符号范围(-128~127),无符号(0~255) |
数值数据类型 |
整型 |
smallint |
2字节 |
有符号范围(-32768~32767),无符号(0~65535) |
数值数据类型 |
整型 |
mediumint |
3字节 |
有符号范围(-8388608~8388607),无符号(0~16777215) |
数值数据类型 |
整型 |
Int(integer) |
4字节 |
有符号范围 (-2147483648~2147483647), 无符号(0~4294967295) |
数值数据类型 |
整型 |
bigint |
8字节 |
有符号范围(-9223372036854775807~ 9223372036854775807), 无符号(0~18446744073709551615) |
数值数据类型 |
浮点型 |
float(m, d) |
4字节 |
单精度浮点型,m总个数,d小数位 单精度实数在内存中占32bit 有效数字为6~7位 |
数值数据类型 |
浮点型 |
numeric(m,d) |
4字节 |
m总个数,d小数位 |
数值数据类型 |
浮点型 |
double(m, d) |
8字节 |
双精度浮点型,m总个数,d小数位 双精度实数占内存单元为64bit 有效数字为15~16位 |
数值数据类型 |
浮点型 |
decimal(m, d) |
|
decimal是存储为字符串的浮点数 |
字符串数据类型 |
|
char(n) |
255字节 |
固定长度 每个汉字3字节 |
字符串数据类型 |
|
varchar(n) |
65535字节 5.0以上版本 |
可变长度 每个汉字3字节 varchar起始位和结束位占去了3个字节 varchar会使用1-3个字节来存储长度 varchar性能略逊char,当长度变化的时候,要重新分配内存 |
字符串数据类型 |
|
tinytext |
255字节 |
可变长度 |
字符串数据类型 |
|
text |
65535字节
|
可变长度 存储的时候不会截断尾部的空格 text不会使用1-3个字节来存储长度 text没有默认值 |
字符串数据类型 |
|
mediumtext |
16M |
可变长度 |
字符串数据类型 |
|
longtext |
4G |
可变长度 |
字符串数据类型 |
二进制形式 |
TinyBlob |
255字节 |
可变长度 |
字符串数据类型 |
二进制形式 |
blob |
65535字节 |
可变长度 |
字符串数据类型 |
二进制形式 |
mediumblob |
16M |
可变长度 |
字符串数据类型 |
二进制形式 |
longblob |
4G |
可变长度 |
枚举型 |
|
enum(“1″, “2″) |
最大65535个 不同的枚举值 |
enum数据类型就是定义了一种枚举,最多包含65535个不同的成员。 当定义了一个enum的列时,该列的值限制为列定义中声明的值。 如果列声明包含NULL属性,则NULL将被认为是一个有效值,并且是默认值。如果声明了NOT NULL,则列表的第一个成员是默认值。 |
其它类型 |
|
set(“1”, “2″,) |
最大64个 不同的值 |
set数据类型为指定一组预定义值中的零个或多个值提供了一种方法,这组值最多包括64个成员。 值的选择限制为列定义中声明的值。 |
数据类型 | 常见的修饰符 |
---|---|
整型 |
|
浮点型 |
|
字符型(char,varchar和text) |
|
字符型(binary、varbinary和blob) |
|
日期时间型 |
|
枚举型 |
|
语法:SHOW TABLES [FROM db_name]
SHOW TABLES;
SHOW TABLES FROM testdb1;
语法:DESC [db_name.]tb_name
MariaDB [testdb1]> DESC testable1;
+----------------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------------+---------------------+------+-----+---------+-------+
| system_id | tinyint(3) unsigned | NO | PRI | NULL | |
| system_name | char(10) | NO | | NULL | |
| system_release | char(10) | YES | | NULL | |
| system_version | char(20) | YES | | NULL | |
+----------------+---------------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
语法:SHOW TABLE STATUS FROM db_name
SHOW TABLE STATUS LIKE 'testable1'\G
SHOW CREATE TABLE testable1\G
DROP TABLE IF EXISTS testable1;
语法:ALTER TABLE 'tbl_name'
语法:ADD col1 data_type [FIRST|AFTER col_name]
ALTER TABLE testable1 ADD system_framework VARCHAR(10) AFTER system_release;
语法:CHANGE [COLUMN] old_col_name new_col_name column_definition [FIRST|AFTER col_name]
ALTER TABLE testable1 CHANGE system_framework system_Framework VARCHAR(10);
语法:ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT}
ALTER TABLE testable1 ALTER system_Framework SET DEFAULT 'x86_64';
语法:MODIFY [COLUMN] col_name column_definition [FIRST | AFTER col_name]
ALTER TABLE testable1 MODIFY system_version FLOAT(10,5);
语法:DROP [COLUMN] col_name
ALTER TABLE testable1 DROP system_Framework;
语法:RENAME [TO|AS] new_tbl_name
ALTER TABLE testable1 RENAME System_List;