lchengshao

数据库基本命令

1. 对库的增删改查

1. 增加一个库
creatr database db1;    # 后面是库的名字

show databases;        #  查看所有库
show creatr database db1;        # 查看库的结构

alter database db1 charset = 'utf8';  # 修改字符编码

drop database db1;     # 删除一个库

use db1;      # 切换数据库

2. 对表的增删改查

1. 添加一张表
create table t1(id int,name varchar(16,age int));
添加字段
alter table t1 add 字段名 数据类型 约束条件;
alter table t1 add 字段名 数据类型 约束条件 first; 添加在第一条
alter table t1 add 字段名 数据类型 约束条件 after aaa; # 指定往那个字段后面添加
查 dsec t1;
# 查看表具体信息
show create table t1;  # 查看表的结构 select * from t1; # *代表是字段 也可以是具体字段 t1 代表的是表名 # 改 modify只能改字段数据类型完整约束,不能改字段名,但是change可 aiter table t1 rename t2; # 修改表名
alter table t1 modify 字段名 数据类型 约束条件;  # 只能修改数据类型
alter table t1 change 旧字段名 新字段名 旧字段类型 约束条件;
# change 只能修改字段名 数据类型也必须只能修改同类型的 比如 char(12) 可以改为 char(32),但是不能修改其他类型
比如 char(13) 改为 int 类型,因为原有数据不符和

删 drop table t2; # 删除一张表
alter table t2 drop 字段名; # 删除指定字段

创建表的完整语法

create table 库名.表名(
  字段名1 数据类型 约束条件 约束条件 约束条件 约束条件,
  字段名2 数据类型 约束条件 约束条件 约束条件 约束条件,
  字段名3 数据类型 约束条件 约束条件 约束条件 约束条件,
  字段名4 数据类型 约束条件 约束条件 约束条件 约束条件

)

创建表的注意事项

insert into 库名.t1 values('1', 2, 3, 4, 5, 6);

1. 字段名和数据类型必须写的,不能省略
2. 约束条件是可选的,可有可无,而且可有有多个
3. 表结构中最后一个字段不能有逗号

清空表的两种方式

1 delete from t;  # 这种方式不会清除id

2 truncate t;  # 清空表并且重置id

"""truncate:建议使用truncate,使用这个,万一你清空错了,还有机会恢复"""
mysql它有很多个日志文件,binlog日志-----》可以恢复数据,记录了你所有的SQL语句



3. 记录的增删改查

查
select * from t1;    *代表查看全部 也可以是某个字段 t1是表名
select id from t1;    查看具体字段信息
select * from t1 where id=1;    # where是筛选条件 查看具体的某条记录

增
insert into t1(id,name) values(1,'huang');    # 添加一条记录
insert into t1(name) values('huang');    # 需要添加那个字段 需要和后面对应
insert into t1 values(3,'json');    # 不指定字段就是全字段添加

改
update t1 set name='lu' where id=4;     # 把name字段改为 lu 后面是筛选条件 如果不加筛选条件 代表所有!!!!!!!!
update t1 set id='5',name='shun' where id=1;   # 修改一条记录的多个信息
update t1 set name='oscar' where name='tank' and age=30;  # 增加筛选条件
update t1 set name='oscar' where name='kevin3' or name='kevin4';

删除
    delete from t1 where id=1;     
    delete from t1 where id=2 or id=7;
    delete from t1;  # 这是清空表  # 不加筛选条件默认是所有

4. 配置文件的使用

"""mysql的配置文件是:my-default.ini"""
# 修改了配置文件,一定别忘了重启服务端才能生效
"""把一下内容加到配置文件中"""
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8

5. 存储引擎的使用

"""存储引擎就是存储数据的方式!"""

