数据库取经(一)

目录

一、基础知识点

二、设置密码/修改密码

三、破解密码

四、统一编码

五、数据库的增删改查

六、表的增删改查

七、针对数据的增删改查

八、MySQL的存储引擎

九、创建表的完整语句

十、基本数据类型


一、基础知识点

  • 数据库的由来:数据库本质上是基于网络通信的应用程序;使用数据库是为了统一标准,方便多人操作数据。

  • 数据库的基本概念:

    库 对应为文件夹

    表 对应为文件

    数据 对应为文件中的数据

    ps:表中的数据分为表头和字段 其中,表头就是指表的第一行数据,字段分为字段名和字段类型

  • 客户端连接服务端完整命令 mysql -h 127.0.0.1 -P 3306 -uroot -p

  • 简化使用

    在安装完MySQL之后,可以直接从dos窗口使用MySQL,但是每次都需要切换窗口到安装目录bin目录下,较为麻烦,所以将mysqld所在的文件路径添加到系统变量中。

    这样每次使用MySQL时仍然需要调起两个窗口,也较为繁琐,所以将mysqld设置为系统服务并让其开机自启。

  • 数据库的基本使用代码

        show databases; 查看当前数据库

        select database(); 查看当前所在库的名字

        use d1; 选用d1数据库

        mysql -uroot -p 连接服务端的命令简写

二、设置密码/修改密码

"""
mysqladmin -uroot -p原密码 password 新密码
改命令直接在终端输入即可 无序进入客户端
​
mysqladmin -uroot -p123 password 123456
"""

三、破解密码

"""
在MySQL中,用户名和密码的功能类似与装饰器
如果在登录时可以绕过装饰器,那么就可以直接进如mysql中更改用户名和密码
"""
# 1 先关闭当前mysql服务端
 命令行的方式启动(让mysql跳过用户名密码验证功能)
 mysqld --skip-grant-tables  
# 2 直接以无密码的方式连接
    mysql -uroot -p   直接回车
# 3 修改当前用户的密码
    update mysql.user set password=password(123456) where user='root' and host='localhost';
"""
在实际的使用中,都是使用加密的文字存储,更加安全,密码的比对也是根据密文的比对
"""
# 4 立刻将修改数据刷到硬盘
    flush privileges;
# 5 关闭当前服务端 然后以正常校验授权表的形式启动

四、统一编码

  • mysql默认的配置文件

    """
    my-default.ini 
    ini结尾的一般都是配置文件
    ​
    程序启动会先加载配置文件中的配置之后才真正的启动
    """
    [mysqld]  # 一旦服务端启动立刻加载下面的配置
    sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES 
    [mysql]  # 一旦客户端启动立刻加载下面的配置
    ...
    [client]  # 其他客户端
    ...
    ​
    # 需要你自己新建一个my.ini的配置文件
    ​
    # 验证配置是否真的是自动加载
    [mysql]
    print('hello world')
    ​
    # 修改配置文件后一定要重启服务才能生效
    ​
    # 统一编码的配置 无需掌握 直接拷贝即可
    ​
    # 偷懒 将管理员的用户名和密码也添加到配置文件中
    [mysqld]
    character-set-server=utf8
    collation-server=utf8_general_ci
    [client]
    default-character-set=utf8
    [mysql]
    user="root"
    password=123456
    default-character-set=utf8

五、数据库的增删改查

"""
增   create database d1 (charset='gbk');
删   drop database d1;
改   alter database d1 charset='utf8';
查   show databases;
     show create database d1;
"""

六、表的增删改查

"""
在操作表(文件)的时候 需要指定所在的库(文件夹)
"""
# 查看当前所在的库的名字
select database();
# 切换库
use db1; 
​
"""
增   create table t1 (name char(11),id int(11));
删   drop table t1;
查   show tables;
    show create table t1;
    describe t1;        # 简写为desc t1
改   alter table t1 modify name char(16);
"""

