10.26-MySQL基础

数据库

数据库介绍

1. 数据库定义

  • 通俗:存放数据的仓库

  • 简单:电子化的文件柜

  • 定义:数据库(DateBase 简称DB)是一个软件产品,按照数据结构来组织、储存和管理数据的,建立在计算机设备上的仓库

2. 数据库特点

  • 数据共享

  • 数据一致性和可维护性

  • 安全性

  • 完整性控制

  • 并发控制

  • 数据恢复

3. 主流数据库产品

  • 关系型数据库

    • MySql:一个小型的关系型数据库管理系统

      • 特点:体积小、速度快、总体拥有成本低、开放源代码

    • Oracle:甲骨文的数据库产品,它是第一个商品化的数据库管理系统

    • DB2:IBM公司的关系型数据库管理系统,有很多版本,运行在掌上产品到大型机等等不同的终端机器上。

    • Sybase:美国Sybase公司的关系型数据库管理系统,较早采用客户端\服务器结构数据库厂商,运行在Unix或Windows NT平台上

    • Sql server:微软产品,运行在WindowsNT平台上,支持客户端/服务器结构的数据库,采用标准SQL语言。

    • Access:微软发布的关系型数据库管理系统,它强调把数据库引擎的图形用户界面和软件开发工具结合

  • 非关系型数据库

    • Redis

SQL语言

关系型数据库

描述两个元素之间的关联或对应关系,使用关系模型把数据组织到二维表中

关系:一对一、一对多、多对多

表设计

遵循三大范式

数据表

表是一个二维结构,由行和列组成

横向为行(Row),也叫记录

纵向为列(Column),也叫字段

一个关系型数据库由多个数据表组成,数据表是关系型数据库的基本储存结构

SQL定义

结构化查询语言:Structured Query Language

作用:专门用于与数据库进行通讯的语言;用于存取、查询、更新与管理数据(增删改查)

关系型数据库均支持SQL语言,但可能存在细微差距

SQL划分

数据定义语言

Data Definition Language

简称DDF

负责数据库对象(table)的定义,主要强调数据结构相关

常用语句

  • create 创建数据库对象(创建表结构)

  • alter 修改表结构

  • drop 删除表结构(彻底删除)

  • truncate 清空表数据,保留表结构

数据操作语言

Data Manipulation Language

DML

主要用于实现对表中数据进行增加、修改、删除操作,主要强调数据相关

常用语句

  • insert 增加数据

  • update 更新数据

  • delete 删除数据

事务处理语言

Transaction Processing Language

TPL

主要结合DML使用,用于确认/取消操作

常用语句

  • commit 确认提交

  • rollback 回滚取消

  • savepoint 保存点

数据查询语言

Data Query Language

DQL

主要用于实现数据查询操作

常用语句

  • select 查询操作

数据控制语言

Data Control Language

DCL

主要用于权限的授予与回收

常用语句

  • creat user创建用户

  • grant 授予权限

  • revoke 回收权限

总结

数据库(DB)->关系型数据库(MySQL)->二维表(table)->SQL语言->SQL划分

SQL划分

DDL结构->DML数据->DQL查询

​ ->TPL事务->DCL权限

MySQL数据库介绍

MySql是最流行的关系型数据库管理软件之一,开发的首选数据库

特点:支持多线程处理、支持大型数据库、为多种编程语言提供API、多种数据库链接途径

show databases; 查看数据库

dorp database 库名; 删除指定的库

create datebase 库名 default character set utf-8;新建库并指定编码集

create table 表名(
字段名 数据类型,
字段名 数据类型
);

desc 表名; 查看表结构

show columns from 表名;

select now from dual();获取系统时间

select now();同上

dual表示的是一个特殊的测试表,在MySQL中可以省略

常用数据类型

数值

  • int

  • double(m,n) 其中,m表示总位数,n表示小数点位数

字符串

必须加引号 单引号/双引号

  • char(n) 定长字符串 n代表字符个数

  • varchar(n) 变长字符串

  • 日期时间

date 日期部分 \\年月日
datetime 日期时间 \\年月日时分秒

表结构操作

创建表结构

语法

create table 表名(
字段名 数据类型,
字段名 数据类型
);

注意: 表名不可重复!

最后一个字段后面没有逗号

例子

//创建部门表(dept_li)
//数据: 
//deptno dname location
//10 '研发部' '南京'
create table dept_li(
deptno int,
dname varchar(8),
location varchar(10)
);
//查看表结构
desc dept_li;
show columns from dept_li;

修改表结构

//增加字段
alter table 表名 add 字段名 数据类型;
//部门表中增加"描述"字段 des varchar(20)
alter table dept_li add des varchar(20);
//修改字段
alter table 表名 modify 字段名 新类型;
//修改描述字段 varchar(20)->char(10)
alter table dept_li modify des char(10);
//修改字段名并修改字段类型
alter table dept_li change des abc varchar(10);
//删除字段
alter table 表名 drop 字段名
//删除描述字段
alter table dept_li drop abc;

删除表结构

//仅清空表数据,保留结构
truncate table dept_li;
//彻底删除表,常用
drop table dept_li;

练习

创建员工表 emp_li

字段名:

员工号 empno

员工姓名 ename

员工职位 position

员工薪水 salary

员工奖金 bonus

入职日期 hiredate

领导的员工号 leader

部门号 deptno

create table emp_li(
empno int,
ename varchar(10),
position varchar(10),
salary double,
bonus double,
hiredate date,
leader int,
deptno int
);

表数据操作

增加数据

语法

//方式一:全部字段
insert into 表名 values(值1,值2);
//例子:往部门表中添加记录
insert into dept_li values(10,'研发部','南京');
insert into dept_li values(20,'行政部','苏州');
//方式二:指定字段 值按照指定字段一一对应
insert into dept_li(deptno,dname,location)
values(30,'市场部','无锡');
insert into dept_li(deptno,dname)
values(40,"后勤部")
commit;//默认就已经确认提交了
//如果不想自动提交,可以使用下面的命令
set autocommit=0;
//查询部门表数据
select deptno,dname,location from dept_li;

注意

由于创建数据库时编码为UTF-8,而中文系统的默认编码为GBK,这会造成编码不一致导致报错。

可以使用下面的命令修正

  • show variables like 'char%';

  • set names gbk; //当前会话有效

更新数据

语法

update 表名 set 字段=新值;
update 表名 set 字段=新值,字段=新值 where 条件;
//如果语句中没有where则表示更新表中所有记录

//更新部门表中40号部门,修改地址为"杭州"
update dept_li set location='杭州' where deptno=40;

delete from 表名;
delete from 表名 where 条件;
//如果语句中没有where表示删除表中所有记录
//插入数据 50 '策划部'
insert into dept_li values(50,'策划部',null);
insert into dept_li(deptno,dname)
values(50,'策划部');
//删除50号部门
delete from  dept_li where deptno=50;

总结

insert

  • 两种写法

  • 字符串必须加引号

update

  • 语法

  • 是否带有条件

delete

  • 是否具有条件

最后更新于