MySQL支持多少种存储引擎方式
1. 如何查看存储引擎
show engines;
"""一共九种存储引擎,重点学习:MyISAM MEMORY InnoDB"""
MyISAM:
    它是MySQL5.5版本及之前的版本默认的存储引擎、它的读取速度很快相比较与InnoDB,但是它的数据安全性较低,相对于InnoDB存储引擎
    """不支持事务、支持的是表锁"""
InnoDB:
    它是MySQL5.6及之后的版本默认的存储引擎、它的读取速度相对慢一些,但是数据的安全性较高一些
    """它支持:事务、行锁、外键"""
MEMORY:
    它是基于内存存储的,意味着断电数据丢失、重启服务端数据就丢失

"""
对于不同的存储引擎,硬盘中保存的文件个数也是不一样的
MyISAM:3个文件
        .frm 存储表结构
        .MYD 存储的是表数据
        .MYI 存索引(当成是字典的目录,加快查询速度)
InnoDB:2个文件
        .frm 存储表结构
        .ibd 存储数据和索引
MEMORY:1个文件
        .frm 存储表结构
"""

6 数据类型

1. 整形: 有四种
tinyint    smallint     int    bigint

# 不同的数据类型区别就是所存储的范围不一样

tinyint: 它是使用一个字节来保存数据,一个字节代表8位 11111111--->256种情况(0-255) (-128-127)

smallint:2个字节, 代表16位, 65536(0-65535) (-32768-32767)

 int: 4个字节,2**32=42....(-21...- 21...)

bigint:8个字节(最大的) 可以存手机号(11)

## 整型默认情况下带不带符号?
        create table t5 (id tinyint);
        insert into t5 values(256);
    结论是:带符号的,所有的整型默认都是带符号的 减半
    # 怎么样去掉符号
    create table t6 (id tinyint unsigned);
=================================================



2. 浮点型 有三种 
float  double  decimal
price decimal(8,2) # 999.99  # price:1000  

    float(255, 30) # 总位数是255位、小数点后60位
    double(255, 30) # 总位数是255位、小数点后60位
    decimal(65, 30) # 总位数是255位、小数点后60位

    """他们三个区别是什么呢?"""
    create table t7 (id float(255, 30));
    create table t8 (id double(255, 30));
    create table t9 (id decimal(65, 30));

    """结论:三者的精确度不一样:decimal   >>>   double   >>>  float(精确到7位了)"""
    # 以后到底是选哪个更好呢
    """就我多年的经验来看,大家都选decimal""
=================================================


3. 字符串类型有两种  varchar char

char(4): 定长类型,超出4位,就报错,不够4位,使用空格填充 

varchar(4): 可变长类型,超出4位,报错,不够4位的,有几位存几位 abc a

# 区别是什么呢? 
如果是存固定长度的  适用char 因为更节省内存空间
"""默认情况下,没有对char类型填充空格,如果想看填充了空格,需要设置严格模式"""

    ## 验证是否补充了空格 查看记录长度
    select char_length(name) from t12;
    select char_length(name) from t13;

# 设置严格模式
    1. 命令行模式:临时修改
    set global sql_mode='STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH'; # 不区分大小写
=================================================


4. 日期类型有四种:
date    datatime          time      year
年月日       年月日时分秒      时分秒     年

四种格式显示如下:
create table t14 (
    id int, 
    reg_time date, 
    reg1_time datetime, 
    reg2_time time, 
    reg3_time year
);

insert into t14 values(1, '2023-10-1', '2023-11-11 11:11:11', '11:11:11', 2023);

=================================================

5. 枚举类型:

# 多选一
    enum
    create table t15 (id int, hobby enum('read', 'music', 'tangtou', 'xijio'));
    insert into t15 values(1, 'read');


# 多选多:包含多选一
    set
    create table t16 (id int, hobby set('read', 'music', 'tangtou', 'xijio'));
    insert into t16 values(2, 'read,music1');


            

 

posted on 2023-10-23 16:45  Lubomierz  阅读(586)  评论(0编辑  收藏  举报

导航