七、针对数据的增删改查

# 一定要先有库 有表 最后才能操作记录
"""
增   insert into t1 values('teddy',1101);
    insert into t1 valuse('alen',1102),('bob',1103),('cat',1104);
    插入数据数据时可以指定数据的字段,比如:
    insert into t2(id,name) values(1101,'teddy')
删   delete from t1 where id > 1;
    delete from t1 where id = "cat";
查   select * from t1;
    select name from t1;
改   update t1 set name = "good" where name = 'teddy';
"""

八、MySQL的存储引擎

"""
innodb  MySQL5.5之后的默认存储引擎,数据存储更加安全
myisam  数据存储更快,但是没有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...,
    create table t5(id);  报错
3 最后一行不能有逗号
    create table t6(
        id int,
        name char,
    );   报错
​
# 补充
# 1、 宽度
    一般情况下指的是对存储数据的限制
    create table t7(name char);  默认宽度是1
    insert into t7 values('teddy');
    insert into t7 values(null);  关键字NULL
    针对不同的版本会出现不同的效果
       5.6版本默认没有开启严格模式 规定只能存一个字符你给了多个字符,会自动帮你截取
       5.7版本及以上或者开启了严格模式 那么规定只能存几个 就不能超,一旦超出范围立刻报错 Data too long for ....
​
# 2、严格模式到底开不开呢?
    MySQL5.7之后的版本默认都是开启严格模式的
    使用数据库的准则:
    能尽量少的让数据库干活就尽量少 不要给数据库增加额外的压力
​
# 约束条件 null  not null不能插入null
create table t8(id int,name char not null);
​
# 3、宽度和约束条件到底是什么关系
    宽度是用来限制数据的存储
    约束条件是在宽度的基础之上增加的额外的约束
​
# 4、如何查看严格模式
show variables like "%mode";
注:模糊匹配/查询
        关键字
                like:
                %:匹配任意多个字符
                _:匹配任意单个字符
                    
# 5、如何修改严格模式
set session     只在当前窗口有效
set global      全局有效
​
set global sql_mode = 'STRICT_TRANS_TABLES'
修改完成后,重启进入客户端即可

十、基本数据类型

整型

  • 分类(区别在于存储的大小/位数)

  1. tinyint

  2. smallint

  3. mediumint

  4. int

  5. bigint

浮点型

  • 分类

# 存储限制
float(255,30)  # 总共255位 小数部分占30位
double(255,30)  # 总共255位 小数部分占30位
decimal(65,30)  # 总共65位 小数部分占30位
​
# 精确度
| id                               | id                               | id                               |
+----------------------------------+----------------------------------+----------------------------------+
| 1.111111164093017600000000000000 | 1.111111111111111200000000000000 | 1.111111111111111111111111111111

字符类型

  1. char(浪费空间,但是取用较为简单)

    定长,不够空格补全,超过直接报错

    # 可以用char_lenth来统计字段的长度
    # example:select char_length(name) from t18;
    # MySQL在存入数据时会将空格存入,但是在取出数据并显示时,会直接将数据中的空格删除显示。
    # 修改sql_mode 让MySQL不要做自动删除操作
    set global sql_mode = 'STRICT_TRANS_TABLES,PAD_CHAR_TO_FULL_LENGTH';
  2. varchar(节省空间,但是取用较为麻烦)

    变长,不够有几个存几个,超过直接报错

    注:在实际使用时,一般公司会直接注明使用的字段类型和字段名

时间类型

  1. date:年月日/2022-8-1

  2. datetime:年月日时分秒/2022 8-1 11:11:11

  3. time:时分秒/11:11:11

  4. year:年/2022

枚举和集合类型

  • 枚举:enum(多选一)

gender enum('male','female','others') default='male';
  • 集合:set(多选多)

hobby set('read','DBJ','hecha');

约束条件总结:

  • not null

  • zerofill

  • unsigned

部分知识点来源于网络,如有侵权请联系删除!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值