DDL操作数据库(CRUD)
C(Create)创建数据库
C(Create) 创建数据库的几种方式
- 创建数据库
CREATE DATABASE 数据库名;
-- 直接创建数据库db1
create database db1;
- 判断数据库是否已经存在,不存在则创建数据库
CREATE DATABASE IF NOT EXISTS 数据库名;
-- 判断是否存在,如果不存在则创建数据库db2
create database if not exists db2;
- 创建数据库并指定字符集
CREATE DATABASE 数据库名 CHARACTER SET 字符集;
-- 创建数据库并指定字符集为gbk
create database db3 default character set gbk;
R(Retrieve):查询
查询所有数据库的名称:
show databases;
查询某个数据库的字符集:查询某个数据库的创建语句
show create database 数据库名称;
-- 查看某个数据库的定义信息
show create database db1;
U(Update):修改
修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
-- 将db1数据库的字符集改成utf8
alter database db1 character set utf8;
D(Delete):删除
删除数据库
drop database 数据库名称;
-- 删除db2数据库
drop database db2;
判断数据库存在,存在再删除
drop database if exists 数据库名称;
-- 删除db2数据库
drop database if exists db2;
U(Use)使用数据库
查询当前正在使用的数据库名称
select database();
使用数据库
use 数据库名称;
-- 改变要使用的数据库
use db1;
DDL操作表结构
- 前提先使用某个数据库
use db1;
C(Create):创建
创建表
创建表的格式:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
…
列名n 数据类型n
);
注意:最后一列,不需要加逗号,
创建表的关键字 | 说明 |
---|---|
CREATE | 创建 |
TABLE | 表 |
MySQL数据类型
常使用的数据类型如下:
详细的数据类型如下:
分类 | 类型名称 | 类型说明 |
---|---|---|
整数 | tinyInt | 微整型:很小的整数(占8位二进制) |
smallint | 小整型:小的整数(占16位二进制) | |
mediumint | 中整型:中等长度的整数(占24位二进制) | |
int(integer) | 整型:整数类型(占32位二进制) | |
小数 | float | 单精度浮点数,占4个字节 |
double | 双精度浮点数,占8个字节 | |
日期 | time | 表示时间类型 |
date | 表示日期类型 | |
datetime | 同时可以表示日期和时间类型 | |
字符串 | char(m) | 固定长度的字符串,无论使用几个字符都占满全部,M为0~255之间的整数 |
varchar(m) | 可变长度的字符串,使用几个字符就占用几个,M为0~65535之间的整数 | |
大二进制 | tinyblob ,Big Large Object | 允许长度0~255字节 |
blob | 允许长度0~65535字节 | |
mediumblob | 允许长度0~167772150字节 | |
大文本 | tinytext | 允许长度0~255字节 |
text | 允许长度0~65535字节 | |
mediumtext | 允许长度0~167772150字节 | |
longtext | 允许长度0~4294967295字节 |
-- 创建student表包含id,name,age,score,birthday,insert_time字段
create table student(
id int,
name varchar(32),
age int ,
score double(4,1),
birthday date,
insert_time timestamp
);
-- int:整数类型
-- double:小数类型
-- date:日期,只包含年月日,yyyy-MM-dd
-- datetime:日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss
--timestamp:时间错类型 包含年月日时分秒 yyyy-MM-dd HH:mm:ss
--如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值
快速创建一个表结构相同的表
-- 快速创建一个表结构相同的表
create table 表名 like 被复制的表名;
-- 创建s1表,s1表结构和student表结构相同
-- 创建一个s1的表与student结构相同
create table s1 like student;
desc s1;
R(Retrieve):查询
查询某个数据库中所有的表名称
show tables;
查看db1数据库中的所有表
use db1;
show tables;
查询表结构
desc 表名;
-- 查看student表的结构
desc student;
查看创建表的SQL语句
SHOW CREATE TABLE 表名;
-- 查看student的创建表SQL语句
show create table student;
-- 存在的目的是为了避免关键字的冲突
U(Update):修改
修改表名
alter table 表名 rename to 新的表名;
--将学生表student改名成student2
alter table student rename to student2;
修改表的字符集
alter table 表名 character set 字符集名称;
--将student2表的编码修改成gbk
alter table student2 character set gbk;
--查看编码字符集 (类似数据库的查看)
SHOW CREATE TABLE student2 ;
添加一列
alter table 表名 add 列名 数据类型;
--为学生表添加一个新的字段remark,类型为varchar(20)
alter table student add remark varchar(20);
修改列名称 类型
alter table 表名 change 列名 新列别 新数据类型;
alter table 表名 modify 列名 新数据类型;
-- 将student表中的remark字段名改成intro,类型varchar(30)
alter table student change remark intro varchar(30);
--将student表中的remark字段的改成varchar(100)
alter table student modify remark varchar(100);
删除列
alter table 表名 drop 列名;
-- 删除student表中的字段intro
alter TABLE student drop intro;
D(Delete):删除
直接删除表
drop table 表名;
-- 直接删除表s1表
drop table s1;
判断表是否存在,如果存在则删除表(如果表不存在,不删除,存在则删除)
drop table if exists 表名 ;
-- 判断表是否存在并删除s1表
drop table if exists s1;