8-31-数据库基础

本周内容
    day01
        1、mysql相关概念介绍
            记录与字段
            表
            库
            数据库管理软件
            数据库服务器
        2、mysql数据管理软件的安装
        3、mysql的基本使用(配置文件)

        4、库操作
        5、表操作
            数据类型

    day02
        1、约束条件(******)
            表之间的三种关联关系
                多对一
                多对多
                一对一
        2、记录操作
            单表查询(******)

    day03
        1、多表查询(******)
        2、在python中如何操作mysql
            pymysql模块

    day04
        考试

    day05
        1、视图
        2、触发器
        3、事务
        4、存储过程
        5、函数

    day06
        索引原理与慢查询优化

----------------------------------------> 重点 <-------------------------------------------------------
    无论引入什么技术, 数据要想永久存储。
    数据依然是存储在文件中的,
    只不过这些文件是mysql帮你管理的


    关系型数据库 与 非关系型数据库:

        关系型数据库:     指建立表来存放数据

        非关系型数据库:    指 全都是键值对,根据key进行存取value




    mysql软件安装好,机器上就有一个客户端,一个服务端

        ini为后缀的是 配置文件

        如果只作为客户端使用,则只需要配置[mysql] 即可

            [client] :针对所有客户端

        如果只作为服务端使用,则只需要配置[mysqld] 即可

        如果既作为客户端,也作为服务端,则 [mysql]和[mysqld] 都要配置



    注意:
        都是使用客户端,跟服务端进行交互
            数据库的服务端可以是在本机, 也可以是在外部主机

        mysql.exe 客户端的套接字软件
        mysqld.ext服务端的套接字软件



    utf8mb4 编码: 相较utf8,功能更加强大, 还能存储一些表情字符




    mysql中的文件分为两种: 结构(frm)  和  数据(.ibd)
        
        查看 库/表 的结构  
            
            show create table t1

        查看 库/表 的数据:
            
            show table t1   



    库(database) 和 表(table),     查增删改的关键字相同 :  show     create    drop     alter

    记录(recode) ,                             则不同 :  select   insert    delete   update 



    注意: delete的速度不高, 所以清空整张表, 应该用truncate 

    另外, delete的删除的同时主键如果设置自增加,则自动增加不会消除



    引擎:
        
        文件就像池塘,里面装着数据

        存储引擎就是一段代码, 像水泵

        通过 水泵  进行抽水   送水



    打开数据库后,
        
        当涉及表的操作时候,必须要指定是 use 哪一个数据库.
        因为表是位于 数据库中的, 不指明是哪一个数据库,则无法唯一定位到一个表.



    select user();  # 查看当前操作的用户是谁

    select database(); # 查看当前操作的数据库是哪一个

-------------------------------------------------> 自行整理 <---------------------------------------------------



