1.mysql学习开篇-基本操作和基础数据类型

16 阅读5分钟

首先本文是记录自己根据教程学习的一个基础笔记文档,三个阶段基础、正文、和运维三个阶段

MySQL安装

官方:www.mysql.com/

下载地址:downloads.mysql.com/archives/in…

  • 启动与停止命令
  • 使用MySQL提供的客户端命令行工具 mysql [-h127.0.0.1] [-P3306] -u root-p

-h:MySQL服务所在的主机IP

-P:MySQL服务端口号,默认3306

-u:MySQL数据库用户名

-p:MySQL数据库用户名对应的密码

[]内为可选参数,如果需要连接远程的MySQL,需要加上这两个参数来指定远程主机IP、端口,如果连接本地的MySQL,则无需指定这两个参数。

C:\Users\Administrator>net stop mysql
MySQL 服务正在停止.
MySQL 服务已成功停止。
C:\Users\Administrator>net start mysql
MySQL 服务正在启动 .............
MySQL 服务已经启动成功。

C:\Users\Administrator>mysql -u root -p
Enter password: ****
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.34 MySQL Community Server - GPL

Copyright (c) 2000, 2023, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

SQL分类

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

分类全称说明
DDLData Definition Language数据定义语言,用来定义数据库对象(数据库,表,字段)
DMLData Manipulation Language数据操作语言,用来对数据库表中的数据进行增删改
DQLData Query Language数据查询语言,用来查询数据库中表的记录
DCLData Control Language数据控制语言,用来创建数据库用户、控制数据库的访问权限

1.DLL

1). 查询所有数据库 show databases ;

2). 查询当前数据库 select database();

3). 创建数据库 create database [ if not exists ] 数据库名 [ default charset 字符集 ] [ collate 排序规则 ] ;

4). 删除数据库drop database [ if exists ] 数据库名;

5). 切换数据库use 数据库名;

mysql> show databases ;
+--------------------+
| Database           |
+--------------------+
| db_04              |
+--------------------+
15 rows in set (0.01 sec)

mysql> create database if not exists ceshi;
Query OK, 1 row affected, 1 warning (0.00 sec)

mysql> drop database if exists ceshi;
Query OK, 0 rows affected (0.01 sec)

mysql> use db_04;
Database changed

表操作

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

2). 查看指定表结构desc 表名;

3). 查询指定表的建表语句show create table 表名 ;

4). 创建表结构CREATE TABLE 表名(字段1 字段1类型 [ COMMENT 字段1注释 ],字段n 字段n类型 [COMMENT 字段n注释 ]) [ COMMENT 表注释 ] ;

mysql> show tables;
+-----------------+
| Tables_in_db_04 |
+-----------------+
| dept            |
| emp             |
+-----------------+
2 rows in set (0.00 sec)

mysql> desc dept;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| id          | int unsigned | NO   | PRI | NULL    | auto_increment |
| name        | varchar(10)  | NO   | UNI | NULL    |                |
| create_time | datetime     | YES  |     | NULL    |                |
| update_time | datetime     | YES  |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)

mysql> show create table dept;
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                                                                                                                                                                                                                                                                        |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| dept  | CREATE TABLE `dept` (
  `id` int unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID, 主键',
  `name` varchar(10) NOT NULL COMMENT '部门名称',
  `create_time` datetime DEFAULT NULL COMMENT '创建时间',
  `update_time` datetime DEFAULT NULL COMMENT '修改时间',
  PRIMARY KEY (`id`),
  UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci COMMENT='部门表' |
+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.01 sec)

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

image.png

create table tb_user(

    id int comment '编号',

    name varchar(50) comment '姓名',

    age int comment '年龄',

    gender varchar(1) comment '性别'

) comment '用户表';

表操作-数据类型 1). 数值类型

类型大小有符号(SIGNED)范围无符号(SIGNED)范围描述
TINYINTbyte(-128,127)(0,255)小整 数值
SMALLINT2bytes(-32768,32767)(0,65535)大整 数值
MEDIUMINT3bytes(-8388608,8388607)(0,16777215)大整 数值
INT/INTEGER4bytes(-2147483648,2147483647)(0,4294967295)大整 数值
BIGINT8bytes(-2^63,2^63-1)(0,2^64-1)极大 整数值
FLOAT4bytes(-3.402823466 E+38,3.402823466351 E+38)0 和 (1.175494351 E-38,3.402823466 E+38)单精度浮点数值
DOUBLE8bytes(-1.7976931348623157E+308,1.7976931348623157E+308)0 和 (2.2250738585072014E-308,1.7976931348623157E+308))双精度浮点数值
DECIMAL依赖于M(精度)和D(标度)的值依赖于M(精度)和D(标度)的值小数值(精确定点数)
如:

1). 年龄字段 -- 不会出现负数, 而且人的年龄不会太大

age tinyint unsigned

2). 分数 -- 总分100分, 最多出现一位小数

score double(4,1)

2). 字符串类型

类型大小描述
CHAR0-255 bytes定长字符串(需要指定长度)
VARCHAR0-65535 bytes变长字符串(需要指定长度)
TINYBLOB0-255 bytes不超过255个字符的二进制数据
TINYTEXT0-255 bytes短文本字符串
BLOB0-65 535 bytes二进制形式的长文本数据
TEXT0-65 535 bytes长文本数据
MEDIUMBLOB0-16 777 215 bytes二进制形式的中等长度文本数据
MEDIUMTEXT0-16 777 215 bytes中等长度文本数据
LONGBLOB0-4 294 967 295 bytes二进制形式的极大文本数据
LONGTEXT0-4 294 967 295 bytes极大文本数据
charvarchar 都可以描述字符串,char是定长字符串,指定长度多长,就占用多少个字符,和

字段值的长度无关 。而varchar是变长字符串,指定的长度为最大占用长度 。相对来说,char的性

能会更高些。
如:

1). 用户名 username ------> 长度不定, 最长不会超过50

username varchar(50)

2). 性别 gender ---------> 存储值, 不是男,就是女

gender char(1)

3). 手机号 phone --------> 固定长度为11

phone char(11)

3). 日期时间类型

类型大小范围格式描述
DATE31000-01-01 至 9999-12-31YYYY-MM-DD日期值
TIME3-838:59:59 至 838:59:59HH:MM:SS时间值或持续时间
YEAR11901 至 2155YYYY年份值
DATETIME81000-01-01 00:00:00 至9999-12-31 23:59:59YYYY-MM-DD HH:MM:SS混合日期和时间值
TIMESTAMP41970-01-01 00:00:01 至 2038-01-19 03:14:07YYYY-MM-DD HH:MM:SS混合日期和时间值,时间戳
如:

1). 生日字段 birthday

birthday date

2). 创建时间 createtime

createtime datetime