2、DDL数据定义语言

DDL语言

数据库和数据表的管理

#DDL语言:数据定义语言
/*
用户对数据库和数据表的操作和管理。
*/
-- --------------------------------库的管理--------------------------

#一、创建数据库
CREATE DATABASE IF NOT EXISTS studb;
#如果不存在这个库,再创建

#二、删除数据库
DROP DATABASE studb;
DROP DATABASE IF EXISTS studb;


-- --------------------------------表的管理--------------------------

#一、创建表
/*
语法:
create table 表名 (
	字段名 字段类型 [字段约束],
	字段名 字段类型 [字段约束],
	字段名 字段类型 [字段约束]
)
*/
SELECT DATABASE();
#案例
CREATE TABLE IF NOT EXISTS stuinfo (
	id INT,
	NAME VARCHAR(10),
	gender CHAR,
	email VARCHAR(20),
	birthday DATETIME
);
SHOW COLUMNS FROM stuinfo;


常见数据类型

#常见数据类型
/*
int 整型 int(n) n代表显示长度,只对应无符号整数      tinyint smallint int bigint
double/float 浮点型 ,double(5,2)代表最多5位,其中必须有2位小数,即最大值为999.99
decimal 浮点型 在表示金融方面使用该类型,不会出现精度缺失
char 固定长度字符串类型,默认为1,char(n),n可选
varchar 可变长度字符串类型,varchar(n),n必选
text 字符串类型,存储较长文本
blob 字节类型,jpg、mp3、mp4
date 日期类型 yyyy-MM-dd
time 时间类型 hh-mm-ss
timestamp/datetime 时间戳类型 日期+时间,实际中timestamp用的较多

常见约束

#常见约束
/*
约束:用于限制表中的字段数据,从而进一步保证数据表中的数据是准确的,可靠的。
六大约束:
NOT NULL 非空约束:限制该字段为必填项,不能为NULL,stuinfo的id字段
DEFAULT 默认约束:限制如果该字段没有显式插入值,则直接显示默认值
PRIMARY KEY 主键约束:限制该字段的值不能重复且该字段默认不能为NULL,(添加主键约束,自动添加NOT NULL约束)
	一张表只能有一个主键; 当然可以是组合主键:各个字段不能同时重复
UNIQUE 唯一约束:限制该字段不能重复,但是没有默认的NOT NULL约束,一张表可以有多个唯一约束
CHECK 检查约束:限制该字段的值必须满足某个条件;(MySQL不支持检查约束)
FOREIGN KEY 外键约束:用于限制两个表的关系,要求外键列的值必须来自于主表的关联列
	1、主表的关联列和从表的关联列类型必须一;
	2、主表的关联列要求必须是主键;
*/
CREATE TABLE IF NOT EXISTS major (
	id INT NOT NULL,
	majorname VARCHAR(20),
	PRIMARY KEY(id)
);
DROP TABLE stuinfo;
CREATE TABLE IF NOT EXISTS stuinfo (
	id INT NOT NULL,
	NAME VARCHAR(20) UNIQUE,
	gender CHAR DEFAULT '男',
	email VARCHAR(20),
	birthday TIMESTAMP,
	majorid INT,
	PRIMARY KEY(id),
	CONSTRAINT fk_stuinfo_major FOREIGN KEY(majorid) REFERENCES major(id) 
);
-- 在从表stuinfo中添加外键约束,参照主表major中的id字段的值,并且保证主表中的这个字段是主键

修改表

#二、修改表
/*
语法:
alter table 表名 add(新增列)|modify(修改列的类型)|change(修改列名)|drop(删除列) column 字段名 字段类型 字段约束;
*/
#1、修改表名
ALTER TABLE stuinfo RENAME TO stu_info;

#2、添加一个字段age
ALTER TABLE stu_info ADD COLUMN age INT NOT NULL;

#3、修改字段名
ALTER TABLE stu_info CHANGE COLUMN birthday borndate TIMESTAMP;

#4、修改字段类型
ALTER TABLE stu_info MODIFY COLUMN borndate DATETIME;

#5、删除字段gender
ALTER TABLE stu_info DROP COLUMN gender;

删除表和复制表

#三、删除表
/*
语法:
drop table if exists 表名;
*/
DROP TABLE IF EXISTS major;


#四、复制表
/*
新建一个和已有表大致相同结构的表
like关键字
*/
#仅仅只是复制表结构
CREATE TABLE students LIKE stu_info;


#复制表的结构 + 数据
CREATE TABLE students_1 SELECT * FROM stu_info;

#复制员工表中的last_name、department_id、salary字段到新表emp,但不复制数据
CREATE TABLE emp SELECT last_name, department_id, salary FROM myemployees.`employees` WHERE 1 = -1;

猜你喜欢

转载自blog.csdn.net/ShawnYue_08/article/details/107808087