【数据库系列教程】MySQL基本语句

一、SQL类型——结构化查询语言

  • DDL 数据定义语言

    • 对库、表、用户定义的管理
    • create, drop, alter
  • DML 数据管理/操作语言

    • 对表中的数据进行操作
    • insert, delete、update、select
  • DCL 数据控制语言

    • 对数据库用户、权限进行管理
    • grant, revoke

二、数据库管理操作

1.查看数据库

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

2.几个默认的数据库说明

information_schema

  • 保存数据库服务器上元数据信息(数据库名称、数据表名、字段名称、数据类型)

mysql

  • 保存用户名、密码、权限

performance_schema

  • 保存数据服务器性能相关的数据,例如连接数、进程、线程

sys

  • 对information_schema数据库的简化,方便数据库管理员查看

3.创建数据库

> create databse <数据库名称>;

mysql> create database caiwu;
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| caiwu              |
| mysql              |
| performance_schema |
| sys                |
+--------------------+

4.查看数据库创建信息

mysql> create database testdb charset utf8;		#创建一个名为testdb的库,指定utf8编码格式
Query OK, 1 row affected (0.00 sec)

mysql> show create database testdb;
+----------+-----------------------------------------------------------------+
| Database | Create Database                                                 |
+----------+-----------------------------------------------------------------+
| testdb   | CREATE DATABASE `testdb` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)

5.删除数据库

mysql> drop database caiwu;
Query OK, 0 rows affected (0.00 sec)

6.使用数据库

mysql> use game;

7.切换数据库

mysql> select database();
+------------+
| database() |
+------------+
| game       |
+------------+
1 row in set (0.00 sec)

三、数据表操作

1.创建表

> create table 表名(字段名称 数据类型 [属性], 字段名称 数据类型 [属性], .........)

2.数据表类型

数字

  • int、smallint、tinyint、bigint、mediumint 整型
  • int unsigned 无符号整型
  • float(5,3) 单精度浮点数 4.178
  • double(5,3) 双精度浮点数
  • decimal(5,3) 财务

字符

  • char(10) 定长字符
  • varchar(20) 变长字符
  • text 字符
  • enum(“男”, “女”) 枚举 ENUM(“yes”, “no”)

日期时间

  • date YYYY-MM-DD
  • datetime YYYY-MM-DD HH:MM:SS
  • timestamp YYYY-MM-DD HH:MM:SS
  • 在数据变化时,时间会自动更新

属性

  • primary key 主键
  • unique key 惟一键
  • not null 不允许为空
  • auto_increment 自动增长, 配合primary key使用
  • default “数据” 设置字段的默认值

3.查看表

mysql> show tables;
+----------------+
| Tables_in_game |
+----------------+
| account        |
| tb01           |
+----------------+
2 rows in set (0.00 sec)

4.查看表结构

dexc 表命

mysql> desc account;
+----------+------------------+------+-----+---------+----------------+
| Field    | Type             | Null | Key | Default | Extra          |
+----------+------------------+------+-----+---------+----------------+
| id       | int(11)          | NO   | PRI | NULL    | auto_increment |
| name     | char(20)         | NO   |     | NULL    |                |
| password | char(30)         | NO   |     | NULL    |                |
| level    | int(10) unsigned | YES  |     | 1       |                |
+----------+------------------+------+-----+---------+----------------+
4 rows in set (0.03 sec)

5.删除表

mysql> drop table tb01;

四、MySQL存储引擎storage engine

1.查看表的创建信息

mysql> show create table account\G;
*************************** 1. row ***************************
       Table: account
Create Table: CREATE TABLE `account` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL,
  `password` char(30) NOT NULL,
  `level` int(10) unsigned DEFAULT '1',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

2.查看支持的存储引擎

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine             | Support | Comment                                                        | Transactions | XA   | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB             | DEFAULT | Supports transactions, row-level locking, and foreign keys     | YES          | YES  | YES        |
| MRG_MYISAM         | YES     | Collection of identical MyISAM tables                          | NO           | NO   | NO         |
| MEMORY             | YES     | Hash based, stored in memory, useful for temporary tables      | NO           | NO   | NO         |
| BLACKHOLE          | YES     | /dev/null storage engine (anything you write to it disappears) | NO           | NO   | NO         |
| MyISAM             | YES     | MyISAM storage engine                                          | NO           | NO   | NO         |
| CSV                | YES     | CSV storage engine                                             | NO           | NO   | NO         |
| ARCHIVE            | YES     | Archive storage engine                                         | NO           | NO   | NO         |
| PERFORMANCE_SCHEMA | YES     | Performance Schema                                             | NO           | NO   | NO         |
| FEDERATED          | NO      | Federated MySQL storage engine                                 | NULL         | NULL | NULL       |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set (0.00 sec)

3.存储引擎的介绍

  • 不同存储引擎影响数据库性能、功能

  • InnoDB(新版本默认引擎)

    • 支持事务 Transaction、外键
    • 支持行级锁 row level lock
  • MYISAM(旧版本默认引擎)
    • 支持表级锁
    • 不支持事务
    • 查询性能较高
  • MRG_MYISAM
    • 支持将多个MYISAM的表进行合并
  • MEMORY
    • 使用内存来进行存储数据
  • BLACKHOLE
    • 黑洞 #存一个删除一个

4.修改MySQL的默认存储引擎

vim /etc/my.cnf

[mysqld]
default-storage-engine=InnoDB