数据是可识别的、抽象的可以鉴别的符号。不仅仅是文本,也可以是图片、音频、视频等。
因为用内存保存文件速度快但是不能永久保存;用文件保存可以永久保存,但是因为是IO操作,所以不方便查找。
所以学习专门存储数据的数据库来解决这样的问题。
数据库(Database,简称DB),就是存储数据的仓库。
数据库管理系统(Database Manage System,简称DBMS)
数据库管理员(Database Administrator,DBA)是指对数据库管理系统进行操作的人员,其主要负责数据库的运营和维护。
注意:工作中,两种类型都会用到
简单的说,关系型数据库就是用二维表来表示的一个数据组,即行与列之间的关系。
**优点:**易于维护(表格式一致)、使用方便(SQL语句通用)、复杂操作(可以用于较复杂的操作)
**缺点:**读写性能差、灵活度不够(表结构固定)、绕不开IO操作
非关系型数据库也称之为NoSQL(Not Only SQL)数据库,是一种数据结构化存储方法的集合,可以是文档或者键值对等。
**优点:**格式灵活(各种形式的数据都可以)、使用灵活、速度快(内存存储)、高扩展性
**缺点:**不支持SQL、结构复杂查询不便、只适合简单数据、不适合大量存储(内存)
DQL主要用于数据查询
select 、from 、where 、order by 、having
主要用于对数据的操作
DDL主要用针对是数据库对象(数据库、表、索引、视图)
DCL用来授予或回收访问数据库的权限
TCL用于数据库的事务管理。
注意:DML针对于表中的数据;DDL针对数据库对象
注意:char在写明长度后执行时就会分配相应长度; varchar则是实际用多少再分配多少,但两者都不可以超过规定的长度。
int可以超过指定长度,int会进行动态扩容
create table 表名(
字段1 数据类型,
字段2 数据类型(长度),
...........
字段n 数据类型
);
注意:最后一个字段不要加逗号,可以给字段的数据类型指定长度
-- 显示当前数据库的所有的表
show tables;
-- 显示某个表的结构 desc 表名
desc 表名;
-- 查看某个表完整的建表语句 show create table 表名
show create table 表名;
注意:操作表前先选中库 use 库名
-- 语法格式:
DROP TABLE 表名;
-- 删除当前数据库中的某个表 drop table 表名
drop table 表名;
-- 语法格式:
rename table 旧表名 to 新表名;
-- 语法格式:
alter table 表名 add 字段名称 字段类型;
-- 默认添加到末尾
alter table 表名 add 字段名称 字段类型 first;
-- 添加到第一个
alter table 表名 add 字段名称 字段类型 after表名 ;
-- 添加到age字段之后
2.4.3 修改表中字段
-- 语法格式:
alter table 表名 modify 字段名称 字段类型;(修改字段类型和长度)
-- 语法格式:
alter table 表名 change 旧字段名 新字段名 类型(长度); (修改字段名 )
注意:notify简单修改字段的类型和长度。
change可以修改为一个全新的字段
-- 语法格式:
alter table 表名 drop 字段名;
-- 语法格式:
-- 1. 插入部分或全部字段
insert into 表名(字段名1,字段名2,...,字段名n) values(值1,值2,...,值n);
-- 2. 插入全部字段
insert into 表名 values(值1,值2,...,值n);
-- 一次添加多条数据
insert into 表名 values(值1,值2,...,值n),(值1,值2,...,值n),(值1,值2,...,值n);
注意:
-- 语法格式
update 表名 set 字段1=值1,字段2=值2,...,字段n=值n where 条件;
update 表名 set 字段1=值1,字段2=值2,...,字段n=值n; -- 慎用:不加条件会修改所有的数据
注意:一定要加条件
-- 语法格式
delete from 表名 where 条件;
delete from 表名; -- 慎用:删除表中的所有数据
truncate table 表名; -- 慎用:删除表中的所有数据
delete与truncate都是删除所有的
delete属于DML命令 是一条一条删除
truncate属于DDL命令 相当于篡改建一个新表 相比效率更高
可以对表中的数据做一些限制, 从而保证数据的正确性, 有效性, 和完整性。
违反约束的不正确数据是无法插入到表中的。
-- 语法格式:
字段名 字段类型 primary key
-- 方式二
primary key(eid) -- 指定主键为eid字段
-- 方式三
-- 创建表时不指定主键, 然后通过DDL语句进行设置
alter table emp add primary key(eid);
-- 使用DDL 删除表中的主键约束
alter table emp drop primary key;
自己添加数据可能出现重复, 我们通常希望在每次插入新记录时, 数据库自动生成主键字段的值。
-- 语法格式:
关键字 auto_increment 表示自增长(字段类型必须为整数类型)
-- 语法格式:
字段名 字段类型 not null
-- 语法格式:
字段名 字段类型 unique
-- 语法格式:
字段名 字段类型 default '值'
字段名 字段类型 check(字段='值' or 字段='值')
字段名 字段类型 check(字段>n or 字段<m)
字段名 字段类型 check(字段>n and 字段<m)