笔者读到《CTF特训营》第二章,发现需要SQL和PHP基础,遂开始学习基础知识
以下主要为笔者学习b站黑马程序员视频教学所做的笔记
目录
1、数据库相关概念
数据库:
存放数据的仓库,数据是有组织地进行存储(数据)
数据库管理系统:
操纵和管理数据库的的大型软件(软件)
主流的关系型数据库管理系统:
Oracle、MySQL、Microsoft SQL Server、PostgreSQL等等(软件)
SQL:
操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准(语言)
2、MySQL的安装
使用MySQL社区版,免费
下载慢可以去镜像下载
安装完后的启动和停止:
win+r:services.msc
找到MySQL80
右键停止
或者
以管理员身份运行cmd
net start mysql80
net stop mysql80
客户端的连接(要先启动):
开始界面搜索运行 MySQL 8.0 Command Line Client
或者
cmd但要配置环境
3、MySQL数据模型
关系型数据库:
建立在关系模型基础上,由多张相互连接的二维表组程序数据库。
特点是
使用表存储数据,格式统一,便于维护
使用SQL语言操作,标准统一,使用方便
二维表:
类似于excel中的表,由表头、行、列组成。
数据模型:
安装完MySQL后,计算机就成为MySQL数据库服务器,可以通过客户端来连接MySQL数据
库管理系统,就可以创建多个数据库,一个数据库又可以创建多个表。
4、SQL通用语法和分类
通用语法:
1、SQL语句可以单行或多行书写,以分号结尾
2、SQL语句可以使用空格/缩进来增强语句的可读性
3、MySQL数据库的SQL语句不区分大小写,关键字建议使用大写
4、注释:
单行注释:--注释内容 或 #注释内容
多行注释:/*注释内容*/
SQL分类:
DDL:数据定义语言,用来定义数据库对象(数据库,表,字段)
DML:数据操作语言,用来对数据库中的数据进行增删改
DQL:数据查询语言,用来查询数据库中表的记录
DCL:数据控制语言,用来创建数据库用户,控制数据库的访问权限
5、SQL语法-DDL-数据库操作
查询:
查询所有数据库:
SHOW DATABASES;
查询当前数据库:
SELECT DATABASE();
创建:
CREATE DATABASE[IF NOT EXISTS]数据库名[DEFAULT CHARSET字符集][COLLATE排序规则];
删除:
DROP DATABASE[IF EXISTS]数据库名;
使用:
USE 数据库名;
上图是创建和查看
上图是删除并查看
上图为切换数据库到base01,查看当前数据库名称
6、SQL语法-DDL-表操作-创建&查询
查询当前数据库所有表:
show tables;
查询表结构:
desc表名;
查询指定表的建表语句:
show create table表名;
表创建:
create table 表(
字段1 字段1类型[comment 字段1注释],
字段2 字段2类型[comment 字段2注释],
字段3 字段3类型[comment 字段3注释],
)[表注释];
表创建实例:
mysql> create table tb_user(
-> id int comment '编号',
-> name varchar(50) comment '姓名',
-> age int comment '年龄',
-> gender varchar(1) comment '性别'
-> ) comment '用户表';
上图为创建成功实例(先进入自己数据库,在自己的数据库中创建)
上图为切换到sys数据库,查看当前数据库所有表
上图为切换到自己数据库,查看刚刚创建的表
上图为使用desc指令,查看表结构
上图为使用show create指令,查看建表语句
7、SQL语法-DDL-表操作-数据类型及案例
数据类型:
MySQL中数据类型很多,主要有三类:数值类型、字符串类型、日期时间类型。
char(10)后面规定位数
tinyint(小整数值):1byte
smallint(大整数值):2bytes
mediumint(大整数值):3bytes
int或integer(大整数值):4bytes
bigint(极大整数值):8bytes
float(单精度浮点数值):4bytes
double(双精度浮点数值):8bytes
decimal(小数值):~
char(定长字符串):0~255bytes(性别长度固定,可用char)
varchar(变长字符串):0~65535bytes(用户名长度不固定,可用varchar)
tinyblob(不超过255个字符的二进制数据):0~255bytes
tinytext(短文本字符串):0~255bytes
blob(二进制形式的长文本数据):0~25535bytes
text(长文本数据):0~65535bytes
mediumblob(二进制形式的中等长度文本数据):0~16777215bytes
mediumtext(中等长度文本数据):0~16777215bytes
longblob(二进制形式的极大文本数据):0~4294967295bytes
longtext(极大文本数据):0~4294967295bytes
date(日期值):3(记录生日,年,月,日)
time(时间值):3
year(年份值):1
datetime(混合日期和时间值):8
timestamp(混合日期和时间值,时间戳):4
案例:
设计一张员工信息表,要求如下:
1、编号(纯数字)
2、员工工号(字符串类型,长度不超过10位)
3、员工姓名(字符串类型,长度不超过10位)
4、性别(男/女,存储一个汉字)
5、年龄(正常人年龄,不可能存储负数)
6、身份证号(二代身份证号均为18位,带有X字符)
7、入职时间(取值年月日即可)
create table emp(
id int comment'编号',
worknumber varchar(10) comment'工号',
name varchar(10) comment'姓名',
gender char(1) comment'性别',
age tinyint unsigned comment'年龄',
idcard char(18) comment'身份证号',
entrydate date comment'入职时间'
)comment'员工表';
8、SQL语法-DDL-表操作-修改&删除
添加字段:
alter table 表名 add 字段名 类型(长度)[comment 注释][约束];
案例:
为前面的员工表添加字段昵称(长度不超过20位)
alter table emp add nickname varchar(20) comment '昵称';
修改字段-修改数据类型:
alter table 表名 modify 字段名 新数据类型(长度);
修改字段-修改字段名和字段类型:
alter table 表名 change 旧字段名 新字段名 类型(长度)[comment 注释][约束];
案例:
将前面的员工表中nickname字段修改位username,类型为varchar(30)。
alter table emp change nickname username varchar(20) comment'用户名';
删除字段:
alter table 表名 drop 字段名;
案例:
删除前表中username字段。
alter table emp drop username;
修改表名:
alter table 表名 rename to 新表名;
案例:
将emp表的表名改为employee。
alter table emp rename to employee;
删除表:
drop table[if exists] 表名;
删除指定表,并重新创建该表:
truncate table 表名;
9、SQL语法-DDL-小结
#DDL-数据库操作
show databases;
create database 数据库名;
use 数据库名;
select database();
drop database 数据库名;
#DDL-表操作
show tables;
create table 表名();
desc 表名;
show create table 表名;
alter table 表名 add/modify/change/drop/rename to;
drop table;