目录

1.标识符规则

2.表的基础知识

3.数据类型的基础知识

4.约束

4.1.主键约束

4.2非空约束

4.3默认值约束

4.4自增长约束

4.5唯一约束

4.6检查约束

4.7外键约束

5.数据库操作

6.表操作

小结


1.标识符规则

-- 所谓标识符规则指:
-- 第一个字符必须是下列字符之一:
-- a) Unicode 标准 3.0 所定义的字母(包括拉丁字母 a-z 和 A-Z,
-- 以及来自其它语言的字母字符)。
-- b) 下划线 (_)、at 符号 (@) 或者数字符号 (#)
-- 后续字符可以是:
-- a) Unicode 标准 3.0 所定义的字母。
-- b) 来自基本拉丁字母或其它国家/地区脚本的十进制数字。
-- c) at符号(@)、美元符号 ($)、数字符号或下划线。
-- d) 标识符不能是所用RDBMS的保留字,如create, drop, insert, delete, update, alter,
-- select, return, use, grant, revoke等。
-- 如果一定要用保留字,再命名的时候加上飘点 `return`
-- e) 不允许嵌入空格或其它特殊字符。
-- 大小写不敏感 

2.表的基础知识

2.1.关系型数据库中存放数据的结果,也成为关系。

2.2.关系包括:行和列,行是由列来组成;行也称为实体或记录,列也称为属性或字段。

3.数据类型的基础知识

3.1整型:

类型 大小 范围(有符号) 范围(无符号) 用途
tinyint 1B (-128,127) (0,255) 极小整数值
smallint 2B (-32768,32767) (0,65535) 小整数值
mediumint 3B (-8388608,8388607) (0,16777215) 小正数值
int 4B (-2147483648,2147483647) (0,4294967295) 整数值
bigint 8B (-9233372036854775808,9223372036854775807) (0,18446744073709551615) 大整数值

3.2小数:

类型 大小 范围 精度 用途
float 4B (-3.40E-38,3.40E+38) 7位小数 单精度浮点数
double 8B 15位小数 双精度浮点数
decimal(M,D) 17B 30位小数 大浮点数

3.3字符串:

类型 大小 范围 用途
char(M) M 0-255 定长字符型
varchar(M) M+1B 0-65535 可变字符型
tinytext length+2B 0-255 文本型
text length+2B 0-65535 文本型(无默认值)
binary(M) M 0-M 0-M变长字符串
varbinary(M) M+1B 0-M 0-M变长字符串

3.4二进制:

类型 大小 范围 用途
tinyblob 255B 0-255 二进制对象
blob 65K 0-65KB 二进制对象
mediumblob 16M 0-16M 二进制对象
longblob 4G 0-4G

二进制对象

3.5日期和时间:

类型 大小 格式 范围
year 1B YYYY 1901-2155
date 3B YYYY-MM-DD 1000-01-01 - 9999-12-31
time 3B HH:MM:SS -835:59:59 - 835:59:59
timestamp 4B YYY-MM-DD HH:MM:DD 1970/1/1 0:00
datatime 8B YYYY-MM-DD HH:MM:SS 1000-01-01 00:00:00 - 9999-12-31 23:59:59

4.约束

约束就是一种限制,通过对定义表进行约束,可以保证表里面的数据符号数据完整性的要求。(数据完整性:实体完整性:对行的约束;域完整性:针对列;参照完整性:针对表;自定义完整性:使用触发器来定义完整性)

4.1.主键约束

4.1.1定义:表中有一列或几列的组合的值能用来唯一的标识表中的每一行,这样一列或多列的组合叫做表的主键;本质上,主键就是一列或几列的组合。一个表只能有一个主键。

4.1.2定义主键

  • 在建表的时候,在字段类型后加上:primary key,就表示这个字段是主键;
  • 如果要使用多个字段作为主键:在定义表的最后一行,使用:primary key(字段1,字段2,...);
  • alter table 表名 add primary key (字段名);。

4.1.3主键的特征

  1. 一个表中只能由一个主键,主键约束确保了表中的行是唯一的;
  2. 表中可以没有主键,但是通常情况下应当为表设置一个主键,且主键不能为空置(null)。

4.1.4主键选择的原则

  1. 最少性:尽量选择一个字段作为主键
  2. 稳定性:尽量选择数值更新较少的字段作为主键
  3. 去业务性:尽量不选择具备业务含义的列作为主键,例如:身份证,电话号码...

4.2非空约束

4.2.1定义:将一个字段定义为非空 not null。

4.2.2作用:非空约束的字段在插入数据的时候,不允许插入空值。

4.2.3定义非空

  • 在建表的时候,在字段类型后加上:not null,就表示这个字段受非空约束;
  • alter table 表名 modify 列名 数据类型 not null;。

4.2.4注意事项:非空字段可以使用默认值来避免数据为空时抛出异常

4.3默认值约束

4.3.1定义:给一个字段赋予默认值,当向表中插入数据的时候,如果该字段没有给值,mysql就会使用默认值。

