mysql基础一

Posted 天宇之游

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql基础一相关的知识,希望对你有一定的参考价值。

环境信息

  • 数据库:mysql-5.7.20

  • 操作系统:Ubuntu-16.04.3

mysql的启动、退出、重启

# 启动
$ sudo service mysql start
# 停止
$ sudo service mysql stop
# 重启
$ sudo service mysql restart
# 查看进程
ps ajx|grep mysql

登陆和退出

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

# 退出
quit;
exit;

远程连接

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

# mysql -h ip地址 -u root -p
-h后面写要连接的主机ip地址
-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取值范围为1~65,超出报错,D取值0~30,超出报错;
numeric:和decimal是相同的类型;

  • 浮点数

float : float(M,D),M取值范围为0~255,当M小于6位数字的时候是准确的,超出范围报错;D取值范围0~30,。
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:有符号,值有理数;

数据库备份及批量操作

备份与恢复

# 将数据导出
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基础一的主要内容,如果未能解决你的问题,请参考以下文章

Java基础:封装

一步一图一代码,一定要让你真正彻底明白红黑树

miniui后台无法接收到input传值

最新开源指数发布:VSCode成为第一代码编辑器百度Apollo增长最快

go基础二

用 iPad 来写代码,GitHub 又一代码编辑器,开源了!