1.什么是数据库?
定义
数据库(Database)是“按照数据结构来组织、存储和管理数据的仓库”。
常见数据库
- Oracle
- DB2
- SQL Server
- Postgre SQL
- MySQL
相关术语
数据库系统(Database System):DBS
数据库(Database)
数据库管理系统(Database Management System):DBMS
应用开发工具
管理员及用户SQL语言
Structured Query Languages:结构化查询语言
- DDL:数据定义语言
- DML:数据操作语言
- DQL:数据查询语言
- DCL:数据控制语言
2.MySQL相关操作
配置文件
my.cnf是MySQL的配置文件
登陆/退出MySQL
登陆
mysql -uroot -p
mysql -uroot -proot
(p后面是你的明文密码,我的密码就是root)
mysql -hlocalhost -uroot -p -P3306
mysql -uroot -proot -V
、mysql -V
、mysql version
得到mysql的版本号
mysql -uroot -p -D db_name
登陆的同时打开指定数据库
mysql -uroot -p --prompt=命令提示符
登陆的同时修改命令提示符(\h
主机、\u
当前登陆的用户、\d
当前打开的数据库、\D
当前服务器的日期时间)
退出
exit
quit
\q
ctrl + c
登录信息中需要掌握的
- 命令行结束符默认使用
;
或者\g
来结束 - 可以通过
help
或者\h
或者?关键字
来查看手册 \c
可以取消当前命令的执行
SQL语句语法规范
- 常用MySQL的关键字我们需要大写,库名、表名、字段名称等使用小写
- SQL语句支持折行操作,拆分的时候不能把完整单词拆开
- 数据库名称、表名称、字段名称不要使用MySQL的保留字,如果必须要使用,需要用反引号“将其括起来
常用SQL语句
SELECT USER()
得到登陆的用户
SELECT VERSION()
得到MySQL的版本信息
SELECT NOW()
得到当前的日期时间
SELECT DATABASE()
得到当前打开的数据库
3.数据库相关操作
创建数据库
CREATE {DATABASE|SCHEMA} db_name;
CREATE DATABASE [IF NOT EXISTS] db_name;
检测数据库名称是否存在,不存在则创建CREATE DATABASE [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] charset;
在创建数据库的同时指定编码方式
注意:
数据库名称最好有意义
名称不要包含特殊字符或者是MySQL关键字
查看当前服务器下全部数据库
SHOW DATABASE;
或 SHOW SCHEMAS;
查看指定数据库的详细信息
SHOW CREATE DATABASE db_name;
修改指定数据库的编码方式
ALTER DATABASE db_name [DEFAULT] CHARACTER SET [=] charset;
打开指定数据库
USE db_name;
得到当前打开的数据库
SELECT DATABASE();
或 SELECT SCHEMA();
删除指定的数据库
DROP DATABASE db_name;
DROP DATABASE [IF EXISTS] db_name;
如果数据库存在则删除
4.数据表相关操作
数据表
- 是数据库最重要的组成部分之一,数据是保存在数据表中
- 数据表由行(row)和列(column)来组成
- 每个数据表中至少有一列,行可以有零行一行或者多行组成
- 表名要求唯一,不要包含特殊字符,最好含义明确
创建表
CREATE TABLE [IF NOT EXISTS] tbl_name(
字段名称 字段类型 [完整性约束条件],
字段名称 字段类型 [完整性约束条件],
...
)ENGINE=存储引擎 CHARSET=编码方式;
UNSIGNED
无符号,没有负数,从0开始ZEROFILL
零填充,当数据的显示长度不够的时候可以使用前补0的效果填充至指定长度,字段会自动添加UNSIGNEDNOT NULL
非空约束,也就是插入值的时候这个字段必须要给值,值不能为空DEFAULT
默认值,如果插入记录的时候没有给字段赋值,则使用默认值PRIMARY KEY
主键,标识记录的唯一性,值不能重复,一个表只能有一个主键,自动禁止为空AUTO_INCREMENT
自动增长,只能用于数值列,而且配合索引使用,默认起始值从1开始,每次增长1UNIQUE KEY
唯一性,一个表中可以有多个字段是唯一索引,同样的值不能重复,但是NULL值除外FOREIGN KEY
外键约束
查看当前数据库下已有数据表
SHOW TABLES;
SHOW [FULL] TABLES [{FROM | IN} db_name] [LIKE 'pattern' | WHERE expr]
查看指定数据表的详细信息
SHOW CREATE TABLE tbl_name;
查看表结构
DESC tbl_name;
DESCRIBE tbl_name;
SHOW COLUMNS FROM tbl_name;
删除指定的数据表
DROP TABLE [IF EXISTS] tbl_name;
表结构相关操作
添加字段
ALTER TABLE tbl_name
ADD 字段名称 字段属性 [完整性约束条件] [FIRST|AFTER 字段名称];
删除字段
ALTER TABLE tbl_name
DROP 字段名称;
添加默认值
ALTER TABLE tbl_name
ALTER 字段名称 SET DEFAULT 默认值;
删除默认值
ALTER TABLE tbl_name
ALTER 字段名称 DROP DEFAULT;
修改字段类型、字段属性
ALTER TABLE tbl_name
MODIFY 字段名称 字段类型 [字段属性] [FIRST | AFTER 字段名称];
修改字段名称、字段类型、字段属性
ALTER TABLE tbl_name
CHANGE 原字段名称 新字段名称 字段类型 字段属性 [FIRST | AFTER 字段名称];
添加&删除主键
添加主键
ALTER TABLE tbl_name
ADD PRIMARY KEY(字段名称);
删除主键
ALTER TABLE tbl_name
DROP PRIMARY KEY;
添加&删除唯一索引
添加唯一索引
ALTER TABLE tbl_name
ADD UNIQUE KEY|INDEX [index_name] (字段名称);
删除唯一索引
ALTER TABLE tbl_name
DROP index_name;
修改数据表名称
ALTER TABLE tbl_name
RENAME [TO|AS] new_tbl_name;
RENAME TABLE tbl_name TO new_tbl_name;
修改AUTO_INCREMENT的值
ALTER TABLE tbl_name AUTO_INCREMENT=值;
5.MySQL中的数据类型
数值型
整数型
浮点型
字符串类型
- CHAR效率高于VARCHAR,CHAR相当于拿空间换时间,VARCHAR拿时间换空间
- CHAR默认存储数据的时候,后面会用空格填充到指定长度;而在检索的时候会去掉后面空格;VARCHAR在保存的时候不进行填充,尾部的空格会留下
- TEXT列不能有默认值,检索的时候不存在大小写转换
日期时间类型
二进制类型
6.MySQL存储引擎
MySQL架构图
MySQL是由SQL接口、解析器、优化器、缓存和存储引擎组成。
- Connectors:指的是不同语言与SQL的交互接口
- Management Serivices & Utillities:系统管理和工具
- Connection Pool:连接池,管理缓冲用户连接,线程处理等需要缓存的需求
- SQL Interface:接收用户的SQL指令,并且返回需要查询的结果。
- Parser:解析器。
- Optimizer:查询优化器–选取-投影-联接–
SELECT id,username FROM user WHERE age>10;
- Caches & Buffers:查询缓存
- Engine:存储引擎
MySQL存储引擎
存储引擎就是指表的类型,存取和处理数据的方式。
查看当前支持的存储引擎
SHOW ENGINES;
查看默认的存储引擎
存储引擎分类
本文是全系列中第24 / 24篇:PHP快速入门
- 1.1.1 PHP课程介绍
- 1.1.2 代码编辑器的安装和PHP环境的配置
- 1.1.3 PHP基础语法
- 1.2.1 PHP中的变量
- 1.2.2 PHP中的数据类型
- 1.2.3 PHP中的数据类型转换与比较
- 1.3.1 PHP中的常量
- 1.3.2 PHP中的预定义变量
- 1.4 PHP中的表达式与运算符
- 1.5 PHP中的流程控制
- 2.1.1 PHP函数的结构
- 2.1.2 PHP函数的参数
- 2.1.3 PHP复杂函数
- 2.1.4 PHP函数实战
- 2.2.1 PHP字符串函数库简介
- 2.2.2 PHP字符串函数实战练习
- 2.3 PHP数组简介和定义方式
- 2.4.1 PHP数组的使用、转换、运算符
- 2.4.2 PHP数组的应用
- 3.1.1 PHP中SESSION的学习
- 3.1.2 PHP中COOKIE的学习
- 3.2.1 PHP文件目录函数库简介/操作/实战
- 3.2.2PHP文件操作相关的常用函数与类的封装
- 3.3 深入浅出MySQL数据库