MySQL— —01【基础知识】

MySQL

SQL: 对数据库进行查询和修改的语言,SQL的含义是结构化查询语言(Structured Query Language)。SQL主要有三个标准:①ANSI ②SQL92 ③SQL99

1、SQL分类

SQL语言主要分为四大类:
(1)DDL(Data Definition Language)数据定义语言:drop、create、alter等
(2)DML(Data Manipulation Language)数据操作语言:insert、update、delete
(3)DQL(Data Query Language)数据查询语言:select
(4)DCL(Data Control Language)数据控制语言:grant、revoke、commit、rollback等

2、数据库接口

不同的程序设计语言会有不同的数据库访问接口,程序语言通过这些接口执行SQL语句,进行数据库管理。主要的数据库访问接口有ODBC、JDBC、ADO.NET和PDO【PHP】

3、常用数据类型

》常用基本数值类型:

类型 大小 用途
INT或INTEGER 4Byte 大整数值
BIGINT 8Byte 极大整数值
FLOAT 4Byte 单精度浮点型
DOUBLE 8Byte 双精度浮点型
DECIMAL 小数值

》日期时间类型:
表示时间值的日期和时间类型为DATETIME、DATE、TIMESTAMP、TIME和YEAR

类型 大小 格式 用途
DATE 3 YYYY-MM-DD 日期值
TIME 2 HH:MM:SS 时间值或持续时间
YEAR 1 YYYY 年份值
DATETIME 8 YYYY-MM-DD HH:MM:SS 混合日期和时间值
TIMESTAMP 4 YYYY-MM-DD HH:MM:SS 混合日期和时间值,时间戳

》字符串类型

类型 大小 用途
CHAR 0-255 Byte 定长字符串
VARCHAR 0-65534Byte 变长字符串
BLOB 0-65534Byte 二进制形式的长文本数据
TEXT 0-65534Byte 长文本数据

4、数据库基本操作

4、1 创建数据库(以example_db为例)

(1)查看当前mysql的所有数据库

show databases;

(2)创建数据库example_db

create database example_db;

(3)查看数据库定义

show create database example_db;

4、2 删除数据库

drop database example_db;

4、3 InnoDB表【面试题】

面试题目:InnoDB和MyISAM区别
区别

① InnoDB支持事务,MyISAM不支持事务。(MySQL将默认存储引擎从MyISAM变成InnoDB的重要原因)
②InnoDB支持外键,MyISAM不支持
③InnoDB是聚集索引,MyISAM是非聚集索引。
InnoDB:聚簇索引的文件放在主键索引的叶子节点上,因此InnoDB必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。
MyISAM:非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。
④InnoDB不保存表的具体行数,执行select count(*) from table时候,需要全表扫描。而MyISAM用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度更快。
⑤InnoDB最小的锁粒度是行锁,MyISAM最小的锁粒度是表锁。一个更新语句会锁住整张表,导致其他查询和更新都会被阻塞,因此并发访问受限。(MySQL改变默认存储引擎重要原因之一)

【修改表的存储引擎】:ALTER TABLE student ENGINE=MyISAM;

5、表的基本操作

5、1 创建表

=》创建表之前,先选择数据库(如:use example_db;)

CREATE TABLE TAB_NAME(
 字段1 类型 约束 默认值,
 字段2 类型 约束 默认值,
 字段n 类型 约束 默认值
)
-- sql语句不区分大小写

5、2 表约束

1.数据完整性

数据的完整性是指数据的可靠性和准确性
1)实体完整性:主键的完整性
2)域完整性:限制数据类型,格式,可能值范围
3)引用完整性:不能引用不存在的值,如果一个键值更改了,那么在整个数据库中,对该键值的引用要进行一致的更改
4)自定义完整性:用户自定义的业务规则

四种完整性约束:

  • 实体完整性:唯一约束、主键约束、标识列
  • 域完整性:限制数据类型、外键约束、默认值、非空约束
  • 引用完整性:外键
  • 自定义完整性:过程、触发器等

2.约束

  • NOT NULL 非空
  • UNIQUE 唯一
  • PRIMARY KEY 主键
  • FOREIGN KEY 外键
  • CHECKED 检查(mysql不支持的)
  • 默认值

易错:

  • 外键:用来在两个表的数据之间建立连接,可以是一列或多列,一个表可以有多个外键。一个表的外键可以为空值,若不为空值,则每一个外键必须等于另一个表中主键的某个值。

外键:首先它是表中的一个字段,虽然可以不是本表的主键,但是要对应另一个表的主键。外键的主要作用是保证数据引用的完整性,定义外键后,不允许删除在另一个表中具有关联关系的行。外键的作用是保证数据的一致性、完整性。例如:部门表tb_dept的主键是id,在员工表tb_emp中有一个键deptId与这个id关联。

主键选取原则:最少更新原则、最少列原则、无业务意义

备份表:

-- 备份表结构,不要数据
create table stu_bak as select * from students where 1 != 1;

-- 设置外键
--alter table 子表 add constraint 约束名 foreign key (外键) 主表(主键);
alter table employee add constraint fk_emp_dept foreign key (dept_id) references dept(deptid);

你可能感兴趣的:(MySQL,mysql,数据库)