2. 基本SQL语句

基本SQL语句

  • 针对库的增删改查
# 增
create database db1;  # 新建库
create database db2 charset='gbk';  # 新建库并指定编码
# 查
show databases;  # 查所有
show create database db1;  # 查单个
# 改
alter database db2 charset='utf8';  # 修改编码
# 删
drop database db2;  # 删库跑路
  • 针对表的增删改查
"""在操作表(文件)的时候 需要指定所在的库(文件夹)"""
# 查看当前所在的库的名字select database();
# 切换库use db1; 
# 增
create table t1(id int,name char(4));
# 查
show tables;  
show create table t1;describe t1;  # 查看当前库下面所有的表名
# 支持简写 desc t1;
# 改
alter table t1 modify name char(16);
# 删
drop table t1;
"""create table db2.t1(id int);  也可以用绝对路径的形式操作不同的库"""
  • 针对数据的增删改查
"""
一定要先有库 有表 最后才能操作记录
"""
# 增
insert into t1 values(1,'jason');  # 按照表头插入数据
insert into t1 values(1,'jason'),(2,'egon'),(3,'tank');  # 插入多个数据
insert into t1(id,name) values(1,'jason'); 
# 查
select * from t1;  # 该命令当数据量特别大的时候不建议使用,会撑爆内存
select name from t1;  # 查看指定字段的记录
# 改
update t1 set name='DSB' where id > 1;
# 删
delete from t1 where id > 1;
delete from t1 where name='jason';
# 将表所有的数据清空
delete from t1;

存储引擎

不同的存储引擎实际上就是不同的存文件的方式,下面介绍一下MySQL主要存储引擎:

  • Innodb

    是MySQL5.5版本及之后默认的存储引擎,存储数据更加的安全,将数据的表结构(frame)和表数据(ibd)文件分开存储成两个文件

    支持事务、行锁、外键,数据更加安全

  • myisam

    是MySQL5.5版本之前默认的存储引擎,速度要比Innodb更快 但是没有innodb保存数据安全,将表结构、表数据、索引三个分开存储成三个文件

  • memory

    内存引擎(数据全部存放在内存中) ,但是一个非常大的缺点就是断电数据丢失,因为将表的数据暂时存储在内存中,所以只有表结构文件,没有表数据文件(存储在内存中)

  • blackhole

    无论存什么,都立刻消失(黑洞),实际上是将表结构和表数据都存储在内存中

"""
# 查看所有的存储引擎
show engines;

# 不同的存储引擎在存储表的时候的异同点:实际上就是文件的不同,在文件中可以很直观的看见
create table t1(id int) engine=innodb;
create table t2(id int) engine=myisam;
create table t3(id int) engine=blackhole;
create table t4(id int) engine=memory;

# 存数据
insert into t1 values(1);
insert into t2 values(1);
insert into t3 values(1);
insert into t4 values(1);
"""

创建表的完整语法

# 语法
create table 表名(
	字段名1 类型(宽度) 约束条件,
    字段名2 类型(宽度) 约束条件,
    字段名3 类型(宽度) 约束条件
)
"""
宽度和约束条件到底是什么关系
	宽度是用来限制数据的存储
	约束条件是在宽度的基础之上增加的额外的约束
"""
# 注意
1 在同一张表中字段名不能重复
2 宽度和约束条件是可选的(可写可不写) 而字段名和字段类型是必须的
	约束条件写的话 也支持写多个,直接空格隔开就行
    字段名1 类型(宽度) 约束条件1 约束条件2...,
3 最后一行不能有逗号
	create table t6(
        id int,
        name char,
    );   否则会报错

"""补充"""
# 宽度
	一般情况下指的是对存储数据的限制
	create table t7(name char);  默认宽度是1
    insert into t7 values('qidian');
    insert into t7 values(null);  关键字NULL
针对不同的版本会出现不同的效果
    5.6版本默认没有开启严格模式 规定只能存一个字符你给了多个字符,mysql会自动帮你截取
    5.7版本及以上或者开启了严格模式 那么规定只能存几个 就不能超,一旦超出范围立刻报错 Data too long for ....
"""严格模式:在数字超过范围的时候报错,而不是直接按照能表示的最大值来显示"""
MySQL5.7之后的版本默认都是开启严格模式的
使用数据库的准则:
	能尽量少的让数据库干活就尽量少,不要给数据库增加额外的压力,所以一般情况下是建议开启严格模式的
# 约束条件 null  not null不能插入null
create table t8(id int, name char not null);

posted @ 2021-11-05 23:36  奇点^  阅读(25)  评论(0)    收藏  举报