目录
理解数据库
什么是数据库(Database):就是按照数据结构来组织、存储和管理数据的仓库
作用:①数据持久化保存 ②快速、安全、方便的存储和查询数据
③可以处理并发访问 ④更加安全的权限管理访问机制
RDBMS 关系型数据库管理系统
RDBMS = 管理员(manager)+ 仓库(database)
database = N个 table(表)
table :①表结构:定义表的列名和列类型
②表记录:一行一行的记录
SQL:结构化查询语言(Structured Query Language)
作用:客户使用SQL来操作服务器
语句分类:①DDL(Data Definition Language)数据定义语言
【创建、删除、修改:库、表结构】
②DML(Data Manipulation Language)数据库操作语言
【增、删、改:表记录】
③DCL (Data Control Language)数据库控制语言
【定义访问权限和安全级别】
④DQL (Data Query Language)数据库查询语言
【查询数据】
类型分类:①关系型数据库 ②非关系型数据库
关系型数据库:MySQL、Oracle、PostgreSQL、SQLserver、DB2、Vfp
非关系型数据库:Redis内存数据库、MongoDB文档数据库、HBase
数据类型
一、字符串数据类型
char:固定长度字符串类型char(255)
varchar:可变长度字符串类型varchar(65535)
text:变长文本存储类型
二、数值类型
int:整型 4字节 -21亿~21亿;0~42亿
tinyint:1字节(8位)-128~127;0~255
double:浮点型 ,double(5,2)表示数值总共5位,小数占两位
decimal:浮点型,在钱方面使用,不会出现精度缺失问题
三、日期和时间类型
date:日期类型 格式为:yyyy-mm-dd
time:时间类型 格式为:hh:mm:ss
timestamp:时间戳类型(日期+时间)
四、二进制数据类型
二进制数据类型可以存储任何数据类型(甚至包括二进制信息),如图像、多媒体、字处理文档等
DDL 数据定义语言 【操作表结构】
数据库的操作
1、查看所有数据库
show databases;
2、创建数据库
-- 格式
create database 数据库名;
-- eg.
create database if not exist tlxy default charset=utf8;
-- 1. 数据库 tlxy 如果不存在则创建数据库,存在则不创建
-- 2. 创建 tlxy 数据库,并设置字符集为 utf8
-- 3. 无特殊情况都要求字符集为 utf8 或者 utf8mb4 的字符编码
3、打开/进入/选择/切换数据库
-- 格式
use 数据库名;
-- eg.
use test;
4、删除数据库
删库有风险,动手需谨慎
-- 格式
drop database 数据库名;
-- eg.
drop database test;
5、修改数据库编码
-- 格式
alter database 数据库名 character set 编码类型;
-- eg.
alter database test character set utf8;
-- 查看当前数据库的编码类型
show create database 数据库名;
数据表的操作
1、查看当前数据库中所有的表
show tables;
2、创建表
-- 格式
create table 表名(
列名 列类型,
列名 列类型,
...
列名 列类型
)搜索引擎 默认编码
-- 实例
create table users(
-- 创建ID字段,为正整数,不允许为空 主键,自动递增
id int unsigned not null primary key auto_increment,
-- 创建 存储 名字的字段,为字符串类型,最大长度 5个字符,不允许为空
username varchar(5) not null,
-- 创建存储 密码 的字段,固定长度 32位字符, 不允许为空
password char(32) not null,
-- 创建 年龄 字段,不允许为空,默认值为 20
age tinyint not null default 20
)engine=innodb default charset=utf8;
创建表的基本原则:
·表明和字段名 尽可能的符合命名规范,并且最好能够‘见名之意’ ;
·表中字段所对应的类型设置合理,并限制合理长度;
·表引擎推荐使用innodb,并无特殊情况都要求为utf8或者utf8mb4的字符编码;
3、查看表结构
-- 查看表结构
-- (查看的是表中内容的结构)
desc 表名;
-- 查看表的创建语句
-- (除表结构还能看到搜索引擎和编码)
show create table 表名;
4、修改表结构
-- 格式
alter table 表名 (操作);
添加字段
-- 格式
alter table 表名 add (
列名 列类型,
列名 列类型,
...
);
-- eg.
-- 在 users 表中 追加 一个 num 字段
alter table users add num int not null;
-- 在指定字段后面追加字段 在 users 表中 age字段后面 添加一个 email 字段
alter table users add email varchar(50) after age;
-- 在指定字段后面追加字段,在 users 表中 age字段后面 添加一个 phone
alter table users add phone char(11) not null after age;
-- 在表的最前面添加一个字段
alter table users add aa int first;
删除字段
-- 格式
alter table 表名 drop 被删除的字段名;
-- eg.
alter table users drop name;
修改字段
-- 格式
alter table 表名 change|modify 被修改的字段信息;
-- change: 可以修改字段名(可修改列名)
-- modify: 不能修改字段名(不能修改列名)
-- 修改表中的 num 字段类型,使用 modify 不修改字段名
alter table users modify num tinyint not null default 12;
-- 修改表中的 num 字段为 int 并且更改字段名为mm
alter table users change num mm int;
-- 注意:一般情况下,无特殊要求,不要轻易修改表结构
-- 字段名==列名 不同地方叫法不一
5、修改表名
-- 格式
alter table 原表名 rename as 新表名;
6、修改表中的自增
-- 修改默认自增的开始值
-- 在常规情况下,auto_increment 默认从1开始继续递增
alter table users auto_increment = 1000;
-- 一般主键约束都带有 auto_increment 自增长
-- 如需删除主键约束,需先去除自增长
-- 用modify,只改变数据类型;用change,改变数据类型同时可改名列名
alter table 表名 modify 列名(带自增长字段) int(11);
alter table 表名 drop primary key;
7、修改表引擎
-- 推荐在定义表时,表引擎为 innodb。
-- 通过查看建表语句获取当前的表引擎
mysql> show create table users\G;
*************************** 1. row ***************************
Table: users
Create Table: CREATE TABLE `users` (
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1001 DEFAULT CHARSET=utf8
1 row in set (0.00 sec)
-- 直接查看当前表状态信息
mysql> show table status from tlxy where name = 'users'\G;
*************************** 1. row ***************************
Name: users
Engine: InnoDB
-- 修改表引擎语句
alter table users engine = 'myisam';
8、删除表
-- 格式
drop table 表名;