MySQL学习笔记

这篇博客详细介绍了MySQL的学习笔记,包括MySQL的目录结构、配置、启动与关闭、登录与退出,以及数据库操作、数据类型、约束、记录操作、子查询与连接等核心概念。还探讨了外键约束的要求和操作,强调了在实际开发中逻辑外键约束的重要性。此外,还涵盖了索引、视图、导入导出、备份恢复等高级主题。
摘要由CSDN通过智能技术生成

MySQL目录结构

这里写图片描述

配置my.ini

MySQL5.7的my.ini位于\ProgramData\MySQL\MySQL Server 5.7目录下(可能有的版本的my.ini就在安装目录下),该该目录下还有一个data目录存放我们的创建的数据库。
打开my.ini文件[client]用于配置客户端,主要就是3306端口。[mysqld]配置的是服务端。
这里写图片描述
特别要注意一点:编码方式是utf8而不是utf-8。
在Linux系统中该配置文件在/etc/mysql/my.cnf。

启动、关闭重启MySQL

service mysql start|stop|restart

登录与退出MySQL

root@ubuntu:/etc/mysql# mysql -v    # 查看mysql版本       
mysql  Ver 14.14 Distrib 5.5.35, for debian-linux-gnu (i686) using readline 6.2
root@ubuntu:/etc/mysql# mysql -uroot -p123456 -P3306 -h192.168.132.128 # -u用户名 -p密码(为了安全可以不写,会提示输入) -P端口 -h主机名
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 330
Server version: 5.5.35-0ubuntu0.12.04.2 (Ubuntu)

mysql> \q|exit|quit # 退出mysql

修改mysql提示符

  1. 连接mysql时通过--prompt参数指定
    这里写图片描述
  2. 连接上客户端的时候通过prompt命令指定
    这里写图片描述
    MySQL提示符如下表:
参数 描述
\D 完整日期
\d 当前数据库
\h 服务器名
\u 当前用户

以上的提示符还能连用,例如:

mysql> prompt \u@\h \d> # 用户名@主机名 数据库名
PROMPT set to '\u@\h \d>'
root@localhost demo>

MySQL常用命令

SET NAMES gbk; -- 客户端以GBK的编码形式呈现数据
mysql> SELECT VERSION();    # 显示mysql版本,相当于登录数据库之前输入mysql -V
+-------------------------+
| VERSION()               |
+-------------------------+
| 5.5.35-0ubuntu0.12.04.2 |
+-------------------------+
1 row in set (0.00 sec)

mysql> SELECT USER();       #   显示当前用户
+----------------+
| USER()         |
+----------------+
| root@localhost |
+----------------+
1 row in set (0.00 sec)

mysql> SELECT NOW();        # 显示系统时间
+---------------------+
| NOW()               |
+---------------------+
| 2015-04-05 21:02:31 |
+---------------------+
1 row in set (0.00 sec)

mysql>                      # 在Linux的mysql中也可以使用Ctrl+L清屏

MySQL语句规范

  • 关键字和函数名称全部大写;
  • 数据库名、表名、字段名称全部小写;
  • SQL语句必须以分号结束。

操作数据库

创建数据库

-- 说明:花括号表示必选项,竖线表示多选一,方括号表示可选
CREATE {
   DATABASE|SCHEMA} [IF NOT EXISTS] db_name [DEFAULT] CHARACTER SET [=] character_name
mysql> 
mysql> CREATE DATABASE t1;
Query OK, 1 row affected (0.00 sec)

mysql> 

我们可以使用source命令运行sql脚本。登录mysql数据库。

source 数据库脚本名

查看当前服务器中的数据库列表

SHOW {DATABASES | SCHEMAS} [LIKE 'pattern' | WHERE expr]

正确安装mysql后有4个数据库:
这里写图片描述
这里写图片描述

mysql> SHOW CREATE DATABASE t1; # 查看创建数据库使用的命令
+----------+-------------------------------------------------------------+
| Database | Create Database                                             |
+----------+-------------------------------------------------------------+
| t1       | CREATE DATABASE `t1` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

mysql> CREATE DATABASE IF NOT EXISTS t2 CHARACTER SET GBK; # 使用gbk编码方式创建数据库
Query OK, 1 row affected (0.00 sec)

