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. 库操作、表操作、记录操作

- 数据库基本操作:
        - 库的操作 ---> 类似于文件夹
            - 增:
                语法: 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

 

 












你可能感兴趣的:(mysql 基础操作)