mysql基础

1. 查所有数据库
show databases;
2. 创建数据库
create database db1;
3. 查看数据库
show create database db1;
4. 创建数据库指定字符集
create database db1 character set utf8/gbk
5. 删除数据库
drop database db1;
6. 使用数据库
use db1;
###表相关
1. 创建表
create table t1(id int,name varchar(10));
2. 查看所有表
show tables;
3. 查看单个表属性
show create table t1;
4. 查看表字段
desc t1;
5. 创建表指定引擎和字符集
create table t1(id int,name varchar(10)) engine=myisam/innodb charset=utf8/gbk;
6. 修改表
- 修改表名
rename table t1 to t2;
- 修改表属性
alter table t1 engine=myisam/innodb charset=utf8/gbk;
- 添加表字段
alter table t1 add age int first/after xxx;
- 删除表字段
alter table t1 drop age;
- 修改表字段名和类型
alter table t1 change age newAge int;
- 修改表的类型和位置
alter table t1 modify age int first/after xx;
7. 删除表

drop table t1;


###数据相关
1. 插入数据
insert into t1 values(5,'xiaoming',null);
insert into t1 (id,name) values (2,'aa');
insert into t1 values(5,'xiaoming',null),(5,'xiaoming',null),(5,'xiaoming',null);
insert into t1 (id,name) values (2,'aa'),(2,'aa'),(2,'aa');
2. 查询
select * from t1;
select name from t1;
select * from t1 where id=10;
3. 修改
update t1 set age=100 where id=10;
4. 删除
delete from t1 where id=10;


###主键约束
- 给主键添加约束,起到非空并且唯一的作用,主键指表示数据唯一性的字段,一张表中只有一个主键
- 如何使用:

create table t1(id int primary key,name varchar(10));
- 测试 以下代码第二行报错因为id重复了
insert into t1 values(1,'李白');
insert into t1 values(1,'杜甫');
- 测试:第一行mariaDB报错,mysql会插入一个0,第二行会报错 id值不能为null;
insert into t1 (name) values ('黄忠');
insert into t1 values (null,'张三');
- 主键约束+自增
create table t2(id int primary key auto_increment, name varchar(10));
- 测试:
insert into t2 values (null,'貂蝉');
insert into t2 values (null,'小乔');
insert into t2 (name) values ('吕布');

insert into t2 values (5,'魏延');
insert into t2 (name) values ('赵云');
insert into t2 values (100,'超人');

###注释 comment
- 注释 可以在创建表添加字段的时候对字段进行介绍,便于以后查看表的时候知道每个字段的作用
- 如何使用:

create table t3(id int primary key auto_increment comment '这是个主键',name varchar(10),comm int comment '这是奖金');


show create table t3;

 查询单个表属性t3



###` '区别
- `的作用是用来修饰表名和字段名,可以省略
- '的作用是用来修饰字符串的


###数据冗余
- 什么是冗余:如果设计表不够合理,随着数据量的增多,出现大量的重复数据,称为数据的冗余。


###事务
- 事务是数据库中执行sql语句的最小工作单元
- 如何开启事务: 关闭客户端自动提交,改成手动提交,把多次修改数据库的sql 放在一次提交中,则多次操作数据库的sql就相当于是放到了同一个事务中
- 数据库默认的提交方式是自动提交


- 为什么使用事务? 
如果不使用事务,客户端会自动提交,多次操作数据库做某一件事儿的时候(如:转账)会出现部分成功部分失败,则数据会出现异常,使用事务,把多次操作数据库的sql合并到一次提交中,这样就能保证同时成功或失败。
- 使用事务的执行过程? 
1. 关闭自动提交 set autocommit=0;
2. 执行多次sql (在内存中执行)
3. 手动提交 commit;
####查看客户端自动提交的状态
show variables like '%autocommit%';
####关闭自动提交 仅对当前窗口生效

- 关闭:
set autocommit=0;
- 打开:
set autocommit=1;
####验证转账流程:
1. 创建表
create table person(id int primary key auto_increment, name varchar(10),money int);
2. 插入数据
insert into person values(null,'超人',200),(null,'蝙蝠侠',10000);
3. 关闭自动提交
4. 转账 
update person set money=500 where id=1;
update person set money=9700 where id=2;
5. 打开新的窗口 验证是否转账成功? 数据没变 因为两次操作都是在内存中操作 并未提交

6. 手动提交
commit;
####数据回滚
- 执行rollback会将数据回滚到上次提交的点
rollback;

####设置回滚点
1. 保存回滚点: savepoint s1(标识);
2. 回滚到指定的回滚点:  rollback to s1;

###SQL分类
#### DDL 
- Data Definition Language 数据定义语言
- 包括: create,alter,drop, truncate, 不支持事务。
#### DML
- Data Manipulation Language 数据操作语言
- 包括: insert, update,delete,select(DQL)
- 支持事务
#### DQL
- Data Query Language数据查询语言
- 包括:select
- 和事务没关系 
#### TCL
- Transaction Control Language:事务控制语言
- 包括:commit rollback savepoint 
#### DCL
- Data Control Language:数据控制语言
- 分配用户权限相关的sql 


#####truncate 删除表 并且创建一个新表
- 用法: truncate table t1;
####truncate,delete,drop的区别
1. delete:删除表中的数据 自增数值不清零 支持事务
2. drop:删除表 不支持事务
3. truncate:删除表并且创建一个新表 自增数值清零 不支持事务


###数据库的数据类型


- 五种数据类型分别为:
1. 整数
2. 浮点数
3. 字符串
4. 日期
5. 其它
####整数
- 常用: int(m)  bigint(m) ,m代表显示长度,如果数据长度不足m时会在数值前面补0, 但是必须和zerofill关键字结合使用,使用方式如下:


create table t_int(num int(10) zerofill);


insert into t_int values(25);

select * from t_int;
####浮点数
- 常用:
1. double(m,d): m代表总长度 d代表小数长度
75.233
-测试:
  create table t_double(num double(5,3));
insert into t_double values(12.3456);//四舍五入
insert into t_double values(1.23);//不足3则补零
2. decimal(m,d):m代表总长度 d代表小数长度,超高精度小数,需要涉及超高精度运算的时候使用。
####字符串
- char(m): m代表字符长度,固定长度,执行效率高(不用改变长度),最大长度255
- varchar(m):可变长度,会根据内容长度改变自身长度,更节省资源,最大长度65535,如果长度超过255建议使用text。
- text:可变长度,最大值65535。
####日期
- date:只能保存 年月日
- time:只能保存 时分秒
- datetime:年月日时分秒,默认值null,最大值9999年12月31日
- timestamp:年月日时分秒,默认值为当前时间,最大值2038年01月19号
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值