mysql> SHOW CREATE DATABASE t2;
+----------+------------------------------------------------------------+
| Database | Create Database                                            |
+----------+------------------------------------------------------------+
| t2       | CREATE DATABASE `t2` /*!40100 DEFAULT CHARACTER SET gbk */ |
+----------+------------------------------------------------------------+
1 row in set (0.00 sec)

mysql>

修改数据库

ALTER {
   DATABASE | SCHEMA} [db_name] [DEFAULT] CHARACTER SET [=] character_name

这里写图片描述

删除数据库

DROP {
   DATABASE | SCHEMA} [IF EXISTS] db_name

数据类型和操作数据表

数据类型决定了数据的存储格式,代表了不同的信息类型。

1.整型
这里写图片描述
2.浮点型
这里写图片描述
项目开发中以float居多
3.日期型
这里写图片描述
项目开发中该类型用得并不多,因为涉及到时区的问题,多用数字表示。
4.字符型
这里写图片描述
VARCHAR,TEXT,DATE,TIME,ENUM等类型的数据也需要单引号修饰,而INT,FLOAT,DOUBLE等则不需要。
使用某个数据库

mysql> USE test;            # 使用数据库
Database changed
mysql> SELECT DATABASE();   #查看当前使用的数据库
+------------+
| DATABASE() |
+------------+
| test       |
+------------+
1 row in set (0.00 sec)

mysql> 

创建表

CREATE TABLE [IF NOT EXISTS] table_name(
    column_name data_type,
    ……
)

创建用户表tb_user

CREATE TABLE tb_user(
    username VARCHAR(20),       -- 【用户名】
    age TINYINT UNSIGNED,       -- 【年龄】     无符号微整数(0~255)
    salary FLOAT(8,2) UNSIGNED  -- 【工资】     一共有8位,小数部分有2位
);

查看表

SHOW TABLES [FROM da_name] [LIKE 'pattern'|WHERE expr]

例如:

mysql> CREATE TABLE tb_user(            # 创建表
    -> username VARCHAR(20),
    -> age TINYINT UNSIGNED,
    -> salary FLOAT(8,2) UNSIGNED
    -> );
Query OK, 0 rows affected (0.01 sec)

mysql> SHOW TABLES;                     # 查看表
+----------------+
| Tables_in_test |
+----------------+
| tb_user        |
+----------------+
1 row in set (0.00 sec)

mysql> 

查看表结构

SHOW COLUMNS FROM tb_name # 或者
DESC tb_name

例如:
这里写图片描述
重命名表

RENAME TABLE 原名 TO 新名;
ALTER TABLE 原名 RENAME 新名;
ALTER TABLE 原名 RENAME TO 新名;

插入记录

INSERT [INTO] tb_name [(col_name,...)] VALUES(val,...)

例如:

mysql> INSERT tb_user VALUES('Tom',22,3658.32); # 当我们省略字段名的时候所有的字段都要赋值!
Query OK, 1 row affected (0.03 sec)

mysql> INSERT tb_user VALUES('Tom',22);
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> 
mysql> INSERT tb_user(username,age) VALUES('Kitty',18); # 为指定字段赋值
Query OK, 1 row affected (0.03 sec)

记录的查询

SELECT expr,... FROM tb_name

例如:

mysql> SELECT * FROM tb_user; # 这里的*表示的是字段的过滤
+----------+------+---------+
| username | age  | salary  |
+----------+------+---------+
| Tom      |   22 | 3658.32 |
| Kitty    |   18 |    NULL |
+----------+------+---------+
2 rows in set (0.00 sec)

空值与非空
NULL允许空值(默认),NOT NULL禁止非空。例如:
这里写图片描述
字段的自动编号
AUTO_INCREMENT该字段要么是整数,要么小数位数为0,且必须和主键组合使用,默认情况下初始值为1,增量为1.——保证记录的唯一性。
主键约束(PRIMARY KEY)
每张表只能有一个主键,能够保证记录的唯一性,主键自动为NOT NULL,并自动创建索引。
主键我们可以写成KEY或者PRIMARY KEY。
这里写图片描述
这里写图片描述

唯一约束——UNIQUE KEY

  • 唯一约束也可以保证记录的唯一性
  • 唯一约束的字段可以为NULL
  • 一张表可以有多个唯一约束
mysql> CREATE TABLE tb_user(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值