DDL数据库操作
目录
查询所有的数据库
show databases;
1.查询当前数据库
select database();
2.创建数据库
create database 数据库名字;
create database if not exists 数据库名字; [如果不存在这个数据库就创建,如果存在就不执行]
3.删除数据库
drop database 数据库名字;
drop databaste if exists 数据库名字;[如果不存在这个数据库就删除,如果存在就不执行]
4.使用数据库
use 数据库名字;
2.DDL表操作
1.查询当前数据库所有表
show tables;
2.查询表结构
desc 表名;
3.查询指定表的建表语法句
show create table 表名;
3.DDL表操作-数据类型
mysql中的数据类型有很多,主要分为三类:数值类型,字符串类型,日期时间类型。
数值类型:
类型 | 大小 | 有符号(SIGNED) | 无符号(UNSIGNED) | 描述 |
tinyint | 1 byte | (-128,127) | (0,255) | 小整数值 |
smalltnt | 2 bytes | (-32768,32767) | (0,65535) | 大整数值 |
mediumtnt | 3 bytes | (-8388608,8388607) | (0,16777215) | 大整数值 |
int或integer | 4 bytes | (-2147483648,2147483647) | (0,2^64-1) | 大整数值 |
BIGINT | 8 bytes | / | / | 极大整数值 |
FLOAT | 4 bytes | / | / | 单精度浮点数值 |
DOUBLE | 8 bytes | / | / | 双精度浮点数值 |
字符串类型:
类型 | 大小 | 描述 |
char | 0-255 bytes | 定长字符串 |
varchar | 0-65535 bytes | 变长字符串 |
tinyblob | 0 -255 bytes | 不超过255个字符的二进制数据 |
tinytext | 0-255 bytes | 短文本字符串 |
blob | 0-65 535 bytes | 二进制形式的长文本数据 |
text | 长文本数据 | |
mediumblob | 二进制形式的中等长度文本数据 | |
mediumtext | 中等长度文本数据 | |
longblob | 二进制形式的极大文本数据 | |
longtext | 极大文本数据 |
日期类型:
类型 | 大小 | 范围 | 格式 | 描述 |
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 至 ~ | / | 混合日期和时间值 |
TIMESTAMP | 4 | 1970 -01-01 00:00:00:00 至2038 | / | 时间戳 |
案例:设计一张员工信息表,要求如下:
1.编号(纯数字)
2.员工工号(字符串类型,长度不超过10位)
3.员工姓名(字符串类型,长度不超过10位)
4.性别(男/女,存储一个汉字)
5.年龄(正常人年龄,不可能为负数)
6.身份证号(18位,身份证号有X字符)
7.入职时间(取年月日即可)
mysql> create table emp(
-> id int comment '编号',
-> workon varchar(10) comment'工号',
-> name varchar(10) comment'姓名',
-> gender char(1) comment'性别',
-> age tinyint unsigned comment '年龄',
-> idcard char(18) comment '身份证号',
-> entrydate date comment '入职时间'
-> ) comment '员工信息表' ;
Query OK, 0 rows affected (0.02 sec)
4.DDL - 表操作 - 修改
添加字段:
ALTER TABLE 表名 ADD 字段名 类型(长度)[COMMENT 注释] [约束] ;
案例:为emp表增加一个新的字段“昵称”为nickname,类型为varchar(20)
mysql> alter table employee add nickname varchar(20) comment '昵称';
Query OK, 0 rows affected (0.04 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改数据类型:
ALTER TABLE 表名 MODIFY 字段名 新数据类型(长度);
修改字段名和字段类型:
ALTER TABLE 表明 CHANGE 旧字段名 新字段名 类型(长度) [COMMENT 注释] [约束];
案例:将emp表的nickname字段修改为username,类型为varchar(30)
mysql> alter table employee change nickname username varchar(30) comment '用户名';
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
删除字段:
ALTER TABLE 表名 DROP 字段名;
案例:将emp表的字段username删除
mysql> alter table employee drop username;
Query OK, 0 rows affected (0.01 sec)
Records: 0 Duplicates: 0 Warnings: 0
修改表名
ALTER TABLE 表名 RENAME TO 新表名;
案例:将emp表名修改为 employee
mysql> alter table emp rename employee;
Query OK, 0 rows affected (0.01 sec)
删除表
DROP TABLE [ IF EXISTS] 表名;
删除指定表,并重新创建该表
TRUNCATE TABLE 表名;
注意:在删除表时,表中的全部数据也会被删除。