Mysql——DDL(数据库定义语言)

一、库的管理
 1、创建库
  格式:create database [if not exists] database_name [character set 字符集名];
  示例:

CREATE DATABASE
IF NOT EXISTS boys 
CHARACTER SET 'utf8';

 2、修改库
  格式:alter database 库名 character set 字符集名;
  示例:

ALTER DATABASE boys 
CHARACTER SET 'gbk';

 3、删除库
  格式:drop database [if exists] 库名;
  示例:

DROP DATABASE
IF EXISTS boys;

二、表的管理
 Mysql中数据库表文件的大小并不是无限制的,32位系统表文件最大可支持4GB,64位系统支持最大的表文件为8TB。
 1、创建表
  格式:

create table [if not exists] 表名(
	字段名 字段类型 [约束],
	字段名 字段类型 [约束],
	...
	字段名 字段类型 [约束]
);

  示例:

CREATE TABLE IF NOT EXISTS custom (
	id INT NOT NULL,
	`name` VARCHAR (20),
	age INT
);

 2、修改表
  ①添加列

alter table 表名 add column 列名 类型 [first|after 字段名];

  ②修改列的类型或约束

alter table 表名 modify column 列名 新类型 [新约束];

  ③修改列名

alter table 表名 change column 旧列名 新列名 类型 [约束];

   示例:

ALTER TABLE custom CHANGE COLUMN `name` cust_name VARCHAR (20) NOT NULL;

  ④删除列

alter table 表名 drop column 列名;

  ⑤修改表名

alter table 表名 rename [to] 新表名;

 3、删除表

drop table [if exists] 表名;

 4、复制表
  ①复制表的结构

create table 表名 like 旧表;

  ②复制表的结构和数据

create table 表名 
select 查询列表 from 旧表 [where 筛选条件];

三、Mysql中的数据类型
 1、数值型
  ①整型

整数类型占用字节数值范围
tinyint1有符号:-128~127;无符号:0~255
smallint2有符号:-32768~32767;无符号:0~65535
mediumint3有符号:-8388608~8388607;无符号:0~1677215
int/integer4有符号:-2147483648~2147483647;无符号:0~4294967295
bigint8范围很大

  特点:
   1️⃣都可以设置无符号和有符号,默认有符号,通过unsigned设置无符号
   2️⃣如果超出了范围,会报out of range异常,插入临界值
   3️⃣长度可以不指定,默认会有一个长度(长度代表显示的最大宽度,如果不够则左边用0填充,但需要搭配zerofill,搭配zerofill则不再支持无符号整型)
  ②浮点型

浮点数类型格式占用字节
定点数decimal(M,D)
浮点数float(M,D) /double(M,D)float占用4个字节,double占用8个字节

  特点:
   1️⃣M代表整数部位+小数部位的个数,D代表小数部位
   2️⃣如果超出范围,则报out of range异常,并且插入临界值
   3️⃣M和D都可以省略,但对于定点数,M默认为10,D默认为0
   4️⃣如果精度要求较高,则优先考虑使用定点数

 2、字符型
  类型:char、varchar、binary、varbinary、enum、set、text、blob
  Tip
   1️⃣char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1
   2️⃣varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略

3、日期型

类型含义说明
year
date日期
time时间
datetime日期+时间占8个字节
timestamp日期+时间占4个字节,比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间

四、常见的约束

约束说明
NOT NULL非空,该字段的值必填
UNIQUE唯一,该字段的值不可重复
DEFAULT默认值,该字段的值未插入时的默认值
CHECK检查,mysql不支持
PRIMARY KEY主键,该字段的值不可重复并且非空 unique+not null
FOREIGN KEY外键,该字段的值引用了其他的表的字段

 1、主键和唯一键

不同点相同点
一个表至多有一个主键,但可以有多个唯一键;主键不允许为空,唯一键可以为空都具有唯一性,都支持组合键,但不推荐

 2、外键:
  ①外键用于限制两个表的关系,从表的字段值引用了主表的某字段值
  ②外键列和主表的被引用列要求类型一致,意义一样,名称无要求
  ③主表的被引用列要求是一个key(一般就是主键)
  ④插入数据,先插入主表;删除数据,先删除从表
 可以通过以下两种方式来删除主表的记录:
  #方式一:级联删除,删除主表数据时会级联删除子表数据

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) 
REFERENCES major(id) ON DELETE CASCADE;

  #方式二:级联置空,删除主表数据时会将从表的外键置为null

ALTER TABLE stuinfo ADD CONSTRAINT fk_stu_major FOREIGN KEY(majorid) 
REFERENCES major(id) ON DELETE SET NULL;

 3、创建表时添加约束

create table 表名(
	字段名 字段类型 not null,#非空
	字段名 字段类型 primary key,#主键
	字段名 字段类型 unique,#唯一
	字段名 字段类型 default,#默认
	constraint 约束名 foreign key(字段名) references 主表(被引用列)
);

 注意:

约束类型是否可以起约束名
列级约束除外键可以之外其他均不可以不可以
表级约束除了非空和默认可以,但对主键无效

 注:列级约束可以在一个字段上追加多个,中间用空格隔开,没有顺序要求

 4、修改表时添加或删除约束
  ①非空

#添加非空
alter table 表名 modify column 字段名 字段类型 not null;
#删除非空
alter table 表名 modify column 字段名 字段类型 ;

  ②默认

#添加默认
alter table 表名 modify column 字段名 字段类型 default;
#删除默认
alter table 表名 modify column 字段名 字段类型 ;

  ③主键

#添加主键
alter table 表名 add [constraint 约束名] primary key(字段名);
#删除主键
alter table 表名 drop primary key;

  ④唯一

#添加唯一
alter table 表名 add [constraint 约束名] unique(字段名);
#删除唯一
alter table 表名 drop index 索引名;

  ⑤外键

#添加外键
alter table 表名 add[constraint 约束名] foreign key(字段名) references 主表(被引用列);
#删除外键
alter table 表名 drop foreign key 约束名;

 5、自增长列(标识列)
  ①特点:
   1️⃣不用手动插入值,可以自动提供序列值,默认从1开始,步长为1
    如果要更改起始值:手动插入值
    如果要更改步长:更改系统变量

set auto_increment_increment=;

   2️⃣一个表至多有一个自增长列
   3️⃣自增长列只支持数值型
   4️⃣自增长列必须为一个key

  ②创建表时设置自增长列

create table(
	字段名 字段类型 约束 auto_increment
);

  ③修改表时设置自增长列

alter tablemodify column 字段名 字段类型 约束 auto_increment;

  ④删除自增长列

alter tablemodify column 字段名 字段类型 约束;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值