- 存储在表中的数据是一种范例的数据,不同范例的数据应放到不同的表中,否则会使以后的检索和访问很困难。
- 数据库中的每个表都有一个名字,用来标识自己。此名字是唯一的, 这表现数据库中没有其他表具有雷同的名字。
- 表由一个或多个列构成。每一列存储一列特定的信息,列称为字段,每个列都有相应的数据范例。数据范例界说列可以存储的数据种类。例如,某一列中必要存储数字,该列的数据范例应该界说为数值范例。
数据范例
整型:无符号-unsigned
浮点型、定点型
日期时间范例
字符型
char 和 varchar 的区别:
char:固定长度
最大 255 字符
数据长度不敷会再尾部添补空格,查询时会自动去掉空格
服从高,占空间
varchar:长度可变
最大可设置 65535 字节
- insert into vc(v,c) values('ab ','ab ');
- select * from vc where v='ab '; # 能查到
- select * from vc where c='ab '; # 能查到
- select * from vc where v like 'ab '; # 能查到
- select * from vc where c like 'ab '; # 不能查到
复制代码 注:'=' 不是完全对等,'like' 可以表现完全对等
DDL(数据界说语言)
Data Definition Language, 用于界说和管理数据库中的对象和结构,如表、列、索引等。
创建表
- create table [if not exists] 表名(
- 字段1 字段类型 [列级约束条件],
- 字段2 字段类型 [列级约束条件],
- ...
- [表级约束条件]
- )
复制代码 注:最后一个字段背面不加“,”
查看表
表现数据库中的表
查看表的基本结构
查看数据库/表的创建语句
修改表
- alter table 表名
- add column 新列名 数据类型 [约束条件] first / after 列名;
复制代码 注:
first:添加到最前面(即第一列)
after 列名:添加到该列之后
- alter table 表名
- modify column 列名 数据类型 [约束条件];
复制代码
- alter table 表名
- modify column 列名 数据类型 first / after 列名;
复制代码
- alter table 表名
- change column 旧列名 新列名 数据类型;
复制代码
- alter table 表名
- drop column 列名;
复制代码 重命名表
- alter table 旧表名
- rename to 新表名;
复制代码 删除表
练习
DML(数据操作语言)
Data Manipulation Language,用于操作数据库中的实际数据,如插入、更新、删除和查询数据。
插入数据
插入完整的行,全部字段,每一个字段都必须提供一个值,如果某个字段没有值,应该使用NULL,每个字段必须以他们在表中界说的顺序给出。这种语法简朴,但是不安全,应该制止使用。
- insert into 表名
- values (字段1的值,字段2的值,...);
复制代码 更安全的方法是,在表名后的括号中给出字段名,values 中的值的顺序与前面给出的字段的顺序雷同,逐一对应。不必要与表中界说的顺序雷同,没有值的字段可以不提供。
- insert into 表名 (字段1,字段2,...)
- values (字段1的值,字段2的值,...);
复制代码
- values 背面可以跟多个括号,括号间用逗号分隔,每个括号代表要插入的一条数据
- 单条 insert 语句插入多条数据比多条 insert 语句快
更新数据
- update 表名
- set 字段1 = 字段1的值,字段2 = 字段2的值,...
- where 限制条件;
复制代码
- 注:记得加 where 限定条件,否则更新整个表中的每一条数据
删除数据
- delete from 表名
- where 限制条件;
复制代码
- 同样,不加限定条件会删除整个表中每一条数据
- 物理删除,无法恢复
- 注:在对 update 或 delete 使用 where 前,应该先用 select 语句举行测试保,证它的过滤效果是精确的
练习
约束
constraint
约束范例 | 非空约束 | 默认约束 | 唯一约束 | 主键约束 | 外键约束 | 关键字 | not null | default | unique | primary key | foregin key | 非空约束
创建表时设置非空约束
- create table 表名(
- 字段名 字段类型 not null,
- ...
- );
复制代码 已有字段添加非空约束
- alter table 表名
- modify column 字段名 字段类型 not null;
复制代码 删除非空约束(修改为允许为空)
- alter table 表名
- modify column 字段名 字段类型;
复制代码 注意:不要混淆 NULL 值和空串,NULL值是没有值,空串是“(两个单引号,中间没有字符)
默认约束
- create table 表名(
- 字段名 字段类型 default 默认值,
- ...
- );
复制代码 唯一约束
列级
- create table 表名(
- 字段名 字段类型 unique,
- ...
- );
复制代码 表级,可以给约束起名,可以创建多列的唯一约束(团结唯一约束)
- create table 表名(
- 字段1 字段类型,
- 字段2 字段类型,
- ...
- [constraint 约束名] unique(字段1,字段2)
- );
复制代码 已有字段添加唯一约束
- alter table 表名
- modify 字段名 字段类型 unique;
- alter table 表名
- add [constraint 约束名] unique(字段名);
复制代码 删除唯一约束
- alter table 表名
- drop index 约束名;
- alter table 表名
- drop key 约束名;
复制代码 主键约束
唯一标识表中每行的这个列(或这组列)称为主键。主键用来表现一个特定的行。没有主键,更新或删除表中特定行很困难,由于没有安全的方法保证只涉及相关的行。
因此:
- 每一个表都应该界说主键
- 主键的值不应该修改
- 不使用可能会修改值的列作为主键(与业务无关,通常使用id 作为主键)
特点:
- 唯一性:主键要求每一行数据的主键值都必须是唯一的,不允许有重复值。
- 非空性:主键要求主键列的值不能为空,即不能为 NULL
- 单一性:每个表只能有一个主键。主键可以由一个列或多个列构成,形成复合主键
列级
- create table 表名(
- 字段名 字段类型 primary key,
- ...
- );
复制代码 表级,可以给约束起名,可以创建多列的团结主键
- create table 表名(
- 字段1 字段类型,
- 字段2 字段类型,
- ...
- [constraint 约束名] primary key(字段1,字段2)
- );
复制代码 删除主键
- alter table 表名
- drop primary key;
复制代码 自动递增
auto_increment:设置 auto_increment 的列,当每增加一行时自动增量。每个表只允许一个 auto_increment 列。
- create table 表名(
- 字段1 字段类型 auto_increment
- );
复制代码 外键约束
外键为表中的某一字段,该字段是另一表的主键值,外键用来在两个表的数据之间建立联结,一个表中可以有一个或多个外键。外键的作用是保持数据的一致性、完整性。
注意:
外键字段可以为null,外键为空的数据也叫孤儿数据
有了外键引用之后,表分为父表和子表
- 创建表时先创建父表,再创建子表
- 插入数据时,先插入附表数据,再插入子表数据
- 删除时,先删除子表,再删除父表
子表外键范例要与父表外键范例一致
- [constraint 外键名] foreign key (列名) references 主表名 (主键);
复制代码 练习
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |