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;#写入一个不成立的条件就会不赋值数据了

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值