环境信息

  • 数据库:mysql-5.7.20

  • 操作系统:Ubuntu-16.04.3

mysql的启动、退出、重启

# 启动
$ sudo service mysqld start
# 停止
$ sudo service mysqld stop
# 重启
$ sudo service mysqld restart
# 查看进程
ps ajx|grep mysql
  • 但有时候mysql并没有注册成service的服务,如mysql-5.7.20,使用mysql-server服务;
# 将mysql-server添加到环境变量
ln -s /usr/local/mysql/support-files/mysql-server /usr/bin/mysql-server mysql-server start:启动mysql
mysql-server stop :停止mysql
mysql-server restart :重启mysql
mysql-server reload :修改了配置文件后,重新载入mysql
mysql-server status :查看mysql的状态

登陆和退出

# username代表用户名;可以先不输入密码,回车后再输入,方式密码出现明文
mysql -u username -p password # 退出
quit;
exit;

远程连接

前提是远程数据库配置了允许远程连接;

# mysql -h ip地址 -P 端口  -u root -p
-h后面写要连接的主机ip地址
-P 写数据库的端口,不写默认端口为3306
-u后面写连接的用户名
-p回车后写密码

数据库基本操作

# 创建数据库,dbname为数据库名,charset指定编码
create database dbname charset=utf8; # 删除数据库
drop database 数据库名; # 切换数据库
use 数据库名; # 查看当前选择数据库
select database(); # 查看所有的数据库
show databases;

表的基本操作

# 查看当前数据库的所有表
show tables; # 查看表的结构
desc 表的名字 # 查看某个表的创建语句
show create table 表名; # 更改表的名字
rename table 原表名 to 新表名; # 创建一个表
create table 表名(定义字段) # 删除一个表
drop table 表名;
# 有时出现删除失败的情况,一般是表进行了相互关联的情况,使用set foreign_key_checks = 0;关闭外键约束,删除成功后启动外键约束set foreign_key_checks = 1; # 增加字段
alter table 表名 add 列名 类型; # 对字段重命名
alter table 表名 change 原名 新名 类型及约束; # 修改字段的类型和约束
alter table 表名 modify 列名 类型及约束; # 删除字段
alter table 表名 drop 字段

数据类型及约束

create table person(
-> id int unsigned primary key auto_increment not null,
-> name varchar(20) default '',
-> age tinyint unsigned default 0,
-> gender enum('男','女','保密'),
-> isdelete bit default 0
-> );

表的字段的定义格式为:

字段名  类型  约束
  • 字段名:任意名,一般为字符变量;

  • mysql常用类型:

  • 数值类型:

    tinyint:-128~128 1个字节

    samllint:-32768 ~ 32767 2个字节

    int:-2147483648 ~2147483647 4个字节

  • 字符串类型

char: 可定义0~255个字节,如char(5),定义后不可变;每个值一定占5个字节;

varchar: 可定义0~255个字节,如varchar(5),定义后可变;每个值存储可小于5个字节;

text:可定义0~65535个字节,用来传送大文本;

  • bit

bit保存位字段值,bit(m),m的范围1~64,默认为1;

  • 枚举类型:

enum:enum("1","2"),非法插入时会插入空字符串,其值为0;如果声明不允许为空,则默认值为允许值得第一个元素;索引规则从第一个开始;最大可以有65535

  • 定点数

decimal:如decimal(M,D),M表示数值的总的位数,D表示小数部分的位数;不指定默认取值decimal(10,0),一个参数则D取值0;M取值范围为165,超出报错,D取值030,超出报错;

numeric:和decimal是相同的类型;

  • 浮点数

float : float(M,D),M取值范围为0255,当M小于6位数字的时候是准确的,超出范围报错;D取值范围030,。

real : real(M,D),

double : double(M,D),M,D范围和float一样,M<=16时,数字是准确的。

  • 注意

在FLOAT和DOUBLE中,若M的定义分别超出7和17,则多出的有效数字部分,取值是不定的,通常数值上会发生错误。

  • 时间类型

| 类型 | 字节 | 举例 |

| DATE | 4 | '2020-01-01' |

| TIME | 3 |'12:29:59' |

| DATETIME | 8 |'2020-01-01 12:29:59' |

| YEAR | 1 |'2017'

  • 约束
# 一个字段可以有多个约束,在定义的时候依次写在后面
primary key : 主键,物理上存储的顺序;
auto_increment:自增长,一般配合主键使用;
not null:非空,字段不允许填写空值;
default:默认值;
foreign key:外键;
unique:字段不允许重复;
unsigned:无符号,针对的是数值类型;指的是非负数;
signed:有符号,值有理数;

典型的建表语句

drop table if exists 'users'; # 首先验证表是否存在,存在则删除
set FOREIGN_KEY_CHECKS=0; # 设置是否外键检查,0否,1是
create table 'users' (
'id' int, PRIMARY KEY autoincrement, # 主键,自动增长
'username' varchar(20) UNIQUE not null, # 不可重复,不能为空
'age' int default 20, # 默认为20
'status' enum('A', 'B', 'C') default A, # 枚举选择
index 'users_username' ('username' ASC), # 创建一个普通索引
) ENGINE=InnoDB DEFAULT CHARSET=utf8; # 设置引擎和编码 create table 'address' (
'id' int, PRIMARY KEY autoincrement, # 主键,自动增长
'name' varchar(20) UNIQUE not null,
FOREIGN KEY (`name`) REFERENCES `users` (`username`) on delete cascade, # 创建关联user表的外键并且设置联级删除
)ENGINE=InnoDB DEFAULT CHARSET=utf8; # 设置引擎和编码

