DDL命令及基础知识

目录

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整型:

类型大小范围(有符号)范围(无符号)用途
tinyint1B(-128,127)(0,255)极小整数值
smallint2B(-32768,32767)(0,65535)小整数值
mediumint3B(-8388608,8388607)(0,16777215)小正数值
int4B(-2147483648,2147483647)(0,4294967295)整数值
bigint8B(-9233372036854775808,9223372036854775807)(0,18446744073709551615)大整数值

3.2小数:

类型大小范围精度用途
float4B(-3.40E-38,3.40E+38)7位小数单精度浮点数
double8B15位小数双精度浮点数
decimal(M,D)17B30位小数大浮点数

3.3字符串:

类型大小范围用途
char(M)M0-255定长字符型
varchar(M)M+1B0-65535可变字符型
tinytextlength+2B0-255文本型
textlength+2B0-65535文本型(无默认值)
binary(M)M0-M0-M变长字符串
varbinary(M)M+1B0-M0-M变长字符串

3.4二进制:

类型大小范围用途
tinyblob255B0-255二进制对象
blob65K0-65KB二进制对象
mediumblob16M0-16M二进制对象
longblob4G0-4G

二进制对象

3.5日期和时间:

类型大小格式范围
year1BYYYY1901-2155
date3BYYYY-MM-DD1000-01-01 - 9999-12-31
time3BHH:MM:SS-835:59:59 - 835:59:59
timestamp4BYYY-MM-DD HH:MM:DD1970/1/1 0:00
datatime8BYYYY-MM-DD HH:MM:SS1000-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 
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值