##DDL(Data Define Language)数据定义语言
数据定义语言:库和表的管理
1.库的管理
创建,修改,删除
2.表的管理
创建,修改,删除
创建:create
修改:alter
删除:drop
###########
###库的管理
###########
#1.创建名为books的数据库
create database books;
create database if not exists books;
#2.修改库的字符集
alter database books char set gbk;
#.3.库的删除
drop database books;
drop database if exists books;
###########
###表的管理
###########
#一.表的创建
/*
create table 表名(
列名 列名类型 约束,
...
)
*/
CREATE TABLE book (
id INT,
bname VARCHAR(20),
price DOUBLE,
authorId INT,
publish DATETIME
);
desc book;
#二.表的修改
/*
1.修改表名
2.修改列的类型和约束
3.添加新列
4.删除列
5.修改列名
*/
#1.修改列名
alter table book change column publish pubDate datetime;
#2.修改列的类型或约束
alter table book modify pubDate timestamp;
#3.添加新列
alter table book add column bmark varchar(20);
#4.删除列
alter table book drop column bmark ;
#5.修改表名
alter table book rename to newbook;
#三.表的删除
drop table random;
show tables;
#四、表的复制
#1.仅仅复制表的结构
CREATE TABLE copy LIKE t_student;
#2.复制表的结构和内容
CREATE TABLE copy2 SELECT * FROM
t_student;
#3.根据自己的需要复制部分数据
CREATE TABLE copy3 SELECT id, name, score FROM
t_student
WHERE
score > 90;
#4.仅仅复制部分表的结构(不包含数据)
CREATE TABLE copy4 SELECT id, name, score FROM
t_student
WHERE
1 = 2;
##################
####常见的数据类型
##################
/*
数值型:
整型(tinyint,smallint,mediumint,int,integer,bigint)
.(1)整形默认是无符号,即负数和正数都可以,若想改为无符号,则在后面追加unsigned
(2)若插入的值超过最大值,先显示out of range异常,并且插入的是最大值
(3)如果不设置长度,则有默认的长度
小数
定点数DEC(M,D)
浮点数
float(M,D)
double(M,D)
特点:
(1)M,D的含义
M代表:整数部位+小数部位
D代表:小数部位
如果超过,则插入临界值
字符型:
较短的文本:char,varchar(char是固定长度,varchar是可变字符)
较长的文本:text,blob(较长的二进制数据)
日期型:
date 1001-01-01
datetime 1001-01-01 00:00:00
datestamp与实际时区相关
time 00:00:00
*/
#枚举类,即只能插入相关的字母
CREATE TABLE tab_char (
cr ENUM('a', 'b', 'c')
);
#集合类
CREATE TABLE tab_set (
cr SET('a', 'b', 'c','d')
);
##################
####常见约束
##################
/*
含义:一种限制,用于限制表中的数据,保证数据的准确性和一致性
语法:
create table 表名(
列名 列名类型 列名约束
)
分类: 六大约束
1. NOT NULL :非空,用于保证该字段不能为空
2. DEFAULT: 默认 用于保证该字段有默认值
3. PRIMARY KEY:主键约束 用于保证该字段的值具有唯一性,并且非空
4. UNIQUE:唯一 , 用于保证该字段的值具有唯一性,可以为空
5. 【check】:检查约束,mysql不支持
6. FOREIGN KEY:外键约束 ,用于限制两个表的关系,用于保证该字段的值必须来自主表的关联列的值
按添加的时机:
修改表时
创建表时
按约束的添加分类:
列级约束 :
六大约束都可以,外键约束没有效果
表级约束:
除了非空,默认都支持
*/
#1.添加列级约束
CREATE TABLE studio (
id INT PRIMARY KEY,
stuname VARCHAR(20) NOT NULL,
sex CHAR CHECK (sex = '男' OR sex = '女'),
seat INT UNIQUE,
age INT DEFAULT 18
);
desc studio;
#2.添加表级约束
constraint 约束名 约束类型(字段名)
CREATE TABLE majord (
id INT primary key,
name VARCHAR(10)
);
CREATE TABLE study (
id INT,
stuname VARCHAR(20),
gender CHAR,
seat INT,
age INT,
majorid INT,
CONSTRAINT d PRIMARY KEY (id),
CONSTRAINT s UNIQUE (seat),
FOREIGN KEY (majorid)
REFERENCES majord (id)#这里majord里的i
) ENGINE=INNODB DEFAULT CHARSET=UTF8;
desc study;
###主键和唯一的区别
# 保证唯一性 是否允许为空 一个表中可以有多个 是否允许组合
#主键 √ × 至多有1个 √,但不推荐
#唯一 √ √ 可以有多个 √,但不推荐
#外键的特点
#①要求在从表中建立外键关系
#②从表的外键关联列必须主表关联列的类型一致,名称无要求
#③主表的关联列必须时key或唯一
#④插入数据时,应该先插入主表中的数据
#⑤删除数据时,先删除从表中的数据,再删除主表中的数据
###################
###修改表时添加约束
###################
CREATE TABLE stu (
id INT,
stuname VARCHAR(20),
gender CHAR,
seat INT,
age INT,
majorid INT
) ;
#添加非空约束
alter table stu modify column stuname varchar(30) not null;
#添加默认约束
alter table stu modify column age int default 18;
#添加主键约束
alter table stu modify column id int primary key;
alter table stu add primary key(id);
#添加唯一约束
alter table stu modify column majorid int unique;
###################
###修改表时删除约束
###################
#1.删除非空约束
alter table stu modify column stuname varchar(30) ;
#2.删除默认约束
alter table stu modify column age int;
#3.删除主键约束
alter table stu drop primary key;
#4.删除唯一约束
alter table stu drop index majorid;
desc stu;
#5.删除外键
alter table study drop foreign key majorid;
#标识列
/*
也叫自增长列
含义:可以不用手动地插入值,系统提供默认地序列值
特点:自增长列默认从1开始,也可指定从多少开始
*/
#一、创建表时设置标识列
create table mark(
id int auto_increment,
name varchar(20) ,
primary key(id)
)auto_increment = 1001;
insert into mark(name) values('jack');
来源:CSDN
作者:【Ceiauq
链接:https://blog.csdn.net/chaseqrr/article/details/104507729