目录
数据库概念和sql语句
数据库的分类:
关系型mysql
·mysql数据库的存储引擎
编辑
面试题:
SQL语言分类
编辑
DDL(CREATE、DROP、ALTER)
1、创建数据库
2、创建表
3、修改表
4、改变表的列名
5、添加新的列
6、修改表类型
DML(INSERT、DELETE、UPDATE、SELECT)
1、表中插入内容
2、删除表的行
编辑
3、修改表中内容
4、查看表
编辑
5、内容去重
6、截取行
6种常用的约束
1、只是复制表结构,不复制数据
2、将liu2表中的数据插入到test表中,两个表数据结构要一致。
3、创建一张表test1,数据从liu1来,两个表数据结构要一致。
4、清空表中的数据
5、添加主键
6、添加外键
7、删除主键
8、删除索引关系
9、删外键
11、删索引
12、改变表的数据类型
13、为空默认
14、创建临时表
数据-----数:数字信息 据:属性 对一系列对象的具体属性的描述的集合。
数据库:数据库就是用来组织(各个数据之间是有关联的,是按照规则组织起来的),存储和管理(对数据的增删改查)数据的仓库。
数据库是企业的重要的信息资产,在使用数据库时要注意(删,改)
数据库管理系统(DBMS):实现对数据库的有效组织,管理和存取的软件系统。
mysql: 系型数据库
redis:非关系型数据库 es。
····关系型数据库: mysql中小类型的数据并发请求,oracle(大数据还是用它),sql-server mariaDB postgresql。
关系型数据库当中,表里面的数据是关联的,表和表之间的数据也是关联起来。
····非关系型数据库:保存不是一张表格,key---->value 键值对来保存数据。
redis 缓存性的数据库
es:索引型数据库
文档型:MongDB
既然有关联,查询速度相对来说,关系型数据查询速度更慢一些。非关系型数据库可以支持高并发读写。对海量数据依旧保持着高效率的存储访问。
数据库是一个系统,是一个人机系统,硬件、os、数据库、DBMS和数据库进行操作。
关系型数据库:存储数据的结构是一个二维表格
表: 行列
行: 记录,用来描述一个对象信息
列: 字段,用来描述对象的一个属性。
5.5之前:MYISAM,不支持事务和外键的存储引擎。适用读的多,写的少
5.6之后:Innodb,可以支持事务,外键,行级锁定的存储引擎。支持高并发性能的应用。
事务:数据库当中,一个或多个操作组成数据操作的序列。
这些操作要么全部成功,失败一个就全部不执行。确保数据一致性和完整性。
事务的特点: 原子性。数据库最小工作单元,要么全部执行成功,要么全部不执行,只要有一个操作失败,整个执行的序列都就被回滚。完成的操作也会被撤回。
一致性 | 事务执行前后,数据库的完整性不能被破坏。只有满足所有的约束条件情况下,事务能被提交。 |
隔离性 | 事务的执行是相互隔离。一个事物的执行不能受到其他执行事务的干扰。并发事务之间互相隔离。防止数据不一致的情况发生。 |
持久性 | 事务一旦提交,他所做的所有修改会被永久的保存在数据库中。即使系统崩坏,提交的数据也不会丢失。 |
数据库专业名词
数据库 | databases |
表 | table 行:row 列:column |
索引 | index |
试图 | view |
存储过程 | procedure |
触发器 | trigger |
用户 | user |
权限 | privilege |
msql的语句的规范
在数据库系统中,sl不区分大小写,但是建议大写。语句不区分,但是表名是时严格区分大小写。
关键词不能跨行或者简写
mysql可以单行书写也可以多行书写,默认以 ; 结尾
数据库的命名规则
必须已字母开头,后面可以包含数据,特殊字符: # _ $
不要使用MySQL的保留字 : table select
数据库名 表名 用户名严格区分大小写。
数据库的字符类型
字符串用单引号
int | 4个字节,存储整数 |
varchar | 可变长度的字符类型,存储可变长磨的字符串。(无限制的可以随便写,也要根据类型的长度。) |
char | 只能存储固定长度的字符串 |
float(m,d) | 单精度浮点 存储浮点数,m表示总位数,d:表示小数位 |
double(m,d) | 双精度浮点数,存储浮点数, M也是总位置,d:表示小数位 |
text | 用于存储大文本数据,文档,或者长字符串 |
image | 二进制存储图像,图片,多媒体 |
decimal(5,2) | 用于存储固定精度的小数,其中5表示总位数,2表示小数点后2位。 |
date | 存储日期 yyyy-mm-dd |
datetime | 存储日志yyyy-mm-dd hh:yy:dd |
timestamp | 和datatime 格式一样 ,可以自动的更新为当前的时间戳 |
char 无论你是否定义了值,都会占用固定长度的字节大小。
varchar :在保存时,varchar 实际长度是5 就占用5个,加一个隐藏符,6个
varchar 比 char 节省磁盘空间,但varchar读写速度比char慢
企业常见架构
多表关联,最多可以关联几张表?
最多三张表
DDL | 数据定义语言,用于创建数据库对象,如库、表、索引等 |
DML | 数据操纵语言,用于对表中的数据进行管理 |
DQL | 数据查询语言,用于从数据表中查找符合条件的数据记录 |
DCL | 数据控制语言,用于设置或者更改数据库用户或角色权限 |
格式:use 数据库名;
格式:create database 数据库名;
格式:create table 表名 (属性名 字符类型 空/非空), primary key(属性名));
非空要声明 primary key(属性名)设置主键:唯一性
格式:alter table 旧表名 rename 新表明;
格式:alter table 表名 change 修改表的列名 修改成的列名 字符类型;
格式:alter table ky32 add 列名;
格式:alter table 表名 modify column 列名 修改类型;
格式:insert into 表名(属性名1,属性名2,属性名3) values (属性内容,属性内容,属性内容);
内容与属性名一一对应
格式:insert into 表名 values (属性内容,属性内容,属性内容);
内容与表中属性从左到右一一对应
格式:delete from 表名 where 删除的判断条件;
格式:update 表名 set 属性名=修改的内容 where 判断条件;
update 表名 set 属性名=password(' ') where 判断条件;
格式:select 查看列 from 表名; (* 表示所有) ;
格式:select distinct 属性名 from 表名;
格式:select * from 表名 limit 数字;
·只显示前两行
select * from liu1 limit 2;
·只显示2-5行
select * from liu1 limit 1,4;
1、主键约束,用于唯一标识表中的每一行,主键列的值必须是唯一而且不能为空,一个表只能有一个主键
2、外键约束,用于建立表于表的关系,一般是和另一张表的主键关联。保证数据应用的完整性。一个表可以有多个外键。
3、非空约束,not null 必须要有一个值。
4、唯一约束unique,确保列中的所有值的唯一性,类似于主键,但是可以为空,而且一个表可以有多个唯一约束。
5、默认值约束: default,在插入表数据时,如果没有定义值,会提供一个默认值.
6、自增约束:每行自动生成一个唯一标识。通常和主键在一起使用。
if not exists test: test表不存在,才会创建
ZEROFILL 自动填充位置 定义int(4) 输入1 自动生成0001
auto_increment 表示该字段自增长,默认从1开始
primary key 当前表的主键,主键只能有一个且唯一,不能为空
unique key 唯一性的约束,可以为空
格式:CREATE table 新表名 like 复制表名;
格式:insert into 新表名 select * from 复制表名;
格式:create table 新表名 (select * from 复制表名);
delete truncate drop
格式:delete from 表名;
一行一行的删除;如果表中有自增长列清空所有记录之后,再次添加内容,会从原来的记录之后继续自增长写入
格式:truncate table 表名;
清空表,把表结构重新建立。速度比delete块,表回到全新的状态
格式:drop table 表名;
删除表
格式:alter table 表名 add primary key(属性名);
格式:alter table 表名 add foreign key (索引属性名) references 主表名 (索引属性名);
格式:alter table 表名 drop primary key;
格式:show create table 表名;
格式:alter table 从表名 drop foreign key 外键名;
格式:alter table 从表名 drop index 索引的属性名;
格式:alter table 从表名 modify 属性名 字符类型;
格式:address varchar(50) default '地址不知道',
一般用于调试,而且临时表示创建之后在表目录当中是不显示的连接退出之后,
临时表会被销毁。而且临时表无法创建外键
create temporary table test3 (
id int(4) primary key,
name char(4),
sex char(2)
);
insert into test1 values (1,'张三','男');
desc test2; 查看临时表