前言:熟悉安装及访问MySQL数据库以后,还要学会使用MySQL数据库的基本操作,这也是在服务器运维工作中不可或缺的知识。下面将所有数据库语句在MySQL数据库中执行。
首先先介绍一下MySQL数据库中常用的一些命令;输入时可以不区分大小写,但习惯上将MySQL语句中的关键字部分大写。(这里都用小写)注意,在每句话结尾要加上“;”表示这句话的结束。
mysql -u[用户名] -p[密码] //表示进入数据库
quit、exit、Ctrl + d //三种都可退出数据库
Ctrl + a //快速回到行首
Ctrl + e //回到行尾
Ctrl + l //清屏
Ctrl + c //取消本次编辑
select version() //显示数据库版本
select now() //显示数据库时间
select database() //表示查看当前数据库
show databases //表示查看当前服务器中包含的所有数据库
show create database [数据库名] //表示查看创建数据库的语句
show tables //表示查看当前使用的库中包含的表
use mysql //表示显示mysql库中包含的所有表
create database //表示创建一个新的库,需要指定数据库名称作为参数
create table [表名] //表示在当前库中创建一个新的表,需要指定数据表名称作为参数
(创建表之前,应先明确数据表格的结构、各字段的名称和类型等信息)
drop table [库名.表名] //表示删除库中的表,需要指定“库名.表名”作为参数;若只指定表名参数,需先通过执行“use”语句却换到目标库
drop database [数据库名] //表示删除一个库,需要指定库名作为参数
not null //表示不为空
primary key //表示主键
default //表示默认值
auto_increment //表示自动增长,步长为1
int unsigned //表示无符号整形
varchar //可变长字符
decimal (5,2) //表示5个有效字符,2位小数,例如100.00
describe [表名] //用于显示表的结构,即组成表的各字段(列)的信息
show create table [表名] //查看创建表的语句
insert into [表名](字段1,字段2,…)values(字段1的值,字段2的值,…) //向表中插入记录
update 表名 set 字段名 1=值1[,字段名2=值2] where条件表达式 //修改数据记录
delete from 表名 where条件表达式 //删除指定记录,不带where条件的语句表示删除表中所有记录(谨慎操作)
select * from [表名] //查看表的所有内容
下面我们来实际操作
文章目录
一、查看数据库结构
1.查看当前服务器中包含的库
mysql> show databases; //查看数据库信息
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.01 sec)
经初始化后的MySQL服务器,默认建立了四个库:information_schema、mysql、performance_schema、sys(其中mysql库中包含了用户认证相关的表)
2.查看当前使用的库中包含的表
mysql> use mysql; //使用use语句切换到所有使用的库
Database changed
mysql> show tables; //查看mysql库中包含的所有表
+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| user |
。。。。 //省略部分内容
+---------------------------+
31 rows in set (0.00 sec)
MySQ数据库的数据文件存放在 /usr/local/mysql/data目录下,每个数据库对应一个子目录,用于存储数据表文件。每个数据表对应为三个文件,后缀名分别为“.frm” “.myd” “.myi” 。当然也有少数以opt、csm、csv、ibd结尾的
3.查看表的结构
mysql> describe user; //查看user表中的结构
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
| Host | char(60) | NO | PRI | | |
| User | char(32) | NO | PRI | | |
| Select_priv | enum('N','Y') | NO | | N | |
| Insert_priv | enum('N','Y') | NO | | N | |
| Update_priv | enum('N','Y') | NO | | N | |
。。。。 //省略部分内容
+------------------------+-----------------------------------+------+-----+-----------------------+-------+
45 rows in set (0.01 sec)
数据库目前标准的指令集是SQL。SQL是Structured Query Language的缩写,即结构化查询语言。SQL语言主要由以下几部分组成:
- DDL(数据定义语言):用来建立数据库、数据库对象和定义其列,如create、alter、drop。
- DML(数据操纵语言):用来查询、插入、删除和修改数据库中的数据,如select、insert、update、delete。
- DCL(数据控制语言):用来控制数据库组件的存取许可、存取权限等,如commit、rollback、grant、revoke。
4.设置用户权限
1)查看用户权限
mysql> show grants for 'root'@'%'; //查看root用户权限
+-------------------------------------------------------------+
| Grants for root@% |
+-------------------------------------------------------------+
| GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' WITH GRANT OPTION |
+-------------------------------------------------------------+
1 row in set (0.00 sec)
2)删除用户权限
mysql> revoke all on *.* from 'root'@'%';
Query OK, 0 rows affected (0.01 sec)
mysql> show grants for 'root'@'%';
+----------------------------------------------------+
| Grants for root@% |
+----------------------------------------------------+
| GRANT USAGE ON *.* TO 'root'@'%' WITH GRANT OPTION |
+----------------------------------------------------+
1 row in set (0.00 sec)
二、创建及删除库和表
1.创建新的库
mysql> create database school; //创建一个名为“school”的库
Query OK, 1 row affected (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| school | //可以看到创建成功
| sys |
+--------------------+
5 rows in set (0.00 sec)
mysql> use school; //显示school库中的所有表
Database changed
当前创建的school库是空的,其中不包含任何表,在 /usr/local/mysql/data 目录下会自动生成一个与新建的库名相同的空文件夹
2.创建新的表
mysql> create table biao( //创建一个表名为‘biao’,‘()’内为设置的字段
-> id int(4) not null, //第一个字段为id,类型为int,长度为4,不为空
-> name char(10) not null, //第二个字段为name,类型为char,长度为10,不为空
-> address varchar(50) default 'nj', //第三个字段为address,类型为carchar,长度为50,默认为‘nj’
-> score decimal, //第四个字段为score,类型为decimal(浮点型)
-> primary key(id)); //设置id为主键
Query OK, 0 rows affected (0.03 sec)
mysql> describe biao; //用describe命令查看表结构
+---------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------+---------------+------+-----+---------+-------+
| id | int(4) | NO | PRI | NULL | |
| name | char(10) | NO | | NULL | |
| address | varchar(50) | YES | | nj | |
| score | decimal(10,0) | YES | | NULL | |
+---------+---------------+------+-----+---------+-------+
4 rows in set (0.02 sec)
3.删除一个数据表
mysql> drop table biao; //删除名为‘biao’的数据表
Query OK, 0 rows affected (0.01 sec)
mysql> select * from biao; //查看表内容显示error
ERROR 1146 (42S02): Table 'school.biao' doesn't exist
mysql> show tables; //查看表显示为空
Empty set (0.00 sec)
4.删除一个数据库
mysql> drop database school; //删除名为‘school’的库
Query OK, 0 rows affected (0.01 sec)
mysql> show databases; //查看所有库,已经删除‘school’库
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.00 sec)
三、管理表中的数据记录
在上面已经定义好表的结构,下面将对这个表中进行插入,查询,修改等数据记录
1.插入数据记录
mysql> insert into biao (id,name,address,score) values (1,'stu01','bj',87);
Query OK, 1 row affected (0.00 sec)
//插入第一行,id为1、name为stu01、address为bj、score为87;
mysql> insert into biao (id,name,address,score) values (2,'stu02','sh',79);
Query OK, 1 row affected (0.01 sec)
//插入第一行,id为2、name为stu02、address为sh、score为79;
mysql> insert into biao (id,name,address,score) values (3,'stu03',default,90);
Query OK, 1 row affected (0.00 sec)
//插入第一行,id为3、name为stu03、address为default(为默认,默认为nj)、score为90;
mysql> insert into biao (id,name,address,score) values (4,'stu04','',68);
//插入第一行,id为1、name为stu01、address为空、score为87;
Query OK, 1 row affected (0.00 sec)
2.查询数据记录
mysql> select * from biao; //查询‘biao‘中的所有内容
+----+-------+---------+-------+
| id | name | address | score |
+----+-------+---------+-------+
| 1 | stu01 | bj | 87 |
| 2 | stu02 | sh | 79 |
| 3 | stu03 | nj | 90 |
| 4 | stu04 | | 68 |
+----+-------+---------+-------+
4 rows in set (0.00 sec)
3.修改数据记录
mysql> update biao set address='hz' where id=4 and name='stu04'; //修改第四个字段的address为’hz‘
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
mysql> select * from biao;
+----+-------+---------+-------+
| id | name | address | score |
+----+-------+---------+-------+
| 1 | stu01 | bj | 87 |
| 2 | stu02 | sh | 79 |
| 3 | stu03 | nj | 90 |
| 4 | stu04 | hz | 68 |
+----+-------+---------+-------+
4 rows in set (0.00 sec)
这里通过where条件语句的方法,通过id或者name紧缺的查找到第四个字段的address并对其修改
4.删除数据记录
mysql> delete from biao where name='stu04'; //删除第四个字段数据记录
Query OK, 1 row affected (0.01 sec)
mysql> select * from biao;
+----+-------+---------+-------+
| id | name | address | score |
+----+-------+---------+-------+
| 1 | stu01 | bj | 87 |
| 2 | stu02 | sh | 79 |
| 3 | stu03 | nj | 90 |
+----+-------+---------+-------+
3 rows in set (0.00 sec)
总结
- 数据库由数据表和其他数据对象组成
- 经典数据模型有网状模型、层次模型和关系模型
- 主键由一个或多个字段组成,其值具有唯一性,而且不允许取空值(NULL)
一个表只能由一个主键 - 一个关系数据库通常包含多个表,可以通过外键将这些表关联起来
- MySQL是一个开源的SQL数据库软件,默认使用TCP 3306端口提供服务,配置文件是 /etc/my.cnf
- MySQL的基本管理操作包括查看数据库结构、创建及删除库和表、管理表中的数据记录