【剑指MySQL】数据库基础(1)

1. 创建数据库及表的流程

1.1 创建数据库

1.1.1 语法

sql 复制代码
CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [,
create_specification] ...]

create_specification:
	[DEFAULT] CHARACTER SET charset_name
	[DEFAULT] COLLATE  collation_name

说明:

  • 大写的表示关键字;
  • \[\]是可选项;
  • CHARACTER SET:指定数据库采用的字符集;
  • COLLATE:指定数据库字符集的校验规则;

1.1.2 创建数据库案例

sql 复制代码
create database example;

说明:当我们创建数据库没有指定字符集和校验规则时,系统使用默认字符集:utf8,校验规则是:utf8_general_ci。

1.1.3 字符集和校验规则

查看系统默认字符集以及校验规则

sql 复制代码
show variable like 'character_set_database';
show variable like 'collation_database';

查看数据库支持的字符集

sql 复制代码
show charset;

字符集主要是控制用什么语言,例如utf8就可以使用中文。

查看数据库支持的字符集校验规则

sql 复制代码
show collation;

校验规则对数据库的影响

  • 不区分大小写;utf8_general_ci
  • 区分大小写; utf8_bin

1.2 使用数据库

1.2.1 查看数据库

sql 复制代码
show databases;

1.2.2 显示创建语句

sql 复制代码
show create database 数据库名;

上图中,数据库名example的反引号,是为了防止使用的数据库名是关键字。/*!40100 DEFAULT CHARACTER SET utf8 */这个不是注释,表示当前mysql版本大于4.01版本,就执行这句话。

1.2.3 操作数据库example

sql 复制代码
use example;

1.2.4 修改数据库

语法:

sql 复制代码
ALTER DATABASE db_name
[alter_spacification [,alter_spacification] ...]

alter specification:
[DEFAULT] CHARACTER SET  charset_name
[DEFAULT] COLLATE collation_name

说明:

  • 对数据库的修改主要指是修改数据库的字符集、校验规则

1.2.5 数据库删除

sql 复制代码
DROP DATABASE [IF EXISTS] db_name;

执行删除之后的结果:

  • 数据库内部看不到对应的数据库;
  • 对应的数据库文件夹被删除,级联删除,里面的数据表全部被删;

1.3 创建数据库表

1.3.1 语法

sql 复制代码
CREATE TABLE table_name(
	field1 datatype,
    field2 datatyp2,
    field3 datatyp3
)character set 字符集 collate 校验规则 engine 存储引擎;

说明:

  • field表示列名;
  • datatype表示列的类型;
  • character set字符集,如果没有指定字符集,则以所在数据库的字符集为准;
  • collate校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准;

1.3.2 创建表案例

sql 复制代码
create table student(
	id int,
	name varchar(32),
	gender varchar(2)
);

说明:不同的存储引擎,创建表的文件不一样;

1.3.3 查看表结构

sql 复制代码
desc 表名;

  上图中,Field字段名Type字段类型Null是否允许为空、Key索引类型、Default默认值和Extra扩充

1.4 表中插入数据

sql 复制代码
insert into student (id,name,gender) values (1,'刘备','男');
insert into student (id,name,gender) values (2,'关羽','男');
insert into student (id,name,gender) values (3,'张飞','男');

1.5 修改表

  在项目实际开发中,经常修改某个表的结构,例如字段名字,字段大小,字段类型,表的字符集类型,表的存储引擎等,我们有时还需要添加字段、删除字段等,这时就需要修改表:

sql 复制代码
ALTER TABLE tablename ADD (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename MODIFY (column datatype [DEFAULT expr][,column datatype]...);
ALTER TABLE tablename DROP(column);

插入新字段后,对原来数据没有影响。

修改name,将其长度改为60

sql 复制代码
alter table student modify name varchar(60);

删除asset列

sql 复制代码
alter table student drop asset;

修改表的名称

sql 复制代码
alter table tablename_old rename to tablename_new;--to可以省略掉

修改列的名称

sql 复制代码
alter table student change name xingming varchar(60);--新字段选哟完整定义

1.6 查询表中的数据

sql 复制代码
select * from student;

1.7 删除表

语法:

sql 复制代码
DROP [TEMPORARY] TABLE [IF EXISTS] tbl_name [, tbl_name]...

实例:

sql 复制代码
drop table t1;

2. 存储引擎

  存储引擎是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。

  MySQL的核心就是插件式存储引擎,支持多种存储引擎。

2.1 查看存储引擎

sql 复制代码
show engines;

2.2 存储引擎对比

  以下是对InnoDB、MyISAM和Memory三种存储引擎在事务支持、存储结构、锁等方面的纤细对比:

相关推荐
张洛闻Eren8 小时前
MySQL 维护稳定系统【MySQL第二课】
linux·数据库·mysql·云原生
布莱克6059 小时前
理解索引:从概念到实践
数据库·mysql
g105655913912 小时前
LAMP博客平台Wordpress实战
android·mysql·nginx·php
我不是疯子是傻子12 小时前
Qt CAN通信周期发送抖动?实测定时器精度校准与时间戳补偿方案
开发语言·数据库·qt
这个DBA有点耶13 小时前
数据库迁移怎么做到“零翻车“:金仓 KDMS/KDTS/KFS 工具链实测
数据库·架构·dba
2501_9378609413 小时前
MySQL联合查询(多表查询)
数据库·mysql
名字还没想好☜14 小时前
Next.js 用 Server Components 直连数据库:去掉 API 层的边界,和三条别踩的安全红线
前端·javascript·数据库·安全·react·next.js
迷迭香yy14 小时前
行业板块轮动因子实战从板块资金到因子建模的本地化Python全流程
数据库·人工智能·python
SelectDB15 小时前
抖音集团 实时数据仓库:Apache Doris / SelectDB 的技术能力与实践
数据库
SelectDB15 小时前
网易 日志与时序数据分析:Apache Doris / SelectDB 的技术能力与实践
数据库