数据库应用——使用MySQL数据库

前言:熟悉安装及访问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的基本管理操作包括查看数据库结构、创建及删除库和表、管理表中的数据记录
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值