1、数据定义语言DDL
1.1 操作数据库-DDL
创建数据库
create database 数据库名称;
创建数据库,并指定字符集
create database 数据库名称 character set 字符集名;
查询所有数据库的名称
show databases;
查询某个数据库的字符集:查询某个数据库的创建语句及字符集
show create database 数据库名称;
修改数据库的字符集
alter database 数据库名称 character set 字符集名称;
删除数据库
drop database 数据库名称;
使用数据库
use 数据库名称;
查询当前正在使用的数据库名称
select database();
查看数据库版本号
select version();
1.2 操作表-DDL
1.2.1 什么是表
表:table表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。
一个表包括行和列:
行:被称为数据/记录(data)
列:被称为字段(column)
每一个字段应该包括哪些属性?
字段名、数据类型、相关的约束。
1.2.2 字段名命名规范
只能是字母、数字、_、$组成。
不能以数字开头。
不能使用关键字和保留字。
不区分大小写。
不能使用-
1.2.3 数据类型
数据类型 |
说明 |
int |
整数类型,例如 : age、默认为int(11),但是不能存储11位 |
double |
小数类型,例如 : score double(5,2) 111.11 5为有效数字位数,2为小数点后位数 |
date |
日期,只包含年月日,yyyy-MM-dd |
datetime |
日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss |
timestamp |
时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值 |
varchar |
可变字符 name varchar(20) |
char |
不可变字符 name varchar(20) |
VARCHAR、CHAR
varchar:表示的长度可变的字符串。最大长度不能超过定义字段的时候长度。
char:长度固定。
name varchar(20):name 存贮数据的长度是20以内的,lisi 表示4个长度 ,zhangsan:8个长度 江一燕:3个长度
name char(20):lisi 当前的长度4,剩下的是空格 。
问题:char 的性能好。 varchar可以节省空间。通常时候,我们使用varchar。
使用char的情况。当某个字段的长度固定的时候,可以采用char。例如身份证号、性别、手机号。
1.2.4 创建表
语法:
create table 表名(
列名(字段名) 数据类型,
列名(字段名) 数据类型,
列名(字段名) 数据类型
...
);
示例:
create table student(
id int,
name varchar(20),
sex char(1),
birth date,
money double
);
注意事项:最后一列,不需要加逗号(,)
查看建表语句:
show create table student;
1.2.5 查询表
查询某个数据库中所有的表名称
show tables;
查询表结构
desc 表名;
1.2.6 修改表
添加列
语法:
alter table 表名 add 列名 数据类型 约束;
实例:
alter table student add classes varchar(10);
修改列类型
语法:
alter table 表名 modify 列名 新类型;
实例:
alter table student modify classes varchar(20);
修改列名和类型
语法:
alter table 表名 change 旧列名 新列名 新类型;
实例:
alter table student change classes class varchar(10);
删除列
语法:
alter table 表名 drop 列名;
实例:
alter table student drop class;
修改表字符集
语法:
alter table 表名 charset 字符集;
实例:
alter table student charset gbk;
修改表名
语法:
rename table 旧表名 to 新表名;
实例:
rename table student to stu;
1.2.7 删除表
直接删除表
语法:
drop table 表名;
实例:
drop table student1;
如果表存在就删除,不会报错
drop table if exists stu;
1.3 约束
1.3.1 约束概述
约束:规定,限制。限制表中列的内容。需要满足一定的规则。数据库中的约束:限制列的内容。
意义:保证数据的有效性和完整性。可以确保数据库满足业务规则。
1.3.2 约束类型
约束 |
说明 |
primary key |
主键约束:非空且唯一 |
unique |
唯一约束:某一列的值不能重复,但可以为空 |
not null |
非空约束:某一列的值不能为空 |
foreign key |
外键约束 |
check |
检查约束(MySQL无效) |
缺省 |
默认值 default |
auto_increment |
自增器,每一次+1 |
设计表的时候。
通常我们会新增一个字段(没有意义的字段)去做主键。不去做修改。
主键是int类型的,我们可以给他设置自动增长(假设插入一条记录的时候,主键没有认为的设置值。会自己顺序。去+1 生成新的内容,添加到主键这个字段中。),auto_increment
主键自增长:
id int primary key auto_increment;
唯一约束:不允许重复。 一个表里可以添加多个唯一约束。
列名 类型(长度)unique;
非空约束:不允许为空。 表示该列的内容不允许为空。
列名 类型(长度) not null,
唯一和主键约束的区别
1、唯一约束可以是空(null)。 但是主键约束不能为空
2、一张表中只能有一个主键,但是唯一约束可以有多个。
1.3.3 主键约束详解
列级约束
表级约束(联合主键)
1.3.4 唯一约束详解
列级约束
表级约束(联合约束)
1.3.5 外键约束详解
外键约束添加有表级约束和列级约束,但是在MySQL中列级约束无效果。
添加外键约束的字段只能取主表中关联的值。
创建外键约束时,只能关联表中带有唯一约束和主键约束的字段上。
为course表添加外键
测试外键情况
1.3.6 创建完表后,添加约束
添加非空约束
--语法
alter table 表名 modify 列名 类型 not null;
--举例
alter table stu modify name varchar(25) not null;
添加默认约束
--语法
alter table 表名 modify 列名 类型 default 值;
--举例
alter table stu modify sex char(1) default '男';
添加主键约束
--语法
alter table 表名 add primary key(字段名);
--举例
alter table stu add primary key(id);
添加唯一约束
--语法
alter table 表名 add unique(字段名);
--举例
alter table stu add unique(name);
添加外键约束
1) 主表不能删除从表已引用的数据
2) 从表不能添加主表未拥有的数据
3) 先添加主表数据再添加从表数据
4) 先删除从表数据再删除主表数据
5) 外键约束允许为空但不能是错的
主外键关系: 注意事项
前者:建立【实际的主外键关系】 和 后者:建立【逻辑主外键关系】 的区别?
前者有约束,必须按照外键约束来写
后者没有外键约束,但你不能写主键不存在
前者删除受主外键约束,后者删除不再受主外键约束
前者可能会造成级联删除, 后者不会造成级联删除
> 在实际开发中,一般不建立实际的外键关系,建立逻辑外键关系
> 在互联网公司中,不建立实际的外键关系,在实际传统行业中,需要建立实际的外键关系
--语法
alter table 表名 add constraint 外键标识 foreign key (列名) references 主表名(主表列名)
--举例
alter table scores add constraint scores_fk foreign key (stuId) references stu(id);
1.3.7 创建完表后,删除约束
删除非空约束
--语法
alter table 表名 modify 字段名 类型 null;
--举例
alter table stu modify name varchar(25) null;
删除默认约束
--语法
alter table 表名 modify 列名 类型 default null;
--举例
alter table stu modify sex char(1) default null;
删除主键约束
--语法
alter table 表名 drop primary key;
--举例
alter table stu drop primary key;
删除唯一约束
--删除前先设置唯一约束名为unique_name
alter table 表名 add constraint unique_name unique(字段名);
--举例
alter table stu add constraint unique_name unique(name);
--语法
alter table 表名 drop index 唯一约束名(unique_name);
--举例
alter table stu drop index unique_name;
删除外键约束
--语法
alter table 表名 drop foreign key (唯一约束名);
--举例
alter table scores drop foreign key fk_stuId;
1.3.8 给表添加约束
create table employee(
id int primary key auto_increment,
name varchar(32) not null unique,
gender varchar(10),
birthday date,
job varchar(30),
salary double not null
);
文章来源:https://www.toymoban.com/news/detail-794032.html
1.3.9 创建表添加注释
create table employee(
id int primary key auto_increment comment '编号',
name varchar(32) not null unique comment '姓名',
gender varchar(10) comment '性别',
birthday date comment '生日',
entry_date date comment '入职日期',
job varchar(30) comment '工作',
salary double not null comment '薪水'
);
文章来源地址https://www.toymoban.com/news/detail-794032.html
2、Navicat的安装与使用
到了这里,关于02--数据定义语言DDL的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!