MySQL数据库基础
MySQL数据库基础
本文的所有操作是基于CMD环境,MySQL通过在命令行中输入SQL语句对数据库进行操作。配置问题可参考《打通MySQL的操作权限》中的内容,该文算是针对前期的环境配置问题提供了一个较为全面的解决方案,与本文是一个相(yao)辅(xiang)相(hu)成(ying)的关系。MySQL官方文档访问链接 https://dev.mysql.com/doc 。
一、连接相关
1. 启动MySQL服务器:net start mysql
2. 连接MySQL数据库:mysql -uroot -h127.0.0.1 -ppassword
3. 断开MySQL数据库:连接到MySQL服务器后,可通过在MySQL提示符下输入exit;或是quit;断开MySQL连接。
4. 停止MySQL服务器,一共有三种基本方式。
(1)如果将MySQL设置为Windows服务,可以通过控制面板,系统安全,管理工具,服务 列表中右击mysql服务,在弹出的快捷菜单中选择“停止”即可。
(2)net stop mysql 回车
(3)mysqladmin -uroot shutdown -ppassword
二、数据库操作
1. 创建数据库:CREATE DATABASE 如:create database db_admin;
数据库命名的注意事项:
(1)不能与其他数据库重名,否则将发生错误;
(2)名称可以由任意字母、数字、下划线_和$组成,可以使用上述的任意字符开头,但不能单独使用数字,否则会造成它与数值的混淆;
(3)名称最长可为64个字符,而别名最多可多达256个字符;
(4)不能使用MySQL关键字作为数据库名、表名。
(5)Windows下数据库名和表名大小写不敏感,而在Linux环境下大小写是敏感的。为了便于数据库在不同平台的移植,建议采用小写定义数据库名和表名。
2. 查看数据库:SHOW DATABASES 如:mysql> show databases;
3. 选择数据库:USE DATABASE(数据库名) 如:mysql> use db_admin;
4. 删除数据库:DROP DATABASE 数据库名; 如:mysql> drop database db_admin;
三、MySQL数据表操作
在对MySQL数据表进行操作之前,必须首先使用USE语句选择数据库,才可在指定的数据库中对数据表进行操作。
1. 创建数据表CREATE TABLE 详见 官方参考手册 语法格式如下:
CREATE [TEMPORARY] TABLE [IF NOT EXISTS] tbl_name
(create_definition,...)
[table_options]
[partition_options]
参数说明:
参 数 | 说 明 |
TEMPORARY | 如果使用该关键字,表示创建一个临时表 |
IF NOT EXISTS | 该关键字用于避免表不存在时MySQL报告的错误 |
create_definition | 表的列属性部分。MySQL要求在创建表时,表至少包含一列 |
table_options | 表的一些特性参数 |
partition_options |
其中,属性create_definition,每一列定义的具体格式如下:
create_definition:
col_name column_definitioncolumn_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[STORAGE {DISK|MEMORY|DEFAULT}]
[reference_definition]
参 数 | 说 明 |
col_name | 字段名 |
data_type | 字段类型 |
NOT NULL | NULL | 指出该列是否允许是空值,系统一般默认允许为空值,所以当不允许为空值时,必须使用NOT NULL |
DEFAULT default_value | 表示默认值 |
AUTO_INCREMENT | 表示是否是自动编号,每个表只能有一个AUTO_INCREMENT列,并且必须被索引 |
PRIMARY KEY |
表示是否为主键。一个表只能有一个PRIMARY KEY。如表中没有一个PRIMARY KEY,而某些应用需要PRIMARY KEY,MySQL将返回第一个没有没有任何NULL列的UNIQUE键,作为PRIMARY KEY |
reference_definition | 为字段添加注释 |
以上是创建数据表的一些基础知识,看起来十分复杂,但在实际应用中使用最基本的格式创建数据表即可,具体格式如下:
create table table_name(列名1 属性, 列名2 属性...);
create table tb_admin(
id int auto_increment primary key,
user varchar(30) not null,
password varchar(30) not null,
createtime datetime);
2. 查看表结构SHOW COLUMNS或DESCRIBE
对于创建成功的数据表,可以使用 SHOW COLUMNS或DESCRIBE语句查看指定数据表的表结构。下面分别对这两个语句进行介绍。
(1)SHOW [FULL]COLUMNS FROM 数据表名 [FROM 数据库名]; 或 SHOW [FULL]COLUMNS FROM 数据库名.数据表名;
上图是 show columns from tb_admin from db_admin; 的输出结果。
(2)DESCRIBE 数据表名; 其中 DESCRIBE 可以简写成DESC。在查看表结构时,也可以只列出某一列的信息。如:DESC 数据表名 列名;
综上, show columns from tb_admin from db_admin; 等价于 show columns from db_admin.tb_admin; 等价于 describe tb_admin; 等价于 desc tb_admin;
3. 修改表结构ALTER TABLE
修改表结构使用ALTER TABLE语句。修改表结构指增加或者删除字段、修改字段名或者字段类型、设置或取消主键外键、设置或者取消索引以及修改表的注释等。
ALTER [ONLINE | OFFLINE] [IGNORE] TABLE tbl_name
[alter_specification [, alter_specification] ...]
[partition_options]
当指定IGNORE时,如果出现重复关键的行,则只执行一行,其他重复的行被删除。
其中,alter_spec子句定义要修改的内容,其部分语法如下,详见参考手册。
alter_specification:
table_options| ADD [COLUMN] col_name column_definition //添加新字段
[FIRST | AFTER col_name ]| ADD [COLUMN] (col_name column_definition,...)
| ADD {INDEX|KEY} [index_name] //添加索引名称
[index_type] (index_col_name,...) [index_option] ...| ADD [CONSTRAINT [symbol]] PRIMARY KEY //添加主键名称
[index_type] (index_col_name,...) [index_option] ...| ADD [CONSTRAINT [symbol]]
UNIQUE [INDEX|KEY] [index_name] //添加唯一索引
[index_type] (index_col_name,...) [index_option] ...| ALTER [COLUMN] col_name {SET DEFAULT literal | DROP DEFAULT} //修改字段名称
| CHANGE [COLUMN] old_col_name new_col_name column_definition //修改字段类型
[FIRST|AFTER col_name]| MODIFY [COLUMN] col_name column_definition //修改子句定义字段
[FIRST | AFTER col_name]| DROP [COLUMN] col_name //删除字段名称
| DROP PRIMARY KEY //删除主键名称
| DROP {INDEX|KEY} index_name //删除索引名称| RENAME [TO|AS] new_tbl_name //更改表名
ALTER TABLE语句允许指定多个alter_spec子句,每个子句间使用逗号分隔,每个子句表示对表的一个修改。例如:
alter table tb_admin add email varchar(50) not null ,modify user varchar(40);
修改表的编码方式:ALTER TABLE `test` DEFAULT CHARACTER SET utf8; 该命令用于将表test的编码方式改为utf8;
修改字段的编码方式:ALTER TABLE `test` CHANGE `name` `name` VARCHAR(36) CHARACTER SET utf8 NOT NULL; 该命令用于将表test中name字段的编码方式改为utf8
注意:通过alter修改表列的前提是必须将表中数据全部删除,然后才能修改。
4. 重命名表RENAME TABLE
重命名数据表使用RENAME TABLE语句,语法如下:
RENAME TABLE 数据表名1 To 数据表名2;
该语句可同时对多个数据表进行重命名,多个表之间以逗号分隔。
rename table tb_admin to tb_user;
5. 删除表DROP TABLE
语法格式为:DROP TABLE 数据表名;
删除数据表的操作应该谨慎使用。一旦删除了数据表,那么表中的数据将会全部清除,没有备份则无法恢复。
四、MySQL语句操作
在数据表中插入、浏览、修改和删除记录可以在MySQL命令行中使用SQL语句完成,下面介绍如何在MySQL命令行中执行基本的SQL语句。
1. 插入记录insert
在建立一个空的数据库和数据表时,首先需要考虑的是如何向数据表中添加数据,该操作可以使用insert语句来完成。
语法格式如下:
insert into 数据表名(column_name,column_name2,...) values (values, value2, ...)
在MySQL中,一次可以同时插入多行记录,各行记录的值清单在VALUES关键字后以逗号分隔,而标准的SQL语句一次只能插入一行记录。
2. 查询数据库记录select
要从数据库中把数据查询出来,就要用到数据查询语句select。select语句是最常用的查询语句,它的使用方式有些复杂,但功能强大。
select语句的语法格式如下:
select selection_list //要查询的内容,选择哪些列
from 数据表名 //指定数据表
where primary_constraint //查询时需要满足的条件,行必须满足的条件
group by grouping_columns //如何对结果进行分组
order by sorting_columns //如何对结果进行排序
having secondary_constraint //查询时满足的第二个条件
limit count //限定输出的查询结果
(1)查询数据表:select * from 数据表名;
(2)查询表中一列或多列
针对表中的多列进行查询,只要在select后面指定要查询的列名即可,多列之间用逗号分隔。例如:
select id,user,password,email from tb_admin where id=1;
(3)多表查询
针对多个数据表进行查询,关键是where子句中查询条件的设置,要查找的字段名最好用“表名.字段名”表示,这样可以防止因表之间字段重名而无法获知该字段属于哪个表,在where子句中多个表之间所形成的联动关系应按照如下形式书写:表1.字段=表2.字段 and 其他查询条件
多表查询的SQL语句格式如下:
select 字段名 from 表1,表2...... where 表1.字段=表2.字段 and 其他查询条件
例如:select * from tb_student,tb_sscore where tb_student.userid=tb_sscore.sid and tb_student.userid=001
对于SQL语句的使用,是一个很丰富的知识点,合理地运用SQL语句,能够提高程序查询、输出数据的速度。后续将继续对这一块知识进行深入研究。
3. 修改记录update
要执行修改的操作可以使用update语句,该语句的格式如下:
update 数据表名 set column_name = new_value1,column_name2 = new_value2, ...[where condition]
其中,set子句指出要修改的列和它们给定的值,where子句是可选的,如果给出它将指定记录中哪行应该被更新,否则,所有的记录行都将被更新。
update tb_admin set password = '123' where user = '乐乐';
注意:更新时一定要保证where子句的正确性,一旦where子句出错,将会破坏所有改变的数据。
4. 删除记录delete
在数据库中,有些数据已经失去意义或者错误时就需要将它们删除,此时可以使用delete语句,该语句的格式如下:
delete from 数据表名 where condition
delete from tb_admin where user = '乐乐';
注意:该语句在执行过程中,如果没有指定where条件,将删除所有的记录;如果指定了where条件,将按照指定的条件进行删除。在实际的应用中,执行删除操作时,执行删除的条件一般应该为数据的id,而不是具体的某个字段值,这样可以避免一些不必要的错误发生。
五、MySQL数据库备份和恢复
1.数据的备份
在命令行模式下(必要时对电脑的环境变量进行设置)完成对数据的备份,使用的是MYSQLDUMP命令。通过该命令可以将数据以文本文件的形式存储到指定的文件夹下。
语法格式:
mysqldump -uroot -ppassword db_database>F:\db_database.txt
在该命令的结尾处没有任何的结束符,只要按Enter键即可。
可以看到db_admin.txt的内容:
-- MySQL dump 10.13 Distrib 5.6.11, for Win32 (x86)
--
-- Host: localhost Database: db_admin
-- ------------------------------------------------------
-- Server version 5.6.11/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
/*!40103 SET TIME_ZONE='+00:00' */;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;--
-- Table structure for table `tb_admin`
--DROP TABLE IF EXISTS `tb_admin`;
/*!40101 SET @saved_cs_client = @@character_set_client */;
/*!40101 SET character_set_client = utf8 */;
CREATE TABLE `tb_admin` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user` varchar(40) CHARACTER SET gbk NOT NULL,
`password` varchar(30) NOT NULL,
`createtime` datetime NOT NULL,
`email` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=latin1;
/*!40101 SET character_set_client = @saved_cs_client */;--
-- Dumping data for table `tb_admin`
--LOCK TABLES `tb_admin` WRITE;
/*!40000 ALTER TABLE `tb_admin` DISABLE KEYS */;
INSERT INTO `tb_admin` VALUES (1,'乐乐','123','2017-03-01 09:11:59','lele@fintech.com'),(2,'天天','112','2017-03-01 09:12:59','tiantian@fintech.com'),(3,'圆圆','112','2017-03-01 09:13:59','yuanyuan@fintech.com');
/*!40000 ALTER TABLE `tb_admin` ENABLE KEYS */;
UNLOCK TABLES;
/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;-- Dump completed on 2017-03-02 19:52:57
2.数据的恢复
命令格式:
mysql -uroot -ppassword db_admin <F:\db_amin.txt
究其原因,从txt内容可以看出在执行备份时并未生成创建数据库语句,仅仅只是把数据库中的数据表给备份了。解决方法是先创建数据库db_admin之后再导入db_admin.txt。
从上述的操作可以看到,并不能真正的备份数据库,而只能对数据表进行备份,因此删除数据库意义并不是很大,如果你是为了备份的话。
MySQL数据库基础的更多相关文章
- mysql数据库基础的简单操作指南
最近在学习mysql,本文是做的关于mysql学习的笔记,跟大家分享一下,希望对大家学习mysql知识有所助益.mysql现在几乎已经成了网站建设的主流数据库,很多php网站系统都采用了mysql数据 ...
- Mysql数据库基础学习笔记
Mysql数据库基础学习笔记 1.mysql查看当前登录的账户名以及数据库 一.单表查询 1.创建数据库yuzly,创建表fruits 创建表 ) ) ,) NOT NULL,PRIMARY KEY( ...
- Mysql数据库基础操作
Mysql数据库基础操作 在mysql数据库中开启使用tab键补全功能 1)修改主配置文件/etc/mysql/my.cnf(mysql和mariadb目录有些不同) vim /etc/mysql/m ...
- mysql数据库基础-2019-9-10(随堂笔记)
mysql数据库基础 在cmd情况下启动mysql数据库:(配置path环境变量后可忽略) 运行mysql1. 进入mysql路径2. 执行:mysql -uroot -p,安装时的密码 1.数据库& ...
- php面试专题---15、MySQL数据库基础考察点
php面试专题---15.MySQL数据库基础考察点 一.总结 一句话总结: 注意:只写精品 1.mysql定义int(3),那么我存1234就错了么? 不是:无影响:只会影响显示字符的个数:可以为整 ...
- PHP面试 MySQL数据库基础
MySQL数据库基础 MySQL数据类型 整数类型:TINYINT SMALLINT MEDIUMINT INT BIGINT 属性:UNSIGNED 长度:可以为整数类型指定宽度,列 ...
- MySQL数据库--基础简述
MySQL数据库--基础简述 1.15.1 MySQL简介 Mysql是最流行的RDBMS(Relational Database Management System:关系数据库管理系统),特别是在W ...
- MySQL数据库基础知识及优化
MySQL数据库基础知识及优化必会的知识点,你掌握了多少? 推荐阅读: 这些必会的计算机网络知识点你都掌握了吗 关于数据库事务和锁的必会知识点,你掌握了多少? 关于数据库索引,必须掌握的知识点 目录 ...
- 26.MySQL数据库基础
MySQL数据库基础 目录 MySQL数据库基础 数据库的概念 数据 表 数据库 数据库的管理系(DBMS) 数据库系统 访问数据库的流程 数据库系统发展史 当今主流数据库介绍 关系数据库 关系数据库 ...
随机推荐
- api接口token验证
接口特点汇总: 1.因为是非开放性的,所以所有的接口都是封闭的,只对公司内部的产品有效: 2.因为是非开放性的,所以OAuth那套协议是行不通的,因为没有中间用户的授权过程: 3.有点接口需要用户登录 ...
- dedecms织梦首页如何调用文章列表?
如果冯耀宗博客类似,首页调用文章列表,同时也有许多企业站需要调用文章列表,今天我与大家来分享一下dedecms织梦首页如何调用文章列表? {dede:arclist row='16' tit ...
- css cursor属性-显示的光标的类型(形状)的用法和定义
在网页布局的时候,在特定的地方,光标形状各有区别.这个时候,就需要用到css的cursor属性.根据自身需要选择设置鼠标指针样式. 定义和用法 cursor 属性规定要显示的光标的类型(形状). 该属 ...
- Java进阶篇(四)——Java异常处理
程序中总是存在着各种问题,为了使在程序执行过程中能正常运行,使用Java提供的异常处理机制捕获可能发生的异常,对异常进行处理并使程序能正常运行.这就是Java的异常处理. 一.可捕获的异常 Java中 ...
- Jmeter下载时Binaries和Source两类包的区别
在下载Jmeter时,存在两种类型的下载包,分别为Binaries和Source: 一般开放原代码软件都会有两个版本发布: Source Distribution 和 Binary Distribut ...
- 什么是bgp线路
https://www.douban.com/note/319956581/ BGP(边界网关协议)主要用于互联网AS(自治系统)之间的互联,BGP的最主要功能在于控制路由的传播和选择最好的路由.中国 ...
- Django_xadmin后台全局设置
如何使用xadmin主题功能? 在ursersa app下的adminx.py文件下,注册一个基础设置类BaseSetting,并注册 import xadminfrom xadmin import ...
- Linux指令--ifconfig
许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config).通常需 ...
- Servlet--取得session,application内置对象
在前面的博客里面,使用Servlet取得了request,response,config对象,实际上通过Servlet程序也可以取得session,application等内置对象. 1,通过Http ...
- linkin大话面向对象--方法详解
1,方法的参数传递机制:值传递. 首先弄懂2个概念:形参和实参. 形参(形式参数):相当于函数(Java中也把函数称之为方法)中的局部变量,在函数被调用时创建,并以传入的实参作为起始值,函数调用结束时 ...