MySQL简述

数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。

保存数据的容器

常用的保存数据的容器有数组,集合,文件以及数据库。数组,集合将数据存储在内存中,但内存中的数据具有易失性,很容易丢失。文件可以实现永久存储,但文件不适用于大量文件的存储,难于检索查询。

数据库优点

  • 实现数据持久化
  • 使用完整的管理系统统一管理,易于查询

数据库相关概念

DB(database)

数据库,存储数据的“仓库”。保存了一系列有组织的数据

DBMS(Database Management System)

数据库管理系统,数据库通过数据库管理系统创建和操作容器(常见的DBMS有:MySQL,Oracle,DB2,Sql Server)

SQL(Structure Query Language)

结构化查询语言,专门用来与数据库通信的语言。SQL具有诸多优点:它不是某个特定数据库供应商专有的语言,几乎所有主流DBMS都支持SQL。SQL语言简单易学,虽然简单,但是一种强有力的语言,可以灵活运用其他语言进行诸多复杂和高级的数据库操作

数据库的特点

  • 将数据放到表中,再将表放入数据库中
  • 一个数据库中可以有多张表,每张表都有自己的名字用于标识自己,表名具有唯一性,即不可以重复
  • 表具有一些特性,定义了数据在表中如何存储,类似于Java中类的设计
  • 表由列组成,或者称为“字段”,所有表都是由一个或多个列组成的,每一列类似Java中的“属性”
  • 表中数据按行存储,每行类似Java中的一个对象

DBMS分类

  • 基于共享文件系统的DBMS(Access)
  • 基于客户机–服务器的DBMS(MySQL,Oracle,Sql Server)

MySQL优点:

成本低:开放源代码,一般可以免费试用。性能高:执行很快。简单:易安装和使用


基本操作语法

1
2
3
4
// 开启MySQL服务
net start mysql0214
//关闭MySQL服务
net stop mysql0214

root用户登录可以直接利用MySQL自带的Command Line Client登录,其他用户可以利用命令行如下操作进入

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
mysql -h localhost -P 3306 -u root -p

//之后输入对应用户密码即可登录
//第一个mysql不再是容器名称,而是mysql命令的意思
//-h表示主机
//-P表示端口
//-u表示用户
//-p表示密码


//本机用户可以直接简写成如下格式:
mysql -u root -p

//密码可以直接显示在该语句中,而不是换行输入
mysql -u root -prenboyu010214

//注意,-p和密码之间不允许有空格存在

常见命令

展示当前数据库 show databases;

1
2
3
4
5
6
7
8
9
10
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| test |
+--------------------+
4 rows in set (0.01 sec)

查看某数据库内容的两种方式

  • 方式一

利用 use 库名; 先进入对应库中

利用 show tables; 语句展示库中内容。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
mysql> use information_schema;
Database changed
mysql> show tables;
+---------------------------------------+
| Tables_in_information_schema |
+---------------------------------------+
| CHARACTER_SETS |
| COLLATIONS |
| COLLATION_CHARACTER_SET_APPLICABILITY |
| COLUMNS |
| COLUMN_PRIVILEGES |
| ENGINES |
| EVENTS |
| FILES |
| GLOBAL_STATUS |
| GLOBAL_VARIABLES |
| KEY_COLUMN_USAGE |
| PARAMETERS |
| PARTITIONS |
| PLUGINS |
| PROCESSLIST |
| PROFILING |
| REFERENTIAL_CONSTRAINTS |
| ROUTINES |
| SCHEMATA |
| SCHEMA_PRIVILEGES |
| SESSION_STATUS |
| SESSION_VARIABLES |
| STATISTICS |
| TABLES |
| TABLESPACES |
| TABLE_CONSTRAINTS |
| TABLE_PRIVILEGES |
| TRIGGERS |
| USER_PRIVILEGES |
| VIEWS |
| INNODB_CMP_RESET |
| INNODB_TRX |
| INNODB_CMPMEM_RESET |
| INNODB_LOCK_WAITS |
| INNODB_CMPMEM |
| INNODB_CMP |
| INNODB_LOCKS |
+---------------------------------------+
37 rows in set (0.00 sec)
  • 方式二

利用 show tables from 库名; 直接查看库中数据内容,不需要进入(也就是说没有走出原来的库)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
mysql> show tables from mysql;
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| event |
| func |
| general_log |
| help_category |
| help_keyword |
| help_relation |
| help_topic |
| host |
| ndb_binlog_index |
| plugin |
| proc |
| procs_priv |
| proxies_priv |
| servers |
| slow_log |
| tables_priv |
| time_zone |
| time_zone_leap_second |
| time_zone_name |
| time_zone_transition |
| time_zone_transition_type |
| user |
+---------------------------+
24 rows in set (0.01 sec)

查看当前所在的库 select database();

1
2
3
4
5
6
7
mysql> select database();
+--------------------+
| database() |
+--------------------+
| information_schema |
+--------------------+
1 row in set (0.00 sec)

在库中创建表格 create table 表名();

1
2
3
4
mysql> create table stuinfo(
-> id int,
-> name varchar(20));
Query OK, 0 rows affected (0.35 sec)

查看表的结构 desc 表名;

1
2
3
4
5
6
7
8
mysql> desc stuinfo;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | YES | | NULL | |
| name | varchar(20) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.04 sec)

向表中插入数据 insert into 表名 (id,name) values(1,’Leslie’);

1
2
3
4
5
mysql> insert into stuinfo (id,name) values(1,'Leslie');
Query OK, 1 row affected (0.00 sec)

mysql> insert into stuinfo (id,name) values(2,'John');
Query OK, 1 row affected (0.01 sec)

查看表中数据 select * from 表名;

1
2
3
4
5
6
7
8
mysql> select * from stuinfo;
+------+--------+
| id | name |
+------+--------+
| 1 | Leslie |
| 2 | John |
+------+--------+
2 rows in set (0.01 sec)

删除表中数据 delete from 表名 where id=1;

1
2
mysql> delete from stuinfo where id=1;
Query OK, 1 row affected (0.01 sec)

查看当前MySQL版本

在MySQL窗口中:

1
2
3
4
5
6
7
mysql>  select version();
+-----------+
| version() |
+-----------+
| 5.5.27 |
+-----------+
1 row in set (0.00 sec)

在DOS窗口中:

1
2
C:\Windows\system32>mysql --V
mysql Ver 14.14 Distrib 5.5.27, for Win64 (x86)

MySQL语法规范

  1. 不区分大小写,但建议关键字大写,表名,列名小写
  2. 每条命令以分号结尾
  3. 每条命令根据需要,可以缩进或换行
  4. 注释
    • 单行注释:#注释文字
    • 单行注释:– 注释文字(注意中间必须有空格)
    • 多行注释:/* 注释文字 */

结构化查询语言SQL

(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

SQL语言分类

DQL语言

(Data Query Language)数据查询语言,主要用于查询功能

DML语言

(Data Manipulation Language)数据操作语言,主要用于增加,删除与修改

DDL语言

(Data Define Language)数据定义语言,有关库和表的定义

TCL语言

(Transaction Control Language)事务控制语言,事务和事务处理