数据库概述
数据库的特点
-
1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 存储数据有一定的格式 行和列的格式 3. 使用了统一的方式操作数据库 使用图形界面的形式查看数据 使用sql语言进行查看或管理数据
常见的数据库
关系型数据库 | 描述 |
---|---|
MySQL | 开源免费的数据库,中小型的数据库,已经被 Oracle 收购了。MySQL6.x 版本也开始收费。 |
Oracle | 收费的大型数据库,Oracle 公司的产品 |
DB2 | IBM 公司的数据库产品,收费的。常应用在银行系统中。 |
SQL Server | MicroSoft 公司收费的中型的数据库。C#、.net 等语言常使用。 |
SQLite | 嵌入式的小型数据库,应用在手机端,如:Android。 |
OceanBase | 阿里的大型数据库,性能已经超过Oracle全球第一 |
非关系型数据库(NoSQL) | 描述 |
MongoDB | MongoDB最流行的文档型数据库 |
Readis | 基于内存的键值型数据库通过 Key-Value 键值的方式来存储数据 |
SQL概述
什么是SQL
结构化查询语言(Structured Query Language)简称SQL,SQL语句就是对数据库进行操作的一种语言。
SQL语句的分类
分类 | 说明 |
---|---|
DDL(Data Definition Language)数据定义语言 | 定义数据库对象:数据库,表,列等.关键字:create, drop,alter 等 |
DML(Data Manipulation Language)数据操作语言(掌握) | 对数据库中表的数据进行增删改.关键字:insert, delete, update 等 |
DQL(Data Query Language)数据查询语言 (掌握) | 用来查询数据库中表的记录(数据).关键字:select, where 等 |
DCL(Data Control Language)数据控制语言(了解) | 用来定义数据库的访问权限和安全级别,及创建用户.关键字:GRANT,REVOKE 等 |
TCL(Transaction Control Language) 事务控制语言 | 用于控制数据库的事务操作,关键字; commit,savepoint,rollback等 |
操作数据库-DDL
==创建数据库==
create database 数据库名称;
==创建数据库,并指定字符集==
create database 数据库名称 character set 字符集名;
==查询所有数据库的名称==
show databases;
==查询某个数据库的字符集:查询某个数据库的创建语句及字符集==
show create database 数据库名称;
==修改数据库的字符集==
alter database 数据库名称 character set 字符集名称;
==删除数据库==
drop database 数据库名称;
==查询当前正在使用的数据库名称==
select database();
==使用数据库==
use 数据库名称;
操作表-DDL
数据类型
数据类型 | 说明 |
---|---|
int | 整数类型,例如 : age |
double | 小数类型,例如 : score double(5,2) 111.11 |
date | 日期,只包含年月日,yyyy-MM-dd |
datetime | 日期,包含年月日时分秒 yyyy-MM-dd HH:mm:ss |
timestamp | 时间戳类型,包含年月日时分秒 yyyy-MM-dd HH:mm:ss 如果将来不给这个字段赋值,或赋值为null,则默认使用当前的系统时间,来自动赋值 |
varchar | 可变字符串 name varchar(20) |
char | 不可变字符 name char(20) |
VARCHAR、CHAR varchar :表示的长度可变的字符串。最大长度不能超过定义字段的时候长度。 char :长度固定。 name varchar(20); name 存贮数据的长度是20以内的。 存了:lisi 表示4个长度 ,zhangsan:8个长度 江一燕:3个长度 name char(20); 存了:lisi 当前的长度4,剩下的是空格 。 问题:char 的性能好。 varchar可以节省空间。 通常时候,我们使用varchar。 但是我们常用的varchar()节省空间。 使用char的情况。当某个字段的长度固定的时候,,可以采用char。例如身份证号,手机号。
创建表
create table 表名( 列名(字段名) 数据类型, 列名(字段名) 数据类型, 列名(字段名) 数据类型 ... );
注意事项: 最后一列,不需要加逗号(,)
查询表
==查询某个数据库中所有的表名称==
show tables;
==查询表结构==
desc 表名;
修改表
添加一列
语法: alter table 表名 add 列名 数据类型 约束;
修改列类型
语法: alter table 表名 modify 列名 新类型;
修改列名和类型
语法: alter table 表名 change 旧列名 新列名 新类型;
删除指定列
语法: alter table 表名 drop 列名;
修改表字符集
语法: alter table 表名 charset 字符集;
修改表名
语法: rename table 旧表名 to 新表名;
删除表
两种形式
直接删除表
语法: drop table 表名;
先判断如果存在就删就
drop table if exists tb_teacher;
约束
意义:保证数据的有效性和完整性。可以确保数据库满足业务规则。
约束类型
约束 | 说明 |
---|---|
primary key | 主键约束:非空且唯一 |
not null | 非空约束 : 某一列的值不能为空 |
unique | 唯一约束 : 某一列的值不能重复,但可以为空 |
auto_increment | 自增器,每一次+1 |
foreign key | 外键约束 |
comment 注释 这个不是约束类型
复合主键
例子 可以直接copy
CREATE TABLE `student` ( `name` varchar(20) NOT NULL, `sex` char(1) NOT NULL, `birthday` date NOT NULL, PRIMARY KEY (`name`,`sex`,`birthday`) USING BTREE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;