数据库备份及批量操作

备份与恢复

# 将数据导出
mysqldump –u uesrname –p 数据库名 > mysql.sql; # 将数据导入新的数据库
mysql -u username -p 数据库名 < mysql.sql

脚本操作数据库

# 将所有的相关mysql操作写入一个sql文件
# 登陆数据库选择要执行的数据库
source ***.sql

基本的增删改查

查:

# 查询所有的列的列的所有的字段
select * from 表名
# 查询所有的列的部分字段
select id,name from 表名
# 查询部分列的部分字段
select id,name from 表名 where id=8;

增:

# 标准插入多行
insert into 表名 values(...),(...);
# 插入部分列
insert into 表名(id,name) values(...),(...);
# 主键自动增长,但是需要占位,一般使用0;

update 表名 set 列1=值1,列2=值2... where 条件

# 删除指定的列
delete from 表名 where 条件

mysql之基本数据库操作(二)的更多相关文章

  1. 百万年薪python之路 -- MySQL数据库之 MySQL行(记录)的操作(二) -- 多表查询

    MySQL行(记录)的操作(二) -- 多表查询 数据的准备 #建表 create table department( id int, name varchar(20) ); create table ...

  2. Node.js 连接 MySQL 并进行数据库操作

    Node.js 连接 MySQL 并进行数据库操作  按照这篇操作mysql的指引,我远程操作了我另一台电脑的mysql数据库. var mysql = require('mysql'); var c ...

  3. Java Web----Java Web的数据库操作(二)

    Java Web的数据库操作 三.JDBC操作数据库 上一篇介绍了JDBC API,之后就可以通过API来操作数据库,实现对数据库的CRUD操作了. http://blog.csdn.net/zhai ...

  4. Hapi+MySql项目实战数据库操作(四)

    数据库访问 下面以Node的ORM框架Sequelize来操作数据库,Mysql为例. 配置数据库连接信息config/db_config.js: //db_config.js module.expo ...

  5. MySQL基金会-基本数据库操作

    1. 删除数据库 DROP DATABASE 数据库名; mysql> drop database test; 即删除数据库模式 2 .创建数据库 create DATABASE 数据库名; m ...

  6. ThinkPHP 数据库操作(二) : 增删改查

    基本使用 可以直接使用数据库运行原生SQL操作了,支持 query (查询操作)和 execute (写入操作)方法,并且支持参数绑定. Db::query('select * from think_ ...

  7. mysql常用命令行操作(二):表和库的操作、引擎、聚合函数

    一.查看.创建.删除数据库 create database library default character set utf8 collate utf8_general_ci; # 创建数据库并设置 ...

  8. mysql学习笔记--数据库操作

    一.显示数据库 show databases; 二.创建数据库 create database [if not exists] 数据库名 [字符编码] 注意: a. 如果已经存在数据库再创建会报错 b ...

  9. Mysql和sqlite数据库操作心得

    经过最近一段时间的实际工作发现,原来只是认为Mysql和sqlite是分别独立的,数据传输和共享或有障碍,其实这是一个误区.当我们想要将sqlite中的数据存放到mysql中,最好的方法就是利用中间文 ...

随机推荐

  1. 第54天:原生js实现轮播图效果

    一.轮播图的原理: 一系列的大小相等的图片平铺,利用CSS布局只显示一张图片,其余隐藏.通过计算偏移量利用定时器实现自动播放,或通过手动点击事件切换图片. 二.Html布局 首先父容器containe ...

  2. query 获取本身的HTML

    <div class="test"><p>hello,你好!</p></div> <script> $(".t ...

  3. 协程-Greenlet

    协程拥有自己的寄存器上下文和栈.协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈. 线程切换的时候会保存到CPU里面. 因此: 协程能保留上一次调用时的 ...

  4. CentOS 压缩(打包)和解压

    1.tar命令 -c 创建压缩文件 -x 解开压缩文件 -t 查看压缩包内有哪些文件 -z 用 Gzip压缩或解压 -j 用 bzip2压缩或解压 -v 显示压缩或解压的过程 -f 目标文件名,在 f ...

  5. 【刷题】BZOJ 4950 [Wf2017]Mission Improbable

    Description 那是春日里一个天气晴朗的好日子,你准备去见见你的老朋友Patrick,也是你之前的犯罪同伙.Patrick在编程竞赛上豪赌输掉了一大笔钱,所以他需要再干一票.为此他需要你的帮助 ...

  6. [HNOI2010]合唱队 区间DP

    ---题面--- 题解: 偶然翻到这道题,,,就写了. 观察到一个数被插在哪里只受前一个数的影响,如果明确了前一个数是哪个,那么我们就可以确定大小关系,就可以知道当前这个数插在哪里,而上一个插入的数就 ...

  7. Java.util包简单总结

    Java.util包简单总结 1. util包的框架 常用的集合类主要实现两个“super接口”而来:Collection和Map. 1.1 Collection有两个子接口:List和Set è¿é ...

  8. BZOJ3435 & 洛谷3920 & UOJ55:[WC2014]紫荆花之恋

    https://www.lydsy.com/JudgeOnline/problem.php?id=3435 https://www.luogu.org/problemnew/show/P3920 ht ...

  9. [Leetcode] maximun subarray 最大子数组

    Find the contiguous subarray within an array (containing at least one number) which has the largest ...

  10. ES6 Set,WeakSet,Map,WeakMap

    1. Set Set是一个集合,里面的值都是唯一的,没有重复的.Set中可以是任何数据类型,并且添加数据时会进行严格比较,重复数据无法加入. 2. WeakSet 弱引用Set.只能存储对象,不能存储 ...