搭建mysql数据库脚本语言_二十二、创建数据库脚本
安装mysql数据库
可以看之前写过的一篇博文:点击传送
mysql命令
mysql程序使用两种不同类型的命令
特殊的MySQL命令
标准的SQL语句
mysql程序有自己的一组命令,方便控制环境以及提取关于MySQL服务器的信息。
举例
mysql>\s--------------mysql Ver14.14 Distrib 5.7.26, for linux-glibc2.12(x86_64) using EditLine wrapper
Connectionid: 3Current database:
Current user: root@localhost
SSL: Notinuse
Current pager: stdout
Using outfile:''Using delimiter: ;
Server version:5.7.26MySQL Community Server (GPL)
Protocol version:10Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8
UNIX socket:/tmp/mysql.sock
Uptime:2 hours 14 min 23sec
Threads:2 Questions: 6 Slow queries: 0 Opens: 108 Flush tables: 1 Open tables: 101 Queries per second avg: 0.000
--------------
\s命令
MySQL程序支持标准SQL命令。
查看数据库
mysql>show databases;+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
4 rows in set (0.34 sec)
查看mysql数据库中的表
mysql会话一次只能连一个数据库
分号代表命令结束
mysql>use mysql;
Database changed
mysql>show tables;+---------------------------+
| Tables_in_mysql |
+---------------------------+
| columns_priv |
| db |
| engine_cost |
| event |
| func |
| general_log |
| gtid_executed |
| help_category |[...]
创建数据库
create database name;
mysql>create database mytest;
Query OK,1 row affected (0.00 sec)
创建用户账户
语法格式
grant 权限 on 数据库对象 to 用户
举例
mysql> grant select,insert,delete,update on test.* to test identified by 'test';
Query OK,0 rows affected, 1 warning (0.00 sec)
grant命令:如果用户账户不存在则创建,赋予权限
indentified by:为新用户设置密码
这条命令意思为:赋予用户test拥有对数据库test其下所有表有查询,插入,删除,修改的权限,该用户的密码为test。
创建数据表
注意创建数据表前先指定数据库
empid的值唯一,不可重复
mysql>use mytest;
Database changed
mysql>create table employees (-> empid int not null,-> lastname varchar(30),-> firstname varchar(30),-> salary float,->primary key (empid));
Query OK,0 rows affected (0.01 sec)
创建完成后查看
mysql>show tables;+------------------+
| Tables_in_mytest |
+------------------+
| employees |
+------------------+
1 row in set (0.00 sec)
mysql的数据类型
数据类型
描述
char
定长字符串(固定长度)
varchar
变长字符串(可变长度)
int
整数值
float
浮点值
boolean
布尔值
date
YYYY-MM-DD格式日期
time
HH:mm:ss格式时间
timestamp
日期加时间组合
text
较长的字符串值
BLOB
二进制值,如图片,视频
插入和删除数据
举例
mysql> insert into employees values (1,'Blum','Rich',25000.00);
Query OK,1 row affected (0.17sec)
mysql> insert into employees values (2,'Blum','Rich',25000.00);
Query OK,1 row affected (0.10 sec)
删除
mysql> delete from employees where empid =2;
Query OK,1 row affected (0.00 sec)
查询数据
举例
mysql> select *from employees;+-------+----------+-----------+--------+
| empid | lastname | firstname | salary |
+-------+----------+-----------+--------+
| 1 | Blum | Rich | 25000 |
+-------+----------+-----------+--------+
1 row in set (0.00 sec)
修饰符
where 显示符合特定条件
order by 对某列排序
limit 显示指定行数据
mysql> select * from employees where salary > 4000;+-------+----------+------------+--------+
| empid | lastname | firstname | salary |
+-------+----------+------------+--------+
| 1 | Blum | Rich | 25000 |
| 3 | Blum | Katie Jane | 34500 |
| 4 | Blum | Jessica | 25340 |
+-------+----------+------------+--------+
3 rows in set (0.00 sec)
在脚本中使用数据库
登录到服务器
在$HOME/.my.cnf配置文件中设置mysql登录账户密码
这样该用户就不用输入密码就能登陆
[tz@tzPC ~]$ whoamitz
[tz@tzPC~]$ cat $HOME/.my.cnf
[client]
password=test
[tz@tzPC~]$ chmod 400 $HOME/.my.cnf
[tz@tzPC~]$ mysql mytest -u test
向服务器发送命令
发送单条命令
[root@tzPC 25Unit]# cat mtest1.sh#!/bin/bash
#send a command to the MySQL server
MYSQL=$(whichmysql)
$MYSQL mytest-u test -e 'select * from employees'
效果
[root@tzPC 25Unit]# bash mtest1.sh
+-------+----------+------------+--------+
| empid | lastname | firstname | salary |
+-------+----------+------------+--------+
| 1 | Blum | Rich | 25000 |
| 3 | Blum | Katie Jane | 34500 |
| 4 | Blum | Jessica | 25340 |
+-------+----------+------------+--------+
发送多条命令
使用EOF分隔符之间的所有内容重定向给mysql命令时,因为数据是重定向过来的所以返回值只包含原始数据,没有格式,有利于提取字段。
[root@tzPC 25Unit]# cat mtest2.sh#/bin/bash
#sending multiple commands to MySQL
MYSQL=$(whichmysql)
$MYSQL mytest-u test <
show tables;select * from employees where salary > 4000;
EOF
效果
[root@tzPC 25Unit]# bash mtest2.shTables_in_mytest #这两行是show tables 命令显示的,因为没有了格式框,第一行是这个表位于哪个数据库
employees #这一行显示的是表名
empid lastname firstname salary1 Blum Rich 25000
3 Blum Katie Jane 34500
4 Blum Jessica 25340
show tables;
mysql>show tables;+------------------+
| Tables_in_mytest |
+------------------+
| employees |
+------------------+
1 row in set (0.00 sec)
脚本主体如下
[root@tzPC 25Unit]# cat mtest3.sh#!/bin/bash
#send data to the tableinth MySQL database
MYSQL=$(whichmysql)if [ $# -ne 4] #如果输入参数不等于4then
echo "Usage: mtest3 empid lastname firstname salary"#Usage用法 salary薪水elsestatement="insert into employees values ($1,'$2','$3','$4')"$MYSQL mytest-u test <
$statement
EOF
#EOF必须顶格写且只能由EOF结束符,不能有空格制表符等if [ $? -eq 0]then
echo "Data successfully added!"
else
echo "Problem adding data!"
fi
fi
脚本格式化输出如下
[root@tzPC 25Unit]# cat mtest4.sh#!/bin/bash
#redirecting重定向 SQL output to a varible
MYSQL=$(whichmysql)
dbs=$($MYSQL mytest -u test -Bse 'show databases') #dbs中的数据为information_schema mytest中间以空格隔开for db in$dbsdo
echo$dbdone
效果
[root@tzPC 25Unit]# bash mtest4.shinformation_schema
mytest
因为是重定向到变量dbs,所以没有格式,-B选项指定mysql工作在批处理模式下,-s选项禁止输出列标题,如Database标题就没有输出出来
mysql>show databases;+--------------------+
| Database |
+--------------------+
| information_schema |
| mytest |
+--------------------+
2 rows in set (0.00 sec)
mysql程序还支持XML,可扩展标记语言,只需要加上-X选项
[root@tzPC 25Unit]# mysql mytest -u test -X -e 'select * from employees where empid =1'
1
Blum
Rich
25000
学习来自:《Linux命令行与Shell脚本大全 第3版》第25章
搭建mysql数据库脚本语言_二十二、创建数据库脚本相关推荐
- 阿里云mysql创建数据库服务器地址_阿里云服务器创建数据库操作流程
阿里云服务器创建数据库操作流程,如何上传数据库阿里云. 在阿里云ecs云服务器上部署数据库后,在平常的操作中可能会遇到些问题,可以先做个大致的了解: 如果您想看更多的在ecs上的数据库的相关操作,请前 ...
- 建立一个mysql 文件命令是_使用命令行创建数据库
今天针对如何在Linux操作系统上利用命令行创建Oracle Database进行一个总结及实践. 下面是官方文档"Database Administrator's Guide"中 ...
- MySQL二十八规范数据库设计
MySQL二十八:规范数据库设计 糟糕的数据库设计: ●数据冗余,浪费空间 ●数据库插入和删除都会麻烦.异常[ 屏蔽使用物理外键] ●程序的性能差 良好的数据库设计: ●节省内存空间 ●保证数据库的完 ...
- shell脚本详解(十二)——Here Document免交互及Expect自动化交互
shell脚本详解(十二)--Here Document免交互及Expect自动化交互 一.Here Document 免交互 1.格式 2.注意事项 3.免交互方式实现对行数的统计,将要统计的内容置 ...
- 【C语言】二十二步了解函数栈帧(压栈、传参、返回、弹栈)
阅读本文需要掌握的知识 熟练使用--c语言函数 进入正题前 首先我们为什么要学习函数的栈帧? 简单回答就是:增加内功 学习函数调用的底层代码,了解函数如何传参.如何返回 这样对于函数的使用有很大的帮助 ...
- C++语言学习(十二)——C++语言常见函数调用约定
C++语言学习(十二)--C++语言常见函数调用约定 一.C++语言函数调用约定简介 C /C++开发中,程序编译没有问题,但链接的时候报告函数不存在,或程序编译和链接都没有错误,但只要调用库中的函数 ...
- 零基础带你学习MySQL—单行子查询和多行子查询(二十二)
零基础带你学习MySQL-多行子查询(二十二) 一.什么是子查询? 子查询是指嵌入在其它 sql 语句中的 select 语句,也叫嵌套查询 二.什么是单行子查询? 单行子查询是指只返回一行数据的子查 ...
- 谭浩强c语言不讲位运算呢,谭浩强C语言教程第十二章-位运算.doc
谭浩强C语言教程第十二章-位运算 12位运算1 12.1位运算符C语言提供了六种位运算符:1 12.1.1按位与运算1 12.1.2按位或运算2 12.1.3按位异或运算2 12.1.4求反运算3 1 ...
- C语言学习(十二)C语言中的字符(宽字符与窄字符)、从字符谈谈C语言的编码、转义字符
C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 目录 C语言学习(十二)C语言中的字符(宽字符与窄字符).从字符谈谈C语言的编码.转义字符 英文字符 字符的表示 ...
- c语言压缩文本文件北京理工大学,北京理工大学C语言程序设计第十二章文件.ppt...
北京理工大学C语言程序设计第十二章文件 2000年1月25日 北京理工大学 / 第十二章 文件 第一节 文件概述 第二节 文件的处理 第三节 文件的顺序读写操作 第四节 文件的随机读写操作 第五节 文 ...
最新文章
- 08Factory Method(工厂方法)模式
- 【整理】JDK MacOS X
- VLAD教程和资料 All about VLAD
- C语言动态内存管理和动态内存分配
- SpringBoot2.0基础案例分类总结,后续更新计划说明
- Jenkins报错Error fetching remote repo 'origin'真正解决办法
- Mac安装oracleVM VMware安装失败,解决方案
- HBuilder工作笔记001---HBuilder打包安卓和ios应用
- 调节RStudio的代码字体大小
- Tif格式图片的读取与保存
- 四面体体积公式 hdu 1411
- SSM整合完整流程讲解
- 平面解析几何----圆锥曲线1/AF+1/BF=2/ep的三种证法
- samba使用root用户连接
- Bartender安装时间长,安装成功后未跳出激活界面的解决方法,亲测2019和2021版
- 超详细双系统安装指南
- 定点数一位乘法之Booth(布斯)算法
- 形式化、半形式化和非形式
- 上海2021年高考成绩排位查询,上海各区2021年一模成绩排位情况汇总!
- k8s里面的iptables和ipvs有什么区别?怎么选?为什么选择ipvs