文章目录

  • 初识MySQL
  • 1. 了解主流的数据库和数据库分类
  • 1.1 数据库概念
  • 1.2 数据库的分类
  • 1.3 主流数据库
  • 2. 了解常用的数据库命令
  • 2.1 数据库服务器的组成
  • 2.2 SQL介绍
  • 2.3 数据库相关操作命令
  • 3. 熟悉数据表操作的语句/命令
  • 3.1 创建数据库表
  • 3.2 查看数据库中的数据表
  • 3.3 删除数据库
  • 2.DML
  • 1.修改表
  • 2.主键和外键
  • 1.主键:
  • 2.外键
  • 数据修改 UPDATE
  • 数据删除 DELETE


初识MySQL

1. 了解主流的数据库和数据库分类

1.1 数据库概念

数据库:按照数据结构来组织、存储和管理数据的一种建立在计算机存储设备上的仓库。

数据库的优势:

  1. 可以持久化存储大量的数据、方便我们进行检索
  2. 可以保证数据的安全和数据的一致性(事务…)
  3. 可以很轻松的通过数据库来提取出新的有效信息(计算平均分、统计人数)

1.2 数据库的分类

RDB(Relational DataBase)关系型数据库

性能方面 关系型数据库受限于技术实现,所以有瓶颈。

但是它在安全方面比较可靠。(事务支持好)

NoSQL(Not only SQL)不仅仅是SQL 非关系型数据库

文档型数据库

键值对数据库 key value

图形数据库

它这种概念正式兴起于web2.0时代 2006-2009… 它的性能非常优异 。

但是它的安全方面要比较差。

RDB(主) + NoSQL(副)

1.3 主流数据库

RDB:

MySQL   Oracle   SQLServer PostgreSQL MariaDB SQLlite.....

NoSQL:

Redis   Memcached   MongoDB  HBase   Solr   ElasticSearch....`

2. 了解常用的数据库命令

2.1 数据库服务器的组成

数据库是基本单位

数据表是数据库的基本单位

例如:我们需要开发一个小说阅读器,它需要存储小说、分类、用户…信息。

创建一个小说阅读器的数据库:sun_reader_db

在sun_reader_db中创建小说表、分类表、用户表(二维表)

2.2 SQL介绍

SQL:(Structured Query Language)结构化查询语言 它也是一种规范、标准。

我们的关系型数据库都是采用SQL来进行操作的,不同的数据库对SQL进行了一些改造,但是类似。CRUD

DDL:数据定义语言       创建Create  删除Drop   修改Alter table...

DML:数据操作语言       CUD   增Insert  删Delete   改Update  

DQL:数据查询语言        Select  查询

DCL:数据控制语言         Grant   、Roll back 、 commit...

2.3 数据库相关操作命令

-- 创建数据库命令
create database 数据库名; 
-- 删除数据库命令
drop database 数据库名;
-- 查看数据库
show databases;
-- 切换数据库   如果需要在此数据库中进行操作 必须要先切换此数据库
use 数据库名;

3. 熟悉数据表操作的语句/命令

3.1 创建数据库表

create table 表名(
	列名1 数据类型(数据长度)  列约束/属性,
	列名2 数据类型  列约束....
);
-- 创建用户信息表  有些时候在MySQL中 如果有敏感字/关键字 可以添加反引号`来解决。注意不是单引号'
create table `user`(
	id int,
    username varchar(25)
);

3.2 查看数据库中的数据表

-- 查看数据库的所有表
show tables;
-- 查看表定义/结构
desc/describe 表名;

3.3 删除数据库

-- 删除数据库表
drop table 表名;

2.DML

1.修改表

并不是特别常用 只需要了解记忆一些常见的即可

#更改identityCard字段名称为identityId
#CHANGE:更改字段信息时 并且可以改名 / MODIFY 只能改字段信息
ALTER TABLE student CHANGE identityCard identityId VARCHAR(18);
# 添加字段信息 出生日期 birthday/bornDate datetime COMMENT '出生日期'
ALTER TABLE student ADD bornDate datetime COMMENT '出生日期';
# 删除字段信息 删除出生日期
ALTER TABLE student DROP bornDate;
# 修改表名
ALTER TABLE student RENAME school_stu;

2.主键和外键

1.主键:

能够唯一标识信息表中的一条数据的字段/字段组

ALTER TABLE 表名 ADD CONSTRAINT 主键名 PRIMARY KEY 表名(主键字段名);
ALTER TABLE school_stu 
   ADD CONSTRAINT pk_stu_stuId 
   PRIMARY KEY school_stu(stuId);
2.外键

在一张表中的某个字段引用的数据来自另一张表的某个字段的信息。
主表:它的主键一般是需要被从表引用 从表:在其中拥有外键 可以引用主表的主键信息
grade主表 student从表
实现物理外键 通过SQL语句将外键绑定好 可以保证数据一致性

ALTER TABLE school_stu 
   ADD CONSTRAINT fk_stu_grade 
   FOREIGN KEY (gradeId)
   REFERENCES grade(gradeId);

为了能够方便进行数据表操作 在实际项目中一般不设置物理外键 而设置逻辑外键

数据添加 INSERT
INSERT INTO 表名[(要添加值的字段列表)] VALUES(字段值列表<必须按照前面的顺序赋值>);
INSERT INTO school_stu (stuId,stuName,stuPwd) VALUES(1,'sss','xxxx');
 如果你省略了字段列表 则需要将所有字段进行赋值 且严格按照顺序
INSERT INTO school_stu VALUES(3,'呵呵','hehe','女',2,'12312','x','x','xxx','2019-05-23');
 如果有些字段有默认(主键有自动递增) 则可以使用null来表示 不需要去给此字段赋值
INSERT INTO school_stu (stuId,stuName) VALUES(null,'测试');

同时添加多条数据

INSERT INTO school_stu(stuName) VALUES('aaa'),('sss'),('ddd');

将school_stu的id和名称 赋值到stu表中的对应列
必须保证要添加数据的表提前存在!!!!

INSERT INTO stu(stuId,stuName)
   SELECT stuId,stuName FROM school_stu;

将school_stu的id和名称 赋值到一张新表newstu中

CREATE TABLE newstu(
   SELECT stuId,stuName FROM school_stu
);

数据修改 UPDATE

修改语句

UPDATE 表名 SET 字段名 = 字段值,...... [where条件语句]
// 如果不添加条件  则默认为全表更新
UPDATE school_stu SET stuName = 'aaa'
WHERE 在哪/哪里?
WHERE 后可接一系列的判断条件  id = xxx and xxx = xx or xxx = xx and  not xxx

数据删除 DELETE

DELETE FROM 表名 [where 条件]
TRUNCATE 可以进行数据删除
TRUNCATE TABLE school_stu;

面试题 :DELETE TRUNCATE的区别

相同点:都可以进行数据删除(全表删除)
不同点:DELETE可以进行条件删除   TRUNCATE只能进行全表删除
不同点:DELETE会保留自增序列  TRUNCATE除了表结构 其他数据全部清空 不会保留自增序列
不同点:TRUNCATE会结束事务  而DELETE不会影响到事务