0. 数据库DataBase
SQL: Structured Query Language 结构化查询语言,操作关系型数据库
-
安装配置:
初始化 mysqld --initialize-insecure 生成data文件夹
注册mysql服务 mysqld -install
启动mysql服务 net start mysql
停止mysql服务 net stop mysql
卸载 mysqld -remove mysql
修改密码 mysqladmin -u root password 123456
mysql -uroot -p 设置隐藏密码
登录 mysql -uroot -p123456
mysql -u用户名 -p密码 [-h数据库服务器IP地址 -P端口号] -
数据模型:
关系型数据库:由多张相互连接的二维表组成 -
语法:
可以单行或多行,以分号结尾,不区分大小写
--或#单行注释 /*多行注释*/
分类 | 全称 | 说明 |
---|---|---|
DDL | Data Definition Language | 数据定义语言,定义数据库、表、字段 |
DML | Data Manipulation Language | 数据操作语言,增删改 |
DQL | Data Query Language | 查询 |
DCL | Data Control Language | 控制,创建数据库用户、控制访问权限 |
1. 数据库设计-DDL
查询所有数据库:show databases;
查询当前数据库:select database();
创建数据库:create database if not exists db01;
使用数据库:use db01;
删除数据库:drop database if exists db01;
database可以换成schema
-- 创建表格
create table tb_user(
id int primary key auto_increment comment 'ID 唯一标识',
username varchar(20) not null unique comment '用户名',
name varchar(10) not null comment '姓名',
age int comment '年龄',
gender char(1) default '男' comment '性别'
) comment '用户表';
- 约束:
not null 非空
unique 唯一
primary key 主键是唯一标识,非空且唯一
default 未指定则默认
foreign key 两张表建立连接
2. 数据类型
数值类型 | 大小(byte) | 有符号范围 | 无符号范围 | 描述 | 备注 |
---|---|---|---|---|---|
tinyint | 1 | (-128,127) | (0,255) | ||
smallint | 2 | (-32768,32767) | (0,65535) | ||
mediumint | 3 | (-8388608,8388607) | (0,16777215) | ||
int | 4 | (-2147483648,2147483647) | (0,4294967295) | ||
bigint | 8 | (-263,263-1) | (0,2^64-1) | ||
float | 4 | (-3.4E38,3.4E38) | 单精度浮点数 | float(5,2)5表示整个长度,2表示小数长度 | |
double | 8 | (-1.79E308,1.797E308) | 双精度浮点数 | ||
decimal |
- 字符串类型:
char 0-255 bytes 定长字符串
varchar 0-65535 bytes 变长字符串
日期类型 | 大小byte | 范围 | 格式 | 描述 |
---|---|---|---|---|
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 | 混合日期和时间值 | ||
timestamp | 4 | 时间戳 |
查询表结构: desc 表名;
查询建表语句:show create table 表名;
-- 为表添加字段qq
alter table table_emp add qq varchar(11) comment 'QQ';
-- 修改QQ的varchar
alter table table_emp modify qq varchar(13) comment 'QQ';
-- 修改字段名
alter table table_emp change qq qq_num varchar(13) comment 'QQ';
-- 删除qq_num字段
alter table table_emp drop column qq_num;
-- 修改表名
rename table table_emp to emp;
-- 删除表
drop table if exists table_emp;