4.3.2定义默认值

  • 在建表的时候,在字段类型后加上:default  默认值;
  • alter table 表名 modify 列名 数据类型 not null default 默认值;。

4.4自增长约束

4.4.1概念:字段的值会自动递增

4.4.2定义自增长

  • 在建表的时候,在字段类型后加上:auto_increment;
  • alter table 表名 modify 列名 数据类型 auto_increment;。

4.4.3注意事项

  1. 一张表中只能有一个字段是自增长约束
  2. 自增长字段的类型必须是整数
  3. 自增长可以和primary key合用

4.5唯一约束

4.5.1概念:唯一约束可以使字段的值保持唯一,与同列其他的值区分开来。

4.5.2定义唯一

  • 在建表的时候,在字段类型后加上:unique;

4.6检查约束

4.6.1概念:检查某一列的值,是否是自己规定的值,如果不是将抛出异常。

4.6.2定义检查

  • 在建表的时候,在字段类型后加上:set(值,值2,值3...);
  • 在建表的时候,在字段类型后加上:enum(值1,值2,值3...);

4.6.3注意事项

  1. set可以多选
  2. enum只能选一个

4.7外键约束

4.7.1概念:外键是从表中对应于主表中主键的列,称为外键或引用键。

4.7.2作用:外键用来建立主表与从表的关联关系,为两个表的数据建立联系,约束两个表中数据的一致性和完整性。

4.7.3外键约束

  1. 主表的主键发生变化的时候,这个变化要满足外键的限制。
  2. 约束的行为:修改、删除。
  3. 约束的方式:禁止主表对主键进行删除或修改(restrict,no action(innodb支持))、从表的外键跟随主表的主键同步变化(cascade)、把从表的外键设置为空(set null)(如果外键本身有非空约束,这个命令就无法完成)

4.7.4定义外键约束

  • 在建表的时候,foreign key (外键名) references 主表名(主键) [on update|delete cascade|restrict|set null|no action]
  • alter table 从表名 add constraint 外键名称 foreign key (外键名) references 主表名(主键) [on update|delete cascade|restrict|set null|no action]。
  • 如果不写on字句,默认的约束方式:restrict。

5.数据库操作

1.创建数据库

CREATE DATABASE [IF NOT EXISTS] 数据库名 [CHARACTER set 'utf8'];
create database [if not exists] 数据库名 [character set 'utf8'];
-- 其中:数据库名在服务器中必须是唯一的,并且符合标识符规则。

2.修改数据库字符集

ALTER DATABASE 数据库名 CHARACTER SET = charset_name;
alter database 数据库名 character set = charset_name;

字符集决定了数据库是否能够正常保存和显示非ASCII码字符。通常情况下,为了更好的兼容性,建议使用 UTF8MB4,可以保存世界各国的文字,不会出现乱码。

3.删除数据库

DROP DATABASE [if exists] 数据库名;
drop database [if exists] 数据库名;

这是一条危险的命令,使用前,请务必确认数据库的确可以被删除。

6.表操作

创建表

CREATE TABLE 表名( 列名 数据类型 约束, 列名 数据类型 约束 )
[ENGINE = engine_name | [DEFAULT] CHARACTER SET [=] charset_name];
-- 列的数据类型决定了什么样的数据可以存储在列中,而列的约束定义了创建列时的限制条件。
create table 表明( 列名 数据类型 约束, 列名 数据类型 约束 )
[engine = engine_name | [default] character set [=] charset_name];
-- 其中,表名在一个数据库中必须是唯一的,并且符合标识符规则。列名在一个表内必须是唯一的,并且符合 标识符规则。
-- engine 表示数据表的引擎,innodb、mysiam
-- charset_name:utf8,GBK

查看表

SHOW TABLES; -- 显示当前数据库中的表
DESC <表名>; -- 查看表结构 

复制表

CREATE TABLE 新表名 LIKE 被复制表名; -- 复制一张表的结构
CREATE TABLE 新表名 AS ( sql 语句);  -- 复制一张表结构及内容

修改表

alter table 表名 rename [TO|AS] 新的表名;  -- 重命名表
alter table 表名 change 旧列名 新列名 类型; -- 修改列名及列类型
alter table 表名 drop 列名;                -- 删除一列
alter table 表名 drop primary key;         -- 删除主键
alter table 表名 add 新增列名 类型;          -- 为表添加一个新列
alter table 表名 add primary key (字段名); -- 添加一个主键
alter table 表名 modify 列名 类型;         -- 只修改列类型 a
alter table 表名 modify 列名 数据类型 not null; --添加非空约束
alter table 表名 modify 列名 数据类型 not null default 默认值; --添加默认值

删除表

DROP TABLE ; --删除某张表,同时删除数据和表结构
TRUNCATE TABLE ; --删除某张表,仅删除数据 此时使用 desc 查看表的描述信息可以发现,使用drop 删除的表会提示该表不存在,而使用truncate删除的 表还可以查看其表结构。 

