前一篇文章是数据库系统的基础概念和MySQL的入门篇,SQL是一种操作关系型数据库的结构化查询语言。总的来说,SQL分为四大类,分别是数据定义语言DDL,数据操作语言DML,数据查询语言DQL和数据控制语言DCL。
今天这篇文章将详细讲述数据定义语言DDL对数据库和表的相关操作。
推荐学习专栏:Java 编程进阶之路【从入门到精通】
首先要学习的是使用DDL来对数据库进行操作,和以往一样,对数据进行操作时,我们主要是对数据进行增删改查,同样,我们使用DDL操作数据库也主要是对数据库进行增删改查操作。
查询所有的数据库:
show databases;
小案例:
创建新的数据库:
create database 数据库名称;
使用上面的方式创建新的数据库时,如果该数据库已经存在,则会出现错误,所以我们在创建新的数据库时一般会判断该数据库是否存在,如果已存在,则不会创建。
创建新的数据库(判断数据库是否已经存在):
create database if not exists 数据库名称;
小案例:
删除数据库:
drop database 数据库名称;
和前面创建新的数据库相同,为了避免出现错误,我们一般会先判断该数据库是否存在,如果不存在,则不会删除。
删除数据库(判断数据库是否已经存在):
drop database if exists 数据库名称;
小案例:
现在我们就成功创建了新的数据库,接下来,我们要想在数据库中创建表,首先我们要明白是对哪一个数据库进行操作,此时我们先要使用数据库,才能对数据库中的表进行操作。
使用数据库:
use 数据库名称;
查询当前正在使用的数据库:
select database();
小案例:
同样,对数据表的操作也无非就是增删改查,在学习相关操作之前,我们先要熟悉一下MySQL的数据类型。
MySQL支持多种数据类型,但是大致可以分为3中,分别是数值型,日期型和字符串型。下面是比较常用的几种数据类型:
数值:
数据类型 | 解释 |
---|---|
tinyint | 小整数型,占1个字节 |
int | 大整数型,占4个字节 |
double | 浮点类型 |
日期:
数据类型 | 解释 |
---|---|
date | 日期值,只包含年月日 |
datetime | 混合日期和时间值,包含年月日时分秒 |
字符串:
数据类型 | 解释 |
---|---|
char | 定长字符串 |
varchar | 变长字符串 |
定长字符串和变长字符串的区别:
字符串是我们在数据库中经常使用的数据类型,使用变长字符串,如果字符的长度没有达到指定的长度,那么实际的长度是多少就占用几个字符,这样的做法显然是使用时间换空间,而使用定长字符串虽然会浪费空间,但是一般储存性能比较高。
查询当前数据库下所有的表:
show tables;
查询表结构:
desc 表名称;
小案例:
创建一个新的表:
create table 表名称(
字段名1 数据类型,
字段名2 数据类型,
...
字段名n 数据类型 #这里是不需要加上,的
);
小案例:
删除表:
drop table 表名;
删除表(判断表是否存在):
drop table if exists 表名;
小案例:
修改表名:
alter table 表名 rename to 新的表名;
增加一列:
alter table 表名 add 列名 数据类型;
修改数据类型:
alter table 表名 modify 列名 新数据类型;
修改列名和数据类型:
alter table 表名 change 列名 新列名 新数据类型;
删除列:
alter table 表名 drop 列名;
小案例:
需求:设计一张学生表,请注重数据类型、长度的合理性。
在完成这样一个案例的时候,首先创建一个学生的数据库,在数据库中创建一张新的表,创建一张表的时候注意语法格式,数据类型和长度的合理性。
以管理员身份运行命令提示符,登录Mysql:
create database if not exists student;
use student;
create table stu(
id int ,-- 编号
name varchar(10),-- 姓名
gender char(1),-- 性别
birthday date,-- 生日
score double(5,2) ,-- 分数
addr varchar(50),-- 地址
status tinyint-- 状态
);
SQL分为了四大类,今天是对数据定义语言DDL做了一个详细的讲解,分别使用DDL来操作数据库和数据表,并且我们也完成了设计一张学生表的简单需求。相对来说是比较容易的,在日后的操作中会慢慢的熟练。