mysql实操_MySQL操作

数据库

1、增

语法:create database 库名;

库名的一些规范:可以有数字、字母、下划线、@、#、$组成,

区分大小写

不能使用关键字 例如:create alter

不能单独使用数字

最长128位

2、删

语法:drop database 数据库名;

3、改

没有专门的修改指令

删了重建

4、查

语法:1、show databases;   # 查看存在的所有库

2、show create database 数据库名   # 查看某一个库的创建信息

5、使用

语法:use 数据库名      # 相当于进入文件夹里,可以对表进行一些操作,只需要use一次(只在同一个库里做修改)

数据类型

数据类型的后面可以带上宽度,括号括起来,数值型的宽度只用于显示

其他类型的宽度表示的是最大字符数,如果你插入的字符超过这个最大宽度,

不会报错,只会取最大宽度的值,其他的值就丢失了

1、数值型

--整数型(唯一的区别就是取值范围不同)

unsigned表示无符号,需要设置无符号只需要在设置类型时(数值类型 unsigned)

tinyint:小整数

有符号:-128 ~ 127

无符号:0 ~ 255

int :整数

有符号:-2147483648 ~ 2147483647

无符号:0 ~ 4294967295

bigint:大整数

有符号:-9223372036854775808 ~ 9223372036854775807

无符号: 0 ~ 18446744073709551615

--浮点型

M:表示总长度

D:表示小数点后的长度

float(M,D) 浮点型

随着长度的不断增加,可能精准的慢慢下降

decimal(M,D)定点型  ,比浮点型精准

随着长度的不断增加,精准度依旧

62f9afddb85bf892285ae6fe9db2396b.png

2、字符串型

char:定长 简单粗暴 浪费空间 存取速度快

varchar:变长字符串 精准 节省空间 存取速度慢

一般没有百分百把握的情况下,都使用varchar,除了像密文密码这样,用MD5加密过长度始终一样。

3、日期型

data  :xxxx-xx-xx   2019-6-12(年月日)

time  :xx:xx:xx  10:14:32(时分秒)

datatime:xxxx-xx-xx xx:xx:xx 2019-6-12 10:14:32

推荐使用datatime

4、枚举型和集合型

枚举enum  :在指定范围内多选一

集合set    :在指定范围内多选多

数据表

1、增

#sql语法:

create table 表名(

列1 列属性 [是否为空,默认值设置],

列2 列属性 [是否为空,默认值设置],

列3 列属性 [是否为空,默认值设置]

)engine=innodb charset=utf-8;

ps:engine代表的引擎  有innodb 和 myisam  mysql5.5版本以上默认是innodb

创建表需要注意的点:

1、列名和列属性是必须的,后面的约束条件(是否位空,默认值)可以根据需求添加

2、每个列之间用逗号隔开,最后一个列的后面不带逗号

2、查

"""

1、show tables; # 查询当前库中的所有的表

2、describe 表名; # 查询的是当前表的结构信息,describe可以缩写成desc

3、show create table 表名; # 查询建表信息

"""

3、改

"""修改字段

alter table 表名 change 原列名 新列名 列属性 [约束条件];

新增字段

alter table 表名 add 新列名 列属性 [约束条件];

删除字段

alter table 表名 drop 列名;"""

4、删

drop table 表名;

表和表中的数据都会被删除,工作中一般不轻易使用

数据行

1、增

insert into 表名(列名1,列名2...) values(值1,值2...),(值1,值2...)...;

注意点:

1、列名数量必须要和值得数量对应上

2、值必须要满足对应列的一些约束

3、一次像插入多行,用括号分隔开,一个括号代表一行

2、查

select * from表名;#将表中的所有数据全部列出来

select 列名1,列名2.. from表名;#将表中的某一列数据查出来

select * from 表名 where 列名=值;#将表中某一列位某个值 的 一整行全部列出来

3、改

update 表名 set 列名=值;#将表中的某一列全部改成某个值

update 表名 set 列名=值 where 列名2=值2;#将表中的某一列(列2)为某个值(值2) 的 另一个列(列名)的值改为某个值(值)

update 表名 set 列1= 值1,列2=值2 where 列3=值3;#当某个列(列3)位某个值(值3)时,同时修改多个列的值

4、删

delete from 表名;

删除表中所有数据,如果表中有列是自增加的话,再次添加会延续上一次自增加的值

truncate 表名;

删除表中所有数据,再次添加时,自增加的值会重置

delete from 表名 where 列=值;

删除表中某一行数据

delete与truncate的区别

delete是一行一行的删,效率慢

truncate是全部一起删掉,速度快

主键

含义:相当于字典的目录,作用就是为了加快索引取值

每一个表默认存在一个主键,主键所有的值都是唯一的

创建表时可以通过primary key 把某一列设置成主键

如果不设置,会有一个内部的主键

外键

定义

当一张表里面有一个列的值 是 用另一张表主键来表示的时候,那么这个列就成为外键

原因

一张表中数据可能会反复出现并且字符长度过长,如果我们不适用外键的话,会特别的占用资源

设置方法

1、一个表要使用外键,在创建这个表之前,那个外键的表就必须已经存在

2、创建的时候通过下面sql语句跟在创建列的后面

constraint 键名 foreign key (列) references 表(主键列)

3、键名没有要求可以自定义,但是如果要创建多个外键的话,键名不能相等

例子

create table t2(

t2_id int auto_increment primary key,

name varchar(32) not null default '',

cid intnotnull default 0,

constraint fk_t2_t1 foreign key (cid) reference t1(t1_id)

)engine=innodb charset=utf8;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值