初识MySQL及快速入门

1 什么是数据库

概念:

长期存放在计算机内,有组织、可共享的大量数据的集合,是一个数据“仓库

作用:

保存、管理数据

1.1数据库总览

关系型数据库(SQL):

MySQL、Oracle、SQL Server、SQLite、DB2

非关系型数据库(NOSQL)

Redis、MongoDB

1.2 什么是DBMS

数据库管理系统(Database Management System):

数据管理软件,科学组织和存储数据、高效地获取和维护数据

2 MySQL简介

概念:

是现流行的开源、免费的关系型数据库

特点;

  • 免费、开源数据库
  • 小巧、功能齐全
  • 使用便捷
  • 可运行于Windows或Linux操作系统
  • 可适用于中小型甚至大型网站应用

2.1 MySQL的运行机制

3 SQL

全称 Structured Query Language,结构化查询语言。操作关系型数据库的编程语言,定义了

一套操作关系型数据库统一标准

3.1 SQL通用语法

在学习具体的SQL语句之前,先来了解一下SQL语言的同于语法。

1). SQL语句可以单行或多行书写,以分号结尾。

2). SQL语句可以使用空格/缩进来增强语句的可读性。

3). MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。

4). 注释:

  • 单行注释:-- 注释内容或 # 注释内容
  • 多行注释:/* 注释内容 */

3.2 SQL分类

SQL语句,根据其功能,主要分为四类:DDL、DML、DQL、DCL。

4 DDL

Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段)

4.1命令行数据库操作

1). 查询所有数据库

show databases ;

2). 查询当前数据库

select database() ;

3). 创建数据库

create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序

规则 ] ;

如:

在同一个数据库服务器中,不能创建两个名称相同的数据库,否则将会报错。

可以通过if not exists 参数来解决这个问题,数据库不存在, 则创建该数据库,如果存在,则不

创建。

create database if not extists itcast;

4). 删除数据库

drop database [ if exists ] 数据库名 ;

同样的道理,如果删除一个不存在的数据库,将会报错。此时,可以加上参数 if exists ,如果数据库存在,再 执行删除,否则不执行删除。

5). 切换数据库

use 数据库名 ;

我们要操作某一个数据库下的表时,就需要通过该指令,切换到对应的数据库下,否则是不能操作的。

4.2 表操作

1). 查询当前数据库所有表

show tables;

举个例子:

比如,我们可以切换到sys这个系统数据库,并查看系统数据库中的所有表结构。

use sys; 
show tables;

2). 查看指定表结构

desc 表名 ;

通过这条指令,我们可以查看到指定表的字段,字段的类型、是否可以为NULL,是否存在默认值等信

息。

3). 查询指定表的建表语句

show create table 表名 ;

通过这条指令,主要是用来查看建表语句的,而有部分参数我们在创建表的时候,并未指定也会查询

到,因为这部分是数据库的默认值,如:存储引擎、字符集等

4). 创建表结构

CREATE TABLE 表名(
字段1 字段1类型 [ COMMENT 字段1注释 ],
字段2 字段2类型 [COMMENT 字段2注释 ],
字段3 字段3类型 [COMMENT 字段3注释 ],
......
字段n 字段n类型 [COMMENT 字段n注释 ]
) [ COMMENT 表注释 ] ;

注意: [...] 内为可选参数,最后一个字段后面没有逗号

如:我们创建一张表 tb_user ,对应的结构如下,那么建表语句为:

create table tb_user(
id int comment '编号',
name varchar(50) comment '姓名',
age int comment '年龄',
gender varchar(1) comment '性别'
) comment '用户表';

4.3表列类型

MySQL中的数据类型有很多,主要分为四类:数值类型、字符串类型、日期时间类型、NULL值。

1). 数值类型

类型

说明

取值范围

存储需求

tinyint

非常小的数据

有符值: -27 ~ 27-1

无符号值:0 ~ 28-1

1字节

smallint

较小的数据

有符值: -215 ~ 215-1

无符号值: 0 ~ 216-1

2字节

mediumint

中等大小的数据

有符值: -223 ~ 223-1

无符号值: 0 ~ 224-1

3字节

int

标准整数

有符值: -231 ~ 231-1

无符号值:0 ~ 232-1

4字节

bigint

较大的整数

有符值: -263 ~263-1

无符号值:0 ~264-1

8字节

float

单精度浮点数

±1.1754351e -38

4字节

double

双精度浮点数

±2.2250738585072014e -308

8字节

decimal

字符串形式的浮点数

decimal(m, d)

m个字节

