• mysql 基础操作 (数据库 表 表字段 表数据)的增删改查 && 数据库四大操作语句


    1.数据库介绍
    - 数据库介绍:
    
            1.随意存放在一个文件中的数据,数据的格式千差万别
                tank|123  jason:123   sean~123
    
            2.软件开发目录规范
                - Project:
                    - conf
                    - bin
                    - core
                    - db: 存放一个个的文件
    
                1、2都是从本地读取的数据。
    
            3.将所有数据存放到一个第三方的公共位置,同一个软件凡是需要操作数据的,就必须去这个共享的位置操作。
                - 第三方的公共位置(数据库)
    
                - 数据库集群: 将同一个数据库中的数据,复制到不同的服务器中。
    
            4. MySQL数据: C ---> S架构软件
                1) mysql数据库本质上就是一个基于网络通信的软件。
                2) 所有基于网络通信的软件,底层都是socket。
    
                - 服务端:
                    - 基于网络通信
                    - 收发消息
    
                - 客户端:
                    - 基于网络通信
                    - 收发消息
    
                - 所有语言若想操作数据库,拿到服务端ip和port,都必须遵循一套标准的解析指令 ---》 SQL语句
    
                ***** 学习SQL语句
    
                - DBMS: 数据库管理系统
    
                    - 关系型数据库: MySQL、Oracle、DB2、sql server、....
                        - 1) 表结构
                            - 需要哪些字段
                            - 字段是什么类型
    
                        - 2)  字段与字段类型
                            - name ---> 'tank' ----> 字符串
                            - age ---> 17 ---> 整型
    
    
    
                    - 非关系型数据库: redis、mongodb...
                        - 非关系型数据库一般以 key:value的形式存储
                        {
                            'name': 'tank'
                        }
    View Code

       2. 数据库安装

    - 安装数据库
            - 1.下载mysql安装包
            - 2.解压安装包放在D:中
            - 3.添加系统环境变量
            - 4.以管理员身份打开CMD,输入mysqld启动服务端,此时会卡主
                - bin目录下的: mysqld.exe
    
            - 5.在新建一个cmd,mysql客户端连接服务端,输入mysql -h 127.0.0.1 -P 3306 -p 密码
                - mysql初始化时无密码,可以进入游客模式,功能会很少
                - 无密码直接进入 ---》 不需要“-p 密码”
                - bin目录下的: mysql.exe
    
                全写: mysql -h 127.0.0.1 -P 3306 -p 密码
                简写: mysql -uroot -p 密码
    
            - 6.退出数据库客户端
                - exit;
                - quit;
    
            注意: SQL语句末尾必须加 “;” 号。
    
    
            - 查看操作系统中是否已经启动mysqld 服务端
                - tasklist | findstr "mysqld"
    
            - 杀死mysqld进程
                - taskkill /F /PID pid号
    
            - *****做服务端操作时,必须先以管理员身份打开
     - 数据库的命令:
            - 查看所有数据库:
                - show databases;
    
    
        - 制作系统服务
            - 1.必须将已启动的服务端mysqld关掉
            - 2.删掉已经启动过的mysqld的进程
            - 3.输入  mysqld --install ----> 安装mysqld系统服务
            - 4.输入 net start mysqld
    
    
        - mysql -u 登录mysql用户名(root) -p 密码
            - 默认自带 root 超级用户, 没有密码
            - 管理员登录
                - mysql -uroot 回车进入
    
            - 游客登录
                - mysql 回车
    
        - 修改密码:
            - 默认没有密码的情况下,设置密码
                - cmd>>>: mysqladmin -uroot password 123
    
            - 有密码的情况下,修改密码
                - cmd>>>: mysqladmin -uroot -p原密码 password修改的密码
                - cmd>>>: mysqladmin -uroot -p123456 password 123
    
        - 破解密码: 当密码忘记时采用
            - 1.关闭服务端
            - 2.跳过权限启动服务端
                - cmd>>>:  mysqld --skip-grant-tables
    
            - 3.客户端进入游客模式:
                - cmd>>>:  mysql
    
                - update mysql库.user表名 set 字段password=字段password('字段值') where 条件(若条件成立,则修改)user="root";
                - cmd>>>:  update mysql.user set password=password('123456') where user="root";
    
            - 4.重新启动服务端,不要跳过权限认证
                - 先kill掉跳过权限认证启动的服务端进程
                - 再手动去开服服务中的mysql服务即可
    
    
        - 设置配置文件:
           - 1.先在mysql目录下  --》 D:mysql-5.6.40-winx64
    
           - 2.创建一个名为 “my.ini” 的文件,这个是mysql的配置文件
                -   [mysqld]
                    character-set-server=utf8
                    collation-server=utf8_general_ci
    
                    # 这个是用python软件连接的客户端
                    [client]
                    default-character-set=utf8
    
                    # mysql软件的客户端
                    [mysql]
                    # 可写,可不写这样可以不需要用户名与密码直接登录mysql
                    # user='root'
                    # password=123
    
                    # 设置默认的字符编码
                    default-character-set=utf8
    
           - 3.重启mysql服务,即修改成功!      注意要先杀掉进程在重启服务
    View Code

      3. 库操作、表操作、表字段操作,记录操作  (增删改查)

    - 数据库基本语法结构:
    select distinct 字段1,字段2 from 库名.表名
    where 约束条件
             group by 分组依据
    having 过滤条件
    order by 排序条件
    limit 限制显示条数

    - 数据库基本操作: - 库的操作 ---> 类似于文件夹 - 增: 语法: create database 库名; - create database db1; - 查 语法: show databases; # 查看所有库 show create database db1; # 查看db1库中的信息 - 改 语法: alter database 库名 charset="字符编码类型"; - alter database db1 charset="utf8"; - 删 语法: drop database db1; - 表的操作 ---> 类似于文件 - 操作表前,需要先切换到指定库 语法: use 库名; - use db1; 查看当前所在的库: select database() - 增 varchar与char 都是字符串类型; varchar(20) 语法: create table 表名(字段名 字段类型); create table user_info(name varchar(20), age int); - 查 show tables; # 查看当前库中所有的表 desc user_info; # 查看表结构 - 改 语法: alter table 表名 modify name varchar(28); - alter table user_info modify name varchar(28); - 删 语法: drop table 表名; - create table test(id int); - drop table test; - 记录 的操作 ---> 类似于文件中的一行行数据 - 增: 语法: insert into 表名 values('字段类型的数据1', 字段类型的数据1); # 插入一条 - insert into user_info values('tank', 17); # 插入多条 - insert into user_info values('jason', 71), ('sean', 78); - 查: *: 指的是所有 语法: select * from 表名; # 查看表中所有的数据 - select * from user_info; # 查看name 字段为 tank 的记录 - select * from 表名 where 条件; # 条件成立则查看成功! - select * from user_info where name="tank"; # 查看name 字段为 tank 的age字段 - select age from user_info where name="tank"; # 查看所有的名字: - select name from user_info; - 改 语法: update 表名 set 字段名=字段值 where 条件判断; # 若条件成立,则修改成功! # 修改age为17的记录中name属性为 handsome - update user_info set name='handsome' where age=17; # 修改age>16的记录 中name属性为 d_sb - update user_info set name='d_sb' where age>16; - 删 语法: delete from 表名; # 清空表记录,不提交,可恢复。 - delete from user_info; 语法: truncate table 表名; # 删除,不可恢复 - truncate table user_info;

    补充:添加一列,删除一列

    alter  table  users  add column(sex  char(10))    #增加一列
    alter  table  users   drop  column (sex char(10))  #删除一列

    truncate   delete drop 的区别:

    truncate table 和 delete只删除数据(记录)不删除表的结构;
    drop语句将删除表的数据(记录)和表结构依赖的约束(constrain),触发器(trigger),索引(index),保留依赖于该表的存储过程/函数,但是变为invalid状态 .
    
    delete 是 DML 语句,操作完以后如果没有不想提交事务还可以回滚,truncate 和 drop 是 DDL 语句,操作完马上生效,不能回滚.
    View Code

    2.数据库四大操作语句

    数据库操作语句类型(DQL、DML、DDL、DCL)简介
    SQL语言共分为四大类:数据查询语言DQL,数据操纵语言DML,数据定义语言DDL,数据控制语言DCL。
    
    1. 数据查询语言DQL
    数据查询语言DQL基本结构是由SELECT子句,FROM子句,WHERE
    子句组成的查询块:
        SELECT <字段名表>
        FROM <表或视图名>
        WHERE <查询条件>
    
    2 .数据操纵语言DML
    数据操纵语言DML主要有三种形式:
        1) 插入:INSERT
        2) 更新:UPDATE
        3) 删除:DELETE
    
    3. 数据定义语言DDL
    数据定义语言DDL用来创建数据库中的各种对象-----表、视图、
        索引、同义词、聚簇等如:
        CREATE TABLE/VIEW/INDEX/SYN/CLUSTER
        表 | 视图 | 索引 | 同义词 | 簇
        说明:DDL操作是隐性提交的!不能rollback
    
    4. 数据控制语言DCL
    数据控制语言DCL用来授予或回收访问数据库的某种特权,并控制
    数据库操纵事务发生的时间及效果,对数据库实行监视等。如:
        1) GRANT:授权。
    
    
        2) ROLLBACK [WORK] TO [SAVEPOINT]:回退到某一点。
            回滚---ROLLBACK
            回滚命令使数据库状态回到上次最后提交的状态。其格式为:
            SQL>ROLLBACK;
            EG:
                -- 执行表数据闪回(回滚)申明
                ALTER TABLE FCPARDATA ENABLE ROW MOVEMENT;
    
                -- 正式数据回滚
                FLASHBACK TABLE FCPARDATA TO TIMESTAMP TO_TIMESTAMP('2019-06-19 08:40:00','YYYY-MM-DD HH24:MI:SS');
    
    
        3) COMMIT [WORK]:提交。
            在数据库的插入、删除和修改操作时,只有当事务在提交到数据库时才算完成。在事务提交前,只有操作数据库的这个人才能有权看到所做的事情,别人只有在最后提交完成后才可以看到。提交数据有三种类型:显式提交、隐式提交及自动提交。下面分别说明这三种类型。
    
    
            (1) 显式提交
            用COMMIT命令直接完成的提交为显式提交。其格式为:
            SQL>COMMIT;
    
    
            (2) 隐式提交
            用SQL命令间接完成的提交为隐式提交。这些命令是:
            ALTER,AUDIT,COMMENT,CONNECT,CREATE,DISCONNECT,DROP,
            EXIT,GRANT,NOAUDIT,QUIT,REVOKE,RENAME。
    
    
            (3) 自动提交
            若把AUTOCOMMIT设置为ON,则在插入、修改、删除语句执行后,
            系统将自动进行提交,这就是自动提交。其格式为:
            SQL>SET AUTOCOMMIT ON;











  • 相关阅读:
    WeChat小程序开发(五、前端总结)
    前端实现复制到剪贴板
    vue的自定义指令含大写字母会失效
    如何把网页变成黑白
    原生JS offsetX和offsetY引起抖动
    jQuery中prop方法和attr方法区别
    Js for循环中的闭包 & let和var的混用对比
    html和body标签默认高度为0带来的影响
    JS字符串数组降维
    CSS浮动流脱标的字围现象
  • 原文地址:https://www.cnblogs.com/bigbox/p/12019180.html
Copyright © 2020-2023  润新知