一、数据库概述
1.1 数据库相关概念
| 名称 | 全称 | 简称 |
|---|---|---|
| 数据库 | 存储数据的仓库,数据是有组织地进行存储 | DataBase(DB) |
| 数据库管理系统 | 操纵和管理数据库的大型软件 | DataBase Management System(DBMS) |
| SQL | 操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 | Structured Query Language(SQL) |
二、SQL
全称Structured Query Language,结构化查询语言。操作关系型数据库的变成语言,定义了一套操作关系型数据库统一标准
2.1 SQL通用语法
1)SQL语句可以单行或多行书写,以分号结尾。
2)SQL语句可以使用空格/缩进来增强语句的可读性。
3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。
4)注释:
• 单行注释:-- 注释内容 或 # 注释内容
• 多行注释:/* 注释内容 */
2.2 SQL分类
SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL
| 分类 | 全称 | 说明 |
|---|---|---|
| DDL | Data Definition Language | 数据定义语言,用来定义数据库对象(数据库,表,字段) |
| DML | Data Manipulation Language | 数据操作语言,用来对数据库表中的数据进行增删改 |
| DQL | Data Query Language | 数据查询语言,用来查询数据库中表的记录 |
| DCL | Data Control Language | 数据控制语言,用来创建数据库用户、控制数据库的访问权限 |
2.3 DDL
Data Definition Language,数据定义语言,用来定义数据库对象(数据库、表、字段)。
2.3.1 数据库查询操作
1)查询所有数据库
show databases;
2)查询当前数据库
select database();
3)查询当前数据库所有表
show tables;
4)查询表结构
desc 表名;5)查询指定表的建表语句
show create table 表名;2.3.2 数据库创建操作
1)创建数据库
create database [if not exists] 数据库名 [default charset 字符集] [collate 排序规则];-- Example
create database test1;
-- OR
create database if not exists;2)创建表
create table 表名(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释],
字段3 字段3类型[comment 字段3注释],
...
字段n 字段n类型[comment 字段n注释]
) [comment 表注释];-- Example
create table user(
id int unsigned comment'编号',
name varchar(10) comment'姓名',
age tinyint(3) comment'年龄'
)comment '用户信息表';2.3.3 数据库删除操作
drop database [if exists] 数据库名;-- Example
drop database test;
drop database if exists test;2.3.4 使用
use 数据库名;2.4 数据类型
MySQL中的数据类型主要分为三类:数值类型、字符串类型、日期时间类型
2.4.1 数值类型
| 类型 | 大小 | 有符号(SIGNED)范围 | 无符号(UNSIGNED)范围 | 描述 |
|---|---|---|---|---|
| TINYINT | 1byte | (-128, 127) | (0, 255) | 小型整数 |
| SMALLINT | 2bytes | (-32768, 32767) | (0, 65535) | 大整数值 |
| MEDIUMINT | 3bytes | (-8388608, 8388607) | (0, 16777215) | 大整数值 |
| INT或INTEGER | 4bytes | (-2147483648, 2147483647) | (0, 4294967295) | 大整数值 |
| BIGINT | 8bytes | (-2^63, 2^63 - 1) | (0, 2^64 - 1) | 极大整数值 |
| FLOAT | 4bytes | (-3.402823466E+38, 3.102823466351E+38) | 0和(1.175494351E-38, 3.402823466E+38) | 单精度浮点数值 |
| DOUBLE | 8bytes | (-1.7976931348623157E+308, 1.7976931348623157E+308) | 0和(2.2250738585072014E-308, 1.7976931348623157E+308) | 双精度浮点数值 |
| DECIMAL | - | 依赖于M(精度)和D(标度)的值 | 依赖于M(精度)和D(标度)的值 | 小数值(精确定点数) |
2.4.2 字符串类型
| 类型 | 大小 | 描述 |
|---|---|---|
| CHAR | 0-255 bytes | 定长字符串 |
| VARCHAR | 0-65535 bytes | 变长字符串 |
| TINYBLOB | 0-255 bytes | 不超过255个字符的二进制数据 |
| TINYTEXT | 0-255 bytes | 短文本字符串 |
| BLOB | 0-65535 bytes | 二进制形式的长文本数据 |
| TEXT | 0-65535 bytes | 长文本数据 |
| MEDIUMBLOB | 0-16777215 bytes | 二进制形式的中等长度文本数据 |
| MEDIUMTEXT | 0-16777215 bytes | 中等长度文本数据 |
| LONGBLOB | 0-4294967295 bytes | 二进制形式的极大文本数据 |
| LONGTEXT | 0-4294967295 bytes | 极大文本数据 |
2.4.3 日期时间类型
| 类型 | 大小 | 范围 | 格式 | 描述 |
|---|---|---|---|---|
| DATE | 3 | 1000-01-01 至 9999-12-31 | YYYY-MM-DD | 日期值 |
| TIME | 3 | -838:59:59 至 838:59:59 | HH:MM:SS | 时间值或持续时间 |
| YEAR | 1 | 1901 - 2155 | YYYY | 年份值 |
| DATETIME | 8 | 1000-01-01 00:00:00 至 9999-12-31 23:59:59 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值 |
| TIMESTAMP | 4 | 1970-01-01 00:00:01 至 2038-01-19 03:14:07 | YYYY-MM-DD HH:MM:SS | 混合日期和时间值、时间戳 |
2.5 修改
2.5.1 添加字段
alter table 表名 add 字段名 类型(长度) [comment 注释] [约束];-- Example
alter table 表名 add 添加字段 varchar(20) comment '新添字段';2.5.2 修改字段
修改数据类型
alter table 表名 modify 字段名 新数据类型(长度);-- Example
alter table user_info change name new_name varchar(20) comment '姓名';修改字段名和字段类型
alter table 表名 change 旧字段名 新字段名 类型(长度) [comment 注释] [约束];-- Example
alter table user_info drop new_name;删除字段
alter table 表名 drop 字段名;-- Example
alter table user_info drop new_name;修改表名
alter table 表名 rename to 新表名;-- Example
alter table user_info rename to userinfo;删除表
drop table [if exists] 表名;-- Example
drop table if exists userinfo;删除指定表,并重新创建该表
truncate table 表名;-- Example
truncate table userinfo;注:在删除表时,表中的全部数据也会被删除