02--数据定义语言DDL

1、数据定义语言DDL

1.1 操作数据库-DDL

创建数据库

sql 复制代码
create database 数据库名称;

创建数据库,并指定字符集

sql 复制代码
create database 数据库名称 character set 字符集名;

查询所有数据库的名称

sql 复制代码
show databases;

查询某个数据库的字符集:查询某个数据库的创建语句及字符集

sql 复制代码
show create database 数据库名称;

修改数据库的字符集

sql 复制代码
alter database 数据库名称 character set 字符集名称;

删除数据库

sql 复制代码
drop database 数据库名称;

使用数据库

sql 复制代码
use 数据库名称;

查询当前正在使用的数据库名称

sql 复制代码
select database();

查看数据库版本号

sql 复制代码
select version();

1.2 操作表-DDL

1.2.1 什么是表

表:table

表:table是数据库的基本组成单元,所有的数据都以表格的形式组织,目的是可读性强。

一个表包括行和列:

行:被称为数据/记录(data)

列:被称为字段(column)

每一个字段应该包括哪些属性?

字段名、数据类型、相关的约束。

1.2.1 数据类型

|-----------|-----------------------------------------------------------------------------|
| 数据类型 | 说明 |
| int | 整数类型,例如 : age |
| double | 小数类型,例如 : score double(5,2) 111.11 |
| 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.2 创建表

语法:

sql 复制代码
create table 表名(
  列名(字段名) 数据类型,
  列名(字段名) 数据类型,
  列名(字段名) 数据类型
  ...
);

示例:

sql 复制代码
create table student(
	id int,
  name varchar(20),
  sex char(1),
  birth date,
  money double
);

**注意事项:**最后一列,不需要加逗号(,)

查看建表语句:

sql 复制代码
show create table student;

1.2.3 查询表

查询某个数据库中所有的表名称

sql 复制代码
show tables;

查询表结构

sql 复制代码
desc 表名;

1.2.4 修改表

添加一列

sql 复制代码
语法:
    alter table 表名  add 列名 数据类型 约束;
实例:
    alter table student add classes varchar(10);

修改列类型

sql 复制代码
语法:
    alter table 表名 modify 列名 新类型;
实例:
    alter table student modify classes varchar(20);

修改列名和类型

sql 复制代码
语法:
    alter table 表名 change 旧列名 新列名 新类型;
实例:
    alter table student change classes class varchar(10);

删除指定列

sql 复制代码
语法:
    alter table 表名 drop 列名;
实例:
    alter table student drop class;

修改表字符集

sql 复制代码
语法:
    alter table 表名 charset 字符集;
实例:
    alter table student charset gbk;

修改表名

sql 复制代码
语法:
    rename table 旧表名 to 新表名;
实例:
    rename table student to stu;

1.2.5 删除表

sql 复制代码
直接删除表
    语法:
        drop table 表名;
    实例:
        drop table student1;

如果表存在就删除,不会报错

sql 复制代码
drop table if exists stu;  

1.3 约束

1.3.1 约束概述

约束:规定,限制。限制表中的内容。需要满足一定的规则。数据库中的约束:限制列的内容。

意义:保证数据的有效性和完整性。可以确保数据库满足业务规则。

1.3.2 约束类型

|----------------|------------------------|
| 约束 | 说明 |
| primary key | 主键约束:非空且唯一 |
| unique | 唯一约束 : 某一列的值不能重复,但可以为空 |
| not null | 非空约束 : 某一列的值不能为空 |
| foreign key | 外键约束 |
| 缺省 | 默认值 |
| 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 创建完表后,添加主键

sql 复制代码
alter table student add primary key(id);

1.3.5 给表添加约束

sql 复制代码
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
);

1.3.6 创建表添加注释

sql 复制代码
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 '薪水'
);
相关推荐
海奥华26 小时前
mysql索引
数据库·mysql
2601_949593657 小时前
深入解析CANN-acl应用层接口:构建高效的AI应用开发框架
数据库·人工智能
javachen__7 小时前
mysql新老项目版本选择
数据库·mysql
Dxy12393102167 小时前
MySQL如何高效查询表数据量:从基础到进阶的优化指南
数据库·mysql
Dying.Light7 小时前
MySQL相关问题
数据库·mysql
蜡笔小炘7 小时前
LVS -- 利用防火墙标签(FireWall Mark)解决轮询错误
服务器·数据库·lvs
韩立学长8 小时前
基于Springboot泉州旅游攻略平台d5h5zz02(程序、源码、数据库、调试部署方案及开发环境)系统界面展示及获取方式置于文档末尾,可供参考。
数据库·spring boot·旅游
Re.不晚8 小时前
MySQL进阶之战——索引、事务与锁、高可用架构的三重奏
数据库·mysql·架构
老邓计算机毕设8 小时前
SSM智慧社区信息化服务平台4v5hv(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
数据库·ssm 框架·智慧社区、·信息化平台
麦聪聊数据9 小时前
为何通用堡垒机无法在数据库运维中实现精准风控?
数据库·sql·安全·低代码·架构