临时表

临时表是直接在内存中创建的表,处理速度极快,但是一旦连接断开或者重启数据库,该表将会自动消失, 并不会永久保存。通常用于一些特殊的临时操作,结合游标和存储过程使用效果更好。

CREATE TEMPORARY TABLE temp_class;

当创建了临时表后,可以尝试再创建一张同名的表,看看是否会报错。或者为该表插入几行数据,看看能不 能通过SELECT语句进行查询就可以知道临时表是否创建成功。

小结

  • SQL语句中DDL主要用于针对库,以及针对表结构进行操作。
  • 创建库使用create database,而创建表则使用create table。
  • 表的常见操作包含查看、复制、修改、删除,对应的关键字分别是show|desc、create、alter、 drop|truncate

DDL命令及基础知识相关推荐

  1. 命令行curl上传文件_命令行基础知识:使用cURL下载文件

    命令行curl上传文件 Client URL, or simple cURL is a library and command-line utility for transferring data b ...

  2. MySQL基础命令和基础知识

    MySQL数据库简介 数据库相关概念 名称 全程 简称 数据库 存储数据的仓库,数据是有组织的进行存储 DataBase(DB) 数据库管理系统 操纵和管理数据库的大型软件 DataBase Mana ...

  3. pop3 postfix 命令_Email基础知识: SMTP/POP3 命令简介

    telnet 192.168.0.1 25 --------------------------------------- 使用 telnet 命令连接服务器 25 端口 Trying 192.168 ...

  4. linux之find命令,Linux基础知识之find命令详解

    在运维人员操作系统时,要接触大量的文件,为了避免忘记文件存放位置的尴尬,就需要我们有一种文件查找工具的帮忙,下面是两个文件查找工具的详解,locate以及find,分别分享给大家. 第一款工具: Lo ...

  5. kafka 命令重新启动_命令行基础知识:关闭和重新启动

    kafka 命令重新启动 When you're in the same room as a server, shutting it down or rebooting it is simple. Y ...

  6. 命令行 上下箭头符号_命令行基础知识:符号链接

    命令行 上下箭头符号 Symbolic links allow you to links files and directories to other files and directories. T ...

  7. 【Java从0到架构师】Linux 基础知识、常用命令

    Linux 基础知识.常用命令 Linux 基础知识 内核和发行版 常见的 Linux 发行版 Linux 的应用领域 Linux 与 Windows 的区别 Linux 常用命令 *系统目录结构 s ...

  8. linux pushd 不起作用,Linux命令行导航提示:pushd和popd命令的基础

    在本系列的第一部分中,我们通过讨论cd- command的用法来关注Linux中的命令行导航方面. 还讨论了一些其他相关点/概念. 进一步讨论,在本文中,我们将讨论如何使用pushd和popd命令在L ...

  9. linux 基础知识及命令总结

    1.mkdir   创建目录 -p 创建多级目录  mkdir -p /data/test -m, --mode=模式 设置权限模式(类似chmod),而不是rwxrwxrwx 减umask -p, ...

最新文章

  1. ThinkPHP 3.2 vendor()方法的深入研究及Phpqrcode的正确扩展
  2. innobackupex自动备份脚本
  3. [Oracle]构筑TDE 环境的例子
  4. HDU 1232 -畅通工程(并查集)
  5. python字符串前加r、f、u、l 的区别
  6. 排序算法之low B三人组
  7. java开发微信二维码
  8. jquery全选,jquery全不选,jquery反选
  9. c++ 写x64汇编 5参数_怀念9年前用纯C和汇编写的入侵检测软件
  10. python调用百度语音实时转为文字_百度语音转文字 (Python)
  11. 递归--练习6--noi1755菲波那契数列
  12. 为storyBoard面板中添加圆角属性(添加自定义的属性)
  13. 10.企业应用架构模式 --- 数据源架构模式
  14. Token 的生成 和 验证
  15. jmeter下载地址
  16. 【Spark Mllib】决策树,随机森林——预测森林植被类型
  17. 暑期作息时间表模板_最新暑假作息时间表excel模板-暑假作息时间模板
  18. 高等数学:第八章 多元函数的微分法及其应用(6)微分法在几何上的应用
  19. 睿智的目标检测32——TF2搭建YoloV4目标检测平台(tensorflow2)
  20. 18年ACM赛后总结

热门文章

  1. 华为手机(Android系统)备忘录转移至iOS
  2. 微信加入群聊的测试设计点
  3. Rosalind Java|Inferring mRNA from Protein
  4. 网络请求(四)Retrofit实战——金山词霸查词API遇到的问题
  5. LeetCode刷题 876链表的中间结点
  6. Elasticsearch的这几个概念你还不知道啥意思呢?
  7. 记一次解决500错误
  8. fgo怎么把new去掉_fgo命运冠位指定国服NEWYORK2020无限池活动介绍
  9. Java生成XML数字签名
  10. Python黑帽子-黑客与渗透测试编程之道