所有MySQL命令的列表:
请注意,所有文本命令必须首先在行上并以“;”结尾
?       (\?)“帮助”的同义词。
clear   (\c)清除当前输入语句。
connect (\r)重新连接到服务器。可选参数是db和host。
定界符 (\d)设置语句定界符。
自我      (\G)发送命令到mysql服务器,垂直显示结果。
退出      (\q)退出mysql。与退出相同。
go      (\g)发送命令到mysql服务器。
帮助      (\h)显示此帮助。
notee   (\t)不要写入outfile。
print   (\p)打印当前命令。
提示符 (\R)更改您的mysql提示符。
退出      (\q)退出mysql。
rehash  (\#)重建完成哈希。
源       (\.)执行一个SQL脚本文件。以文件名作为参数。
status  (\s)从服务器获取状态信息。
tee     (\T)设置输出文件[to_outfile]。将所有内容附加到给定的文件外。
使用      (\u)使用另一个数据库。将数据库名称作为参数。
字符集 (\C)切换到另一个字符集。处理具有多字节字符集的binlog可能需要。
警告      (\W)在每个语句之后显示警告。
nowarning(\w)不要在每条语句后显示警告。
resetconnection(\ x)清空会话上下文。

要获取服务器端帮助,请输入“帮助内容”

mysql>

-----------------------------------------------------


注意: mysql语句结尾要加分号;



1. 登录进mysql

    @localhost> mysql -u root -p  # 进入mysql的登录界面





2. 查看mysql下的所有的数据库
    
        mysql> show databases;
        +--------------------+
        | Database           |
        +--------------------+
        | information_schema |
        | db1                |
        | db2                |
        | mysql              |
        | performance_schema |
        | sys                |
        +--------------------+
        6 rows in set (0.00 sec)



3. 新建数据库

        create database db1 charset utf8;



               4 删除数据库
                       
                       DROP DATABASE 数据库名;


               5 修改数据库
                       
                       alter database db1 charset utf8;



6. 进入/切换到  指定数据库
    
        mysql> use db1;
        Database changed



7. 查看当前数据库下的所有的表

        # mysql> use db2;
        # Database changed
                            
        mysql> show tables;
        +---------------+
        | Tables_in_db2 |
        +---------------+
        | t2            |
        | t33           |
        +---------------+
        2 rows in set (0.00 sec)



8. 创建表
    
        CREATE TABLE t1 (
            id INT,
            NAME VARCHAR (50),
            sex enum ('male', 'female'),
            age INT (3) ->
        );


        命令行格式下,也写成这种形式, 可以分成多行写, 最后再加一个分号表示结尾
    
            mysql-> create table t1(  
                -> id int, 
                -> name varchar(50),
                -> sex enum('male','female'),
                -> age int(3)
                -> );




                   9. 查看表详细结构

                           mysql> describe t2; # 查看表结构

                           mysql> desc t2;  # 还可简写为desc 表名

                           +-------+-----------------------+------+-----+---------+-------+
                           | Field | Type                  | Null | Key | Default | Extra |
                           +-------+-----------------------+------+-----+---------+-------+
                           | id    | int(11)               | YES  |     | NULL    |       |
                           | name  | varchar(50)           | YES  |     | NULL    |       |
                           | sex   | enum('male','female') | YES  |     | NULL    |       |
                           | age   | int(3)                | YES  |     | NULL    |       |
                           +-------+-----------------------+------+-----+---------+-------+
                           4 rows in set (0.00 sec)


                   10. 删除表
                       
                           DROP TABLE 表名;



                   11. 修改表

                           1. 修改表名
                                 ALTER TABLE 表名 
                                                     RENAME 新表名;

                           2. 增加字段
                                 ALTER TABLE 表名
                                                     ADD 字段名  数据类型 [完整性约束条件…],
                                                     ADD 字段名  数据类型 [完整性约束条件…];
                                 ALTER TABLE 表名
                                                     ADD 字段名  数据类型 [完整性约束条件…]  FIRST;
                                 ALTER TABLE 表名
                                                     ADD 字段名  数据类型 [完整性约束条件…]  AFTER 字段名;
                                                       
                           3. 删除字段
                                 ALTER TABLE 表名 
                                                     DROP 字段名;

                           4. 修改字段
                                 ALTER TABLE 表名 
                                                     MODIFY  字段名 数据类型 [完整性约束条件…];
                                 ALTER TABLE 表名 
                                                     CHANGE 旧字段名 新字段名 旧数据类型 [完整性约束条件…];
                                 ALTER TABLE 表名 
                                                     CHANGE 旧字段名 新字段名 新数据类型 [完整性约束条件…];


----------------------------------- 表内数据的具体操作: 查、增、删、改 
查

    select * from  studnet 

    select id,name from student


增:

        1. 插入完整数据(顺序插入)
            语法一:
            INSERT INTO 表名(字段1,字段2,字段3…字段n) VALUES(值1,值2,值3…值n);

            语法二:
            INSERT INTO 表名 VALUES (值1,值2,值3…值n);

        2. 指定字段插入数据
            语法:
            INSERT INTO 表名(字段1,字段2,字段3…) VALUES (值1,值2,值3…);

        3. 插入多条记录
            语法:
            INSERT INTO 表名 VALUES
                (值1,值2,值3…值n),
                (值1,值2,值3…值n),
                (值1,值2,值3…值n);
                
        4. 插入查询结果
            语法:
            INSERT INTO 表名(字段1,字段2,字段3…字段n) 
                            SELECT (字段1,字段2,字段3…字段n) FROM 表2
                            WHERE …;


删:

        语法:
            DELETE FROM 表名 
                WHERE CONITION;

        示例:
            DELETE FROM mysql.user 
                WHERE password=’’;

        练习:
            更新MySQL root用户密码为mysql123
            删除除从本地登录的root用户以外的所有用户



改:

        语法:
            UPDATE 表名 SET
                字段1=值1,
                字段2=值2,
                WHERE CONDITION;

        示例:
            UPDATE mysql.user SET password=password(‘123’) 
                where user=’root’ and host=’localhost’;



模糊查询,用 LIKE 

    % :任意个字符
    _ :一个字符



=======================================> 1. msyql相关概念介绍 <==================================================


        mysql=》数据库管理软件,本质就是一个套接字程序

        字段=》标题
        记录=》文件中的一行内容
        表=》文件
        库=》文件夹

        数据库管理软件=》套接字软件
        数据服务器=》运行有数据库管理软件服务端的计算机

        关系型
           orcale db2 sqlserver mysql
        非关系型
            redis、memcache、mongodb

=======================================> 2. msyql基本管理 <=======================================================

        # 设置密码
        update mysql.user set password=password("123") where user="root" and host="localhost";
        flush privileges;

        # 忘记密码
        (1)先关闭mysqld服务端
        (2)重新启动:mysqld --skip-grant-tables
        (3) 启动客户端:mysql -u
             update mysql.user set password=password("") where user="root" and host="localhost";
             flush privileges;

        (3)重新启动mysqld

=========================================>3 mysql语句基础 <==========================================================
        # =======================1、库操作=>文件夹=======================
        create database db1 charset utf8mb4;

        show databases;
        show create database db1;

        alter database db1 charset gbk;

        drop database db1;

        # =======================2、表操作=》文件=======================
        create database db1;

        # 切换文件夹
        use db1;
        select database();

        create table db1.t1(id int,name char);

        # 查看所有的表名
        show tables;
        # 查看刚刚创建表的命令
        show create table db1.t1;
        # 查看创建成功的表的结构
        desc t1;

        alter table t1 rename tt1;
        alter table tt1 modify name char(10);
        alter table tt1 change name mingzi char(3);

        drop table tt1;
        # =======================3、记录操作=》文件中的一行内容=======================

        insert t2 values(1,"egon");
        insert t2 values(2,"tom"),(3,"lxx"),(4,"hxx");
        insert t2(id) values(5),(6);


        select * from t2;
        select name from t2 where id=3;

        update t2 set name="lxx",id=444 where id=4;

        delete from t2 where id=444;

        清空整张表:
            truncate t2

            create table t3(id int primary key auto_increment,name char(10));
            insert t3(name) values("egon"),("tom"),("jack");
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值