DDL语言(DataDefinelanguage 数据库定义语言)
Posted 坤坤就爱露露
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DDL语言(DataDefinelanguage 数据库定义语言)相关的知识,希望对你有一定的参考价值。
文章目录
1.说明:
Data Define language 数据库定义语言,用于对数据库和表的管理和操作
2.分类
分为库的管理和表的管理
3.------------库的管理--------------
#一、创建数据库
CREATE DATABASE stuDB;
一般会写下面的写法
#一般在创建库之前判断是否存在,存在就不创建,不报异常,不存在,就创建这个库
CREATE DATABASE IF NOT EXISTS stuDB;
#二、删除数据库
DROP DATABASE stuDB;
一般会写下面的写法
#同样为了提高代码容错性,在删除之前判断库是否存在,存在就删除
DROP DATABASE IF EXISTS stuDB;
4、----------表的管理--------------
一、数据类型:
1、整型
TINYINT
SMALLINT
INT
BIGINT
2、浮点型
FLOAT(m,n)
DOUBLE(m,n)
DECIMAL(m,n) 定义价格一般使用,精度不会缺失
m和n可选
3、字符型
CHAR(n):n可选 不可变字符串,默认为1
VARCHAR(n):n必选 可变字符串
TEXT 一大段字符时选用(比如信)
n表示最多字符个数
4、日期型
DATE
TIME
DATETIME 占用8个字节
TIMESTAMP 字节短只占用四个字节
5、二进制型
BLOB 存储图片数据
二、常见的约束
说明:
用于限制表中字段的数据的,从而进一步保证数据表的数据是一致的、准确的、可靠的!
1、NOT NULL 非空约束 :
用于限制该字段为必填项
2、DEFAULT 默认约束 :
用于限制该字段没有填写时,默认显示的数据
3、PRIMARY KEY 主键约束:
用于限制该字段的值不可以重复,设置为主键列的字段默认不能为空,一个表只能有一个主键,
组合主键:但是如果我们设置多列数据为主键,那么三个列为主键,三个列同时相同就没事
4、UNIQUE 唯一约束 :
用于限制该字段值不能重复
主键约束与 唯一约束的区别分析
字段是否可以为空 一个表可以有几个
主键 × 1个
唯一 √ n个
5、CHECK 检查约束 :mysql不支持,但是兼容
用于限制该字段的值必须满足指定的条件
eg:CHECK(age BETWEEN 1 AND 100)
6、FOREIGN KEY 外键约束:
说明解释:
用于限制两个表的关系,要求外键列的值必须来自主表的关联列
要求:
1.主表的关联列和从表的关联列的类型必须一致(需要引用,必须一样),意思一样,名称无要求
2.主表的关联列要求必须是主键(即需要与从表的主键关联)
三、创建表:类似创建java类
1、解释:
我们创建表,就像创建javabean时一样,创建对应的字段名 ,字段名的类型,字段的约束等等。。。。
字段约束可以加,也可以不加
注意:在添加外键约束时,放在语句的末尾处加上外键约束,防止约束无法加上,即约束加的提前了,字段还未创建,就已经添加上约束,会发生错误的,所以一般我们会把字段约束加载语句的最后添加外键约束
2、语法:
CREATE TABLE IF NOT EXISTS 表名(
字段名 字段类型 【字段约束】,
字段名 字段类型 【字段约束】,
字段名 字段类型 【字段约束】,
字段名 字段类型 【字段约束】,
外键约束语法
);
3.案例:没有添加约束案例
CREATE TABLE IF NOT EXISTS stuinfo(
stuid INT,
stuname VARCHAR(20),
stugender VARCHAR(20),
email VARCHAR(20),
borndate DATETIME
);
4、案例:添加约束的案例
DROP TABLE IF EXISTS stuinfo;
CREATE TABLE IF NOT EXISTS stuinfo(
stuid INT PRIMARY KEY AUTO_INCREMENT,#添加了主键约束,并且设置为自增长
stuname VARCHAR(20) UNIQUE NOT NULL,#添加了唯一约束和不为空约束
stugender VARCHAR(20) DEFAULT ‘男’,#添加了默认约束
email VARCHAR(20) NOT NULL,
age INT CHECK(age BETWEEN 0 AND 100),#添加了检查约束,mysql不支持
majorid INT ,
#添加外键约束最后写,否则不管用
#给majorid添加上外键约束,如下单独写
CONSTRAINT fk_stuinfo_major FOREIGN KEY (majorid) REFERENCES major(id)
);
CONSTRAINT 外键起一个别名 FOREIGN KEY (主表添加外键约束的字段名) REFERENCES 从表名(来自从表约束的字段名)
四、修改表【了解,平常不会这样干】
语法:
添加 add,修改表名 rename to,修改字段名 change,修改字段类型 modify,删除字段 drop
ALTER TABLE 表名 ADD|MODIFY|CHANGE|DROP COLUMN 字段名 字段类型 【字段约束】
#1.修改表名
ALTER TABLE stuinfo RENAME TO students;
#2.添加字段
ALTER TABLE students ADD COLUMN borndate TIMESTAMP NOT NULL;
DESC students;
#3.修改字段名
ALTER TABLE students CHANGE COLUMN borndate birthday DATETIME NULL;
#4.修改字段类型
ALTER TABLE students MODIFY COLUMN birthday TIMESTAMP ;
#5.删除字段
ALTER TABLE students DROP COLUMN birthday;
DESC students;
五、删除表
语法:
drop table if exists 表名;
案例:删除students表
DROP TABLE IF EXISTS students;
六、复制表
复制一个表结构加上数据,还有复制表,不要数据,
要数据和表结构做法:
要数据就加上select语句 ,复制全部字段数据 写*号,不复制全部字段,复制字段部分数据就在select后面写指定的字段名即可,
不要数据只有表结构做法:
要是仅仅复制全部表的结构,不要数据,就不写select语句,只写一个like语句即可,但是如果仅仅复制部门字段结构还不要数据的话,就需要加上一个where语句 后面写一个不成立的条件即可,自动把所有数据过滤掉就会没有数据,只有字段名
1.仅仅复制表的结构
CREATE TABLE newtable LIKE stuinfo;
2.赋值表的结构+数据
CREATE TABLE newTable3 SELECT * FROM girls.beauty
;
3.案例:复制employees表中的last_name,department_id,salary字段到新表 emp表,
CREATE TABLE emp SELECT last_name,department_id,salary FROM myemployees.employees
;
4.案例:复制employees表中的last_name,department_id,salary字段到新表 emp表,但不复制数据
DROP TABLE IF EXISTS emp;
CREATE TABLE IF NOT EXISTS emp
SELECT last_name,department_id,salary
FROM myemployees.employees
WHERE 1=2;#写入一个不成立的条件就会不赋值数据了
以上是关于DDL语言(DataDefinelanguage 数据库定义语言)的主要内容,如果未能解决你的问题,请参考以下文章