MySQL入门
目录
一. MySQL简介
1. MySQL概述
MySQL是数据库管理系统(Database Management System,DBMS),其优点为体积小、运行速度快、总体成本低。
2. MySQL特点
(1)可移值性强
使用C和C++语言开发。
(2)运行速度快
使用了极快的“B树”磁盘表(MyISAM)和索引压缩;
使用优化的“单扫描多连接”;
SQL函数使用高度优化的类库实现。
(3)支持多平台
支持超过20种系统开发平台,在不同平台上容易进行移植。
(4)支持各种开发语言
为它们提供API函数,包括C、C++、Java、Perl、PHP、Python、Ruby等语言。
(5)提供多种存储器引擎
适用于不同的应用场合。
(6)功能强大
能够有效应用于任何数据库应用系统。
(7)安全度高
灵活和安全的权限和密码系统,允许基于主机的验证;
连接到服务器时,所有的密码传输均采用加密形式;
网络化,可以在Internet上的任何地方访问。
(8)价格低廉
MySQL采用GPL许可。
3. MySQL工作原理
通常一个完整的数据库系统由数据库(DB)、数据库管理系统(DBMS)、数据库应用程序、用户和硬件组成。
4. DBMS主要功能
(1) 数据定义
DBMS提供了数据定义语言(Data Definition Language,DDL)。通过DDL可以方便地定义数据库中的各种对象。
(2) 数据操纵
DBMS提供了数据操纵语言(Data Manipulation Language,DML)。通过DML可以实现数据库中数据的基本操作,例如向数据表中插入一行数据、修改数据表的数据、删除数据表中的行、查询数据表中的数据等。
(3) 安全控制和并发控制
DBMS提供了数据控制语言(Data Control Language,DCL)。通过DCL可以控制什么情况下谁可以执行什么样的数据操作。
(4) 数据库备份与恢复
DBMS提供了备份数据库和恢复数据库的功能。
二. MySQL安装
详见博客:https://blog.csdn.net/m0_59188912/article/details/147044376
三. MySQL使用
1. 安装Navicat
Navicat 12绿色版本详见:https://download.csdn.net/download/m0_59188912/90576384
2. 创建语法create
(1) 创建数据库语法
create database 数据库名;
(2) 创建数据表语法(前提:use 数据库名)
create table 表名(字段名1 数据类型, 字段名2 数据类型,...... );
(3) 创建带有约束的数据表
① 主键约束
create table 表名(字段名1 数据类型 primary key);
或者
create table 表名(字段名1 数据类型,[constraint <约束名>] primary key(字段名));
联合主键:
create table 表名(字段名1 数据类型,字段名2 数据类型,[constraint <约束名>] primary key(字段名1, 字段名2));
注:有时会在主键约束后添加auto_increment自动编码
② 唯一约束
create table 表名(字段名1 数据类型 unique);
或者
create table 表名(字段名1 数据类型,[constraint <唯一约束名>] unique(字段名));
③ 非空约束
create table 表名(字段名1 数据类型 not null);
④ 默认值约束
create table 表名(字段名1 数据类型 default 默认值);
注意:字符类型的默认值必须用' '(单引号)括起来
⑤ 外键约束
create table 表名(字段名1 数据类型, [constraint <外键约束名>] foreign key(字段名) references 外键主表名(主键字段名));
(4) 复制现有表
create table 表名 like 被复制表名;(该语句仅复制表名结构等,不复制内容)
create table 表名 as (select * from 被复制表名);(该语句可复制表结构和内容)
3. 修改语法alter
(1) 修改数据表结构
① 数据表重命名
alter table <旧表名> rename <新表名> ;
② 修改字段名
alter table <表名> change <原字段名> <新字段名> <数据类型> ;
③ 修改字段数据类型
alter table <表名> modify <字段名> <新数据类型> ;
④ 添加新字段
alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after <已存在字段名>] ;
⑤ 修改字段的排列位置
alter table <表名> modify <字段名> <数据类型> [first | after <已存在字段名>] ;
⑥ 删除数据表中的字段
alter table <表名> drop <字段名> ;
(2) 修改数据表约束
① 添加主键约束
alter table <表名> add constraint 约束名 primary key(字段名) ;
alter table <表名> modify 字段名 数据类型 primary key auto_increment ;
如果已设置主键未添加自动编号的:
alter table <表名> modify 字段名 数据类型 auto_increment ;
② 添加唯一约束
alter table <表名> add constraint 约束名 unique(字段名) ;
③ 添加非空约束
alter table <表名> modify 字段名 数据类型 not null ;
④ 添加默认值约束
alter table <表名> alter 字段名 set default ‘默认值’;
⑤ 添加外键约束
alter table <表名> add constraint 约束名 foreign key(字段名) references <主表名>(主表主键字段名) ;
⑥ 删除主键约束
alter table <表名> drop primary key ;
⑦ 删除外键约束
alter table <表名> drop foreign key <外键约束名>;
⑧ 删除默认值约束
alter table <表名> alter <删除默认值约束的字段名> drop default ;
⑨ 删除自动增长
alter table <表名> modify 字段名 数据类型 ;
4. 删除语法drop
(1) 删除数据库
drop database 数据库名 ;
(2) 删除数据表
drop table 表名 ;
(3) 删除唯一约束
drop index <唯一约束名> on <表名> ;
注意:唯一约束创建后,系统会默认将其保存到索引中。因此,删除唯一约束就是删除索引,通过show index from <表名>查看索引名。
5. 数据库编码
(1) 查看数据库编码格式
show variables like 'character_set_database' ;
(2) 查看数据表的编码格式
show create table <表名> ;
(3) 创建数据库时指定数据库的字符集
create database <数据库名> character set utf8 ;
(4) 创建数据表时指定数据表的编码格式
create table 表名 (字段名,数据类型,......) default charset = utf8 ;
(5) 修改数据库的编码格式
alter database <数据库名> character set utf8 ;
(6) 修改数据表格编码格式
alter table <表名> character set utf8;
(7) 修改字段编码格式
alter table <表名> change <字段名> <字段名> <数据类型> character set utf8;
四. MySQL使用进阶
前面的一些数据库语法是按创建,修改,删除这三个功能结构梳理的,比较适合临时忘记MySQL语句时进行查阅。
下面将进行以创建并使用和维护数据库这一工作流程进行数据库语法整理:
1. 创建数据库语法:
(1) 创建数据库
create database 库名;
(2) 删除数据库
drop database 库名;
(3) 显示所有数据库
show databases;
(4) 使用数据库
use 库名;
2. 在数据库中创建表语法:
(1) 基础语法:
create table 表名(字段名1 数据类型1 ,字段名2 字段类型2 ,......);
(2) 创建带有约束的数据表
① 主键约束
create table 表名(字段名1 数据类型 primary key);
或者
create table 表名(字段名1 数据类型,[constraint <约束名>] primary key(字段名));
联合主键:
create table 表名(字段名1 数据类型,字段名2 数据类型,[constraint <约束名>] primary key(字段名1, 字段名2));
注:有时会在主键约束后添加auto_increment自动编码
② 唯一约束
create table 表名(字段名1 数据类型 unique);
或者
create table 表名(字段名1 数据类型,[constraint <唯一约束名>] unique(字段名));
③ 非空约束
create table 表名(字段名1 数据类型 not null);
④ 默认值约束
create table 表名(字段名1 数据类型 default 默认值);
注意:字符类型的默认值必须用' '(单引号)括起来
⑤ 外键约束
create table 表名(字段名1 数据类型, [constraint <外键约束名>] foreign key(字段名) references 外键主表名(主键字段名));
(3) 显示所有数据表
show tables;
(4) 查询表结构
desc 表名;
(5) 删除数据表
drop table 表名;
3. 复制现有表
create table 表名 like 被复制表名;(该语句仅复制表名结构等,不复制内容)
create table 表名 as (select * from 被复制表名);(该语句可复制表结构和内容)
4. 修改数据表结构
(1) 数据表重命名
alter table <旧表名> rename <新表名> ;
(2) 修改字段名
alter table <表名> change <原字段名> <新字段名> <数据类型> ;
(3) 修改字段数据类型
alter table <表名> modify <字段名> <新数据类型> ;
(4) 添加新字段
alter table <表名> add <新字段名> <数据类型> [约束条件] [first | after <已存在字段名>] ;
(5) 修改字段的排列位置
alter table <表名> modify <字段名> <数据类型> [first | after <已存在字段名>] ;
(6) 删除数据表中的字段
alter table <表名> drop <字段名> ;
5. 修改数据表约束
(1) 添加主键约束
alter table <表名> add primary key(字段名) ;
alter table <表名> modify 字段名 数据类型 primary key auto_increment ;
如果已设置主键未添加自动编号的:
alter table <表名> modify 字段名 数据类型 auto_increment ;
(2) 添加唯一约束
alter table <表名> add constraint 约束名 unique(字段名) ;
(3) 添加非空约束
alter table <表名> modify 字段名 数据类型 not null ;
(4) 添加默认值约束
alter table <表名> alter 字段名 set default ‘默认值’;
(5) 添加外键约束
alter table <表名> add constraint 约束名 foreign key(字段名) references <主表名>(主表主键字段名) ;
(6)删除主键约束
alter table <表名> drop primary key ;
(7)删除外键约束
alter table <表名> drop foreign key <外键约束名>;
(8)删除默认值约束
alter table <表名> alter <删除默认值约束的字段名> drop default ;
(9)删除唯一约束
drop index <唯一约束名> on <表名> ;
注意:唯一约束创建后,系统会默认将其保存到索引中。因此,删除唯一约束就是删除索引,通过show index from <表名>查看索引名。
(10)删除自动增长
alter table <表名> modify 字段名 数据类型 ;
备注:查询语句约束
select * from information_schema.`TABLE_CONSTRAINTS` where table_name='表名' ;
6. 数据库编码语法
(1) 查看数据库编码格式
show variables like 'character_set_database' ;
(2) 查看数据表的编码格式
show create table <表名> ;
(3) 创建数据库时指定数据库的字符集
create database <数据库名> character set utf8 ;
(4) 创建数据表时指定数据表的编码格式
create table 表名 (字段名,数据类型,......) default charset = utf8 ;
(5) 修改数据库的编码格式
alter database <数据库名> character set utf8 ;
(6) 修改数据表格编码格式
alter table <表名> character set utf8;
(7) 修改字段编码格式
alter table <表名> change <字段名> <字段名> <数据类型> character set utf8;
7. 数据表内容修改语法
update 表名 set 字段名1=值1,字段2=值2... [Where 条件];
8. 删除数据记录语法
delete from 表名 [where 条件];
truncate table 表名;
注意:TRUNCATE语句删除后将重置自增列,表结构及其字段、约束、索引保持不变,执行速度比DELETE语句快
9. 单表查询语法
Select <字段名或表达式列表>
From <数据表名或视图名>
[ Where <检索条件表达式> ]
[ Group By <分组的字段名或表达式> ]
[ Having <筛选条件> ]
[ Order By <排序的字段名或表达式> ASC | DESC ]
[ limit 数值 ]
五. MySQL题目
MySQL题目详见当前专栏内博客
六. MySQL常见问题
MySQL常见问题详见当前专栏内博客
本篇博客为本人学习MySQL时的详细记录,如有错误之处,还望各位指正。
文章为原创,如要转载请注明出处