如:
1). 年龄字段 -- 不会出现负数, 而且人的年龄不会太大
age tinyint unsigned
2). 分数 -- 总分100分, 最多出现一位小数
score double(4,1)

2). 字符串类型

类型

说明

最大长度

char[(M)]

固定长字符串,检索快但费空间, 0 <= M <= 255

M字符

varchar[(M)]

可变字符串

0 <= M <= 65535

变长度

tinytext

微型文本串

28–1字节

text

文本串

216–1字节

如:
1). 用户名 username ------> 长度不定, 最长不会超过50
username varchar(50)
2). 性别 gender ---------> 存储值, 不是男,就是女
gender char(1)
3). 手机号 phone --------> 固定长度为11
phone char(11)

3). 日期时间类型;

类型

说明

取值范围

DATE

YYYY-MM-DD,日期格式

1000-01-01~ 9999-12-31

TIME

Hh:mm:ss ,时间格式

-838:59:59~838:59:59

DATETIME

YY-MM-DD hh:mm:ss

1000-01-01 00:00:00

9999-12-31 23:59:59

TIMESTAMP

YYYYMMDDhhmmss格式表示的时间戳

197010101000000 ~2037年的某个时刻

YEAR

YYYY格式的年份值

1901~2155

4).NULL值

  • 理解为“没有值”或“未知值”
  • 不要用NULL进行算术运算,结果仍为NULL

4.4字段属性

1) UNSIGNED

  • 无符号的
  • 声明该数据列不允许负数

2)ZEROFILL

  • 0填充的
  • 不足位数的用0来填充,如 int(3),5则为 005

3)AUTO_INCREMENT

  • 自动增长的,每添加一条数据,自动在上一个记录数上加1
  • 通常用于设置主键,且为整数类型

可定义起始值和步长

4)NULL 和 NOT NULL(这个属性要写在一起 不能分开)

  • 默认为NULL,即没有插入该列的数值
  • 如果设置为NOT NULL,则该列必须有值

5)DEFAULT

  • 默认的
  • 用于设置默认值
  • 例如,性别字段,默认为“男”,否则为“女”;若无指定该列的值,则默认为“男”的值

4.5表列类型注释

 CREATE   TABLE [ IF NOT EXISTS ]    `test`   (
      `id`   int (11)  UNSIGNED  COMMENT   ‘编码号’
)COMMENT=‘测试表’;

4.6设置数据表字符集

CREATE TABLE `user` (
id INT, `name` VARCHAR(255),
`password` VARCHAR(255), 
`birthday` DATE)
DEFAULT CHARSET utf8mb4 COLLATE utf8mb4_0900_ai_ci ENGINE INNODB;

DEFAULT CHARSET 设置表的字符集

COLLATE 设置表的排序规则

5 修改\删除数据表

下面代码示例要用的表:

  1. 编号(纯数字)
  2. 员工工号 (字符串类型,长度不超过10位)
  3. 员工姓名(字符串类型,长度不超过10位)
  4. 性别(男/女,存储一个汉字)
  5. 年龄(正常人年龄,不可能存储负数)
  6. 身份证号(二代身份证号均为18位,身份证中有X这样的字符)
  7. 入职时间(取值年月日即可)
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
entrydate date comment '入职时间'
) comment '员工表';

5.1 修改数据表

1). 添加字段

ALTER TABLE 表名 ADD 字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

如:

为emp表增加一个新的字段”昵称”为nickname,类型为varchar(20)

ALTER TABLE emp ADD nickname varchar(20) COMMENT '昵称';

2). 修改数据类型

ALTER TABLE 表名 MODIFY 字段名 新数据类型 (长度);

3). 修改字段名和字段类型

ALTER TABLE 表名 CHANGE 旧字段名 新字段名 类型 (长度) [ COMMENT 注释 ] [ 约束 ];

如:

将emp表的nickname字段修改为username,类型为varchar(30)

ALTER TABLE emp CHANGE nickname username varchar(30) COMMENT '昵称';

4). 删除字段

ALTER TABLE 表名 DROP 字段名;

如:

将emp表的字段username删除

ALTER TABLE emp DROP username;

5). 修改表名

ALTER TABLE 表名 RENAME TO 新表名

5.2 删除表

1). 删除表

DROP TABLE [ IF EXISTS ] 表名;

可选项 IF EXISTS 代表,只有表名存在时才会删除该表,表名不存在,则不执行删除操作(如果不

加该参数项,删除一张不存在的表,执行将会报错)。

2). 删除指定表, 并重新创建表

TRUNCATE TABLE 表名;

注意: 在删除表的时候,表中的全部数据也都会被删除。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值