Data Definition Language,数据库定义语言,用来定义数据库对象(数据库,表,字段)
1.数据库操作
1.1查询所有数据库
show databases;
1.2查询当前数据库
show databases();
1.3创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];
例如:
- 我们想创建一个Student数据库,并且使用数据库默认的字符集。
create database Student;
- 因为在同一个数据库服务器中不能出现同名的数据库,所以我们使用(if not exists)参数来解决这个问题,若想要创建的数据库不存在,则创建数据库,如果存在,则不创建。
create database if not exists Student;
- 我们也可以指定数据库使用的字符集
create database Student default charset utf8mb4;
1.4删除数据库
drop database [if exists] 数据库名;
1.5切换数据库
我们要操作某一个数据库下的表时,需要通过命令,切换到对应的数据库下面,否则是不能对那个表进行操作的。
use 数据库名;
2.表操作
2.1查询创建
2.1.1查询当前数据库中所有表
show tables;
例如:
- 如果我们想要在mydata数据库中查询我们所创建的所有表。
use mydata;
show tables;
2.1.2查看表结构
这条指令可以使我们看见指定表的字段,字段的类型,是否可以为NULL,是否存在默认值等信息。
desc 表名;
2.1.3查询表的建表语句
这条指令可以使我们查询到创建表时候的所有参数,指定的和没指定的(默认值)都回查询到 。(存储引擎,字符集)等没。
show create table 表名;
2.1.4创建表结构
create table 表名(字段1 字段1类型 [comment 字段1注释],字段2 字段2类型 [comment 字段2注释],字段3 字段3类型 [comment 字段3注释],字段4 字段4类型 [comment 字段4注释],......字段n 字段n类型 [comment 字段n注释]
)[comment 表注释]
- 最后一个字段没有逗号(,)
例如:
create table tb_stu(S# varchar(12) comment '学号';name varchar(30) comment '姓名';age int comment '年龄';gender varchar(1) comment '性别'
)comment '学生表';
2.2数据类型
2.2.1数值类型
类型 | 大小 | 有符号范围 | 无符号范围 | 描述 |
---|---|---|---|---|
TINYINT | 1byte | (-128,127) | (0,255) | 小整数值 |
SMALLINT | 2bytes | (-32768,32767) | (0,65535) | 大整数值 |
MEDIUMINT | 3bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
INT | 4bytes | (-2147483648,2147483647) | (0,4294967295) | 大整数值 |
BIGINT | 8bytes | (-2^63,2^63-1) | (0,2^64-1) | 极大整数值 |
FLOAT | 4bytes | (-3.4... E+38,3.4... E+38) | 0和(1.17... E-38,3.40... E+38) | 单精度浮点数值 |
DOUBLE | 8bytes | (-1.7... E+308,1.7... E+308) | 0和(2.22... E-308,1.79... E+308) | 双精度浮点数值 |
DECIMAL | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
例如:
//年龄字段--不出现负数不超过255岁
age tinyint unsigned//分数字段--总分100,一位小数
score double(4,1)
2.2.2字符串类型
类型 | 大小 | 描述 |
---|---|---|
CHAR | 0-255 bytes | 定长字符串(需要指定长度) |
VARCHAR | 0-65535 bytes | 变长字符串(需要指定长度 |
TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
TINYTEXT | 0-255 bytes | 短文本字符串 |
BLOB | 0-65535 bytes | 二进制形式的长文本数据 |
TEXT | 0-65535 bytes | 长文本数据 |
MEDIUMBLОB | 0-16 777 215 bytes | 二进制形式的中等长度文本数据 |
MEDIUMTEXT | 0-16 777 215 bytes | 中等长度文本数据 |
LONGBLOB | 0-4 294 967 295 bytes | 二进制形式的极大文本数据 |
LONGTEXT | 0-4 294 967 295 bytes | 极大文本数据 |
例如:
1).用户名 username->长度不定,最长不会超过50
username varchar (50)2),性别 gender--------->存储值,不是男,就是女
gender char (1)3).手机号 phone-----> 固定长度为11
phone char (11)
2.2.3日期时间函数
类型 | 大小 | 范围 | 格式 | 描述 |
---|---|---|---|---|
DATE | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | 日期值 |
TIME | 3 | -838:59:59至838:59:59 | HH : MM: SS | 时间值或持续时间 |
YEAR | 1 | 1901至2155 | YYYY | 年份值 |
DATETIME | 8 | 1000-01-01 00:00:00 至9999-12-31 23:59:59 | YYYY-MM-DDHH:MM:SS | 混合日期和时间值 |
TIMESTAMP | 4 | 1970-01-0100:00:01至2038-01-19 03:14:07 | YYYy-MM-DDHH:MM: SS | 混合日期和时间值,时间戳 |
例如:
1),生日字段 birthday
birthday date2),创建时间 createtime
createtime datetime
2.2.4表操作--修改
2.2.4.1添加字段
ALTER TABLE 表名 ADD 字段名类型 (长度) [COMMENT 注释] [ 约束];
2.2.4.2修改数据类型
ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);
2.2.4.3修改字段名和字段类型
ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [ 约束 ];
2.2.4.4删除字段
ALTER TABLE 表名 DROP 字段名;
2.2.4.5修改表名
ALTER TABLE 表名 RENAME TO 新表名;
2.2.5表操作-删除
2.2.5.1删除表
DROP TABLE [IF EXIST} 表名;
可选项 IFEXISTS代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果加该参数项,删除一张不存在的表,执行将会报错)。
2.2.5.2删除指定表,并重新创建表
TRUNCATE TABLE 表名;