07、DDL数据定义语言
2021-04-09 20:26
标签:外键 常见 nta 管理 sel 字符串 name 金融 select 07、DDL数据定义语言 标签:外键 常见 nta 管理 sel 字符串 name 金融 select 原文地址:https://www.cnblogs.com/shawnyue-08/p/13371658.html
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;