zoukankan      html  css  js  c++  java
  • MySQL 之基础操作及增删改查等

    一:MySQL基础操作

    使用方法:

    方式一: 通过图型界面工具,Navicat,DBeaver

    方式二: 通过在命令行敲命令来操作

    SQL ( Structure query language ) 结构化查询语言

    SQL语言分为4个部分:DDL(定义)、DML(操作)、DQL(查询)、DCL(控制)

    1、DDL语句 数据库定义语言: 数据库、表、视图、索引、存储过程,例如CREATE DROP ALTER 2DCL语句 数据库控制语言: 例如控制用户的访问权限GRANTREVOKE

    3DML语句 数据库操纵语言: 插入数据INSERT、删除数据DELETE、更新数据UPDATE

    4DQL语句 数据库操纵语言:查询数据SELECT

    mysql数据库管理软件,记录事物一些数据特征:

    由库,,记录组成.

    库相当于一个文件夹

    表相当于一个文件

    记录就是文件里面一条一条的内容

    表中的成员属性就是一个一个字段

    可以为每个项目建立一个数据库

    关系型数据库:表与表之间有联系

    比如:mysql,oracle,db2,sqlserver

    非关系型数据库: key-value 键值对形式 没有表的概念

    比如:redis,mongodb,memcache

    SQL语句中的快捷键

    G 格式化输出(文本式,竖立显示)

    s 查看服务器端信息

    c 结束命令输入操作

    q 退出当前sql命令行模式

    h 查看帮助

    二:操作数据库的步骤

    在数据库操作之前我们首先还需要知道,数据库的服务是怎么关闭和开启的

    1.mysql 服务开启与关闭

    windows版:

    windows版本的数据库,需要用管理员的身份运行cmd 命令行窗口在能进行关闭和开启

    (1)用:  netstat -aon|findstr "3306"  命令查看端口是否开启监听LISTENING 表示开启

    因为mysql 的默认端口是3306 ,如果3306端口开启,表示mysql数据服务开启

    也可用进入window 服务进行查看,找到mysql服务进行查看如下图:

     (2)使用命令 : net stop mysql 关闭服务,后进行查看端口没有开启

    (3)使用命令:  net start mysql 开启服务,后进行查看端口开启LISTENING 状态

    linux版:

    service mysql start 启动mysql
    service mysql stop 停止mysql
    service mysql restart 重启mysql

    root@hsz:~# ps aux|grep mysql
    mysql      1107  0.2  7.3 1173604 143436 ?      Ssl  10:22   0:02 /usr/sbin/mysqld
    root       2764  0.0  0.0  21312  1016 pts/8    S+   10:37   0:00 grep --color=auto mysql
    root@hsz:~# service stop mysql
    stop: unrecognized service
    root@hsz:~# service mysql stop
    root@hsz:~# ps aux|grep mysql
    root       2810  0.0  0.0  21312  1020 pts/8    S+   10:37   0:00 grep --color=auto mysql
    root@hsz:~# service mysql start 
    root@hsz:~# ps aux|grep mysql
    mysql      2852  1.6  7.1 1173608 140816 ?      Ssl  10:38   0:00 /usr/sbin/mysqld
    root       2894  0.0  0.0  21312   988 pts/8    S+   10:38   0:00 grep --color=auto mysql
    root@hsz:~# service mysql restart
    root@hsz:~# netstat -tunlp | grep :3306
    tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2912/mysqld 
    View Code

    连接, 打开库, 操作, 关闭退出

    Windows再安装好mysql数据库的情况下,打开cmd 命令行提示符窗口

    1.连接MySQL设置密码及创建用户与赋予权限

    (1)连接mysql

    输入:mysql -uroot -p  mysql  -uroot  -h127.0.0.1 -p

    紧接着输入数据库密码

    -u 登录用户名

    -h 服务器地址(127.0.0.1默认为本机地址)

    -p 回车输入端口

    -P (大写,如果数据库端口有修改过不少默认端口需要加: -P 端口号)

    出现mysql>  这样的符号,说明登录mysql数据库成功

    (2)mysql设置密码

    # 查询当前登录的用户是谁
    select user();
    # 设置密码
    set password = password("123456");
    # 去除密码
    set password = password('');

    (3)创建账户

    #  (只是单纯创建一个账户而已,没权限的)
    # 为"10.0.0.46" 创建ceshi01用户,密码111来访问服务器mysql
    create user 'ceshi01'@"10.0.0.46" identified by '111'; # 指定具体用户
    crecreate user 'ceshi04'@'10.0.0.%' identified by '111'; # 指定某个网段
    crecreate user 'ceshi04'@'192.168.129.%' identified by '111';
    create user 'ceshi03'@'%'; # 指定所有机器都可以连接mysql

    # 查看用户权限 (用户怎么创建怎么查看)
    show grants for 'ceshi04'@'10.0.0.%'
    # GRANT USAGE ON *.* TO 'ceshi02'@'192.168.11.%' USAGE无权限的意思

    # 客户端连接服务器mysql
    mysql -uceshi04 -h10.0.0.200 -p

    (4)用户授权

    # 用户授权:(创建用户的同时,也授予权限)
    # 完整语法:
    grant 权限 on 数据库.表名 to '用户名'@'ip地址' identified by '密码';
    权限:
    all privileges 表示所有权限 (可以简写all)
    # select 查询数据权限
    # insert 插入数据权限
    # update 更新数据权限
    # delete 删除数据权限
    # *.* 代表所有库.所有表
    grant select on *.* to 'ceshi04'@'10.0.0.%' identified by '222';
    grant select on *.* to 'ceshi01'@'192.168.109.%' identified by '222';
    # 查看所有数据库
    show databases;
    # 移除权限
    revoke select on *.* from 'ceshi04'@'10.0.0.%';
    # 删除账户
    drop user 'ceshi04'@'10.0.0.%';
    # 刷新权限
    flush privileges;

    2.数据库语法的特点

    1) SQL 语句可以换行, 要以分号结尾

    3) 如果提示符为 '> 那么需要输入一个'回车

    4) 命令打错了换行后不能修改, 可以用 c 取消

    2. 数据库操作

     1)查看数据库 show databases;

    2)创建数据库 create database 库名 default charset=utf8;

    3)删除数据库 drop database 库名;

    4)打开数据库 use 库名;

    对以上一一操作:

    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | zero               |
    +--------------------+
    5 rows in set (0.02 sec)
    
    mysql> create database db1 default charset=utf8;
    Query OK, 1 row affected (0.00 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | db1                |
    | mysql              |
    | performance_schema |
    | sys                |
    | zero               |
    +--------------------+
    6 rows in set (0.00 sec)
    
    mysql> drop database db1;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show databases;
    +--------------------+
    | Database           |
    +--------------------+
    | information_schema |
    | mysql              |
    | performance_schema |
    | sys                |
    | zero               |
    +--------------------+
    5 rows in set (0.00 sec)
    
    mysql> use zero;
    Database changed
    mysql>
    mysql操作1
    操作数据库(文件夹)
    增:
    # 创建数据库db1,设置字符集utf8
    create database db1 charset utf8;
    查:
    # 查看建库信息
    show create database db1;
    # 显示所有数据库
    show databases;    
    改:
    #更改数据库字符集
    alter database db1 charset gbk;
    
    删:
    # 删除数据库db1
    drop database db1;
    数据库操作2

    3. 数据表操作

    数据库管理系统中, 可以有很多, 每个数据库中可以包括多张数据

    mysql> select * from test;
    +------+----------+------+------+--------+
    | id   | name     | sex  | age  | height |
    +------+----------+------+------+--------+
    |    1 | zhangsan | w    |   20 |    170 |
    |    3 | wangwu   | m    |   23 |    175 |
    |    2 | wu       | m    |   23 |    172 |
    +------+----------+------+------+--------+
    3 rows in set (0.00 sec)
    查看数据表

     id   | name     | sex  | age  | height

    每一项称为一个字段

    下面的数据每一行称为一条记录

    查看表: show tables;

    创建表: create table 表名(字段名1 类型,字段名2 类型)engine=innodb default charset=utf8;

    创建表: 如果表不存在,则创建, 如果存在就不执行这条命令

    create table if not exists 表名(

    字段1 类型,

    字段2 类型

    );

    删除表: drop table 表名;

    表结构: desc 表名;

    如下是对上面的命令格式进行操作,以t1,t2为表名

    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | t1            |
    +---------------+
    1 row in set (0.00 sec)
    
    mysql> create table t2(id int,name char(10)) engine=innodb default charset=utf8;
    Query OK, 0 rows affected (0.06 sec)
    
    
    ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''
    '' at line 1
    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | t1            |
    | t2            |
    +---------------+
    2 rows in set (0.00 sec)
    
    mysql> drop table t1;
    Query OK, 0 rows affected (0.03 sec)
    
    mysql> show tables;
    +---------------+
    | Tables_in_db1 |
    +---------------+
    | t2            |
    +---------------+
    1 row in set (0.00 sec)
    
    mysql> desc t2;
    +-------+----------+------+-----+---------+-------+
    | Field | Type     | Null | Key | Default | Extra |
    +-------+----------+------+-----+---------+-------+
    | id    | int(11)  | YES  |     | NULL    |       |
    | name  | char(10) | YES  |     | NULL    |       |
    +-------+----------+------+-----+---------+-------+
    2 rows in set (0.00 sec)
    以上介绍的例子

    4. 记录操作 增删改查

    插入 单条数据:insert into 表名(字段1,字段2,字段3) values(值1,值2,值3);

    插入多条数据:insert into 表名(字段1,字段2,字段3) values(a值1,a值2,a值3),(b值1,b值2,b值3);

    查询 select * from 表名;

    select 字段1,字段2,字段3 from 表名;

    select * from 表名 where 字段=某个值;

    修改 update 表名 set 字段=某个值 where 条件;

    update 表名 set 字段1=值1,字段2=值2 where 条件;

    update 表名 set 字段=字段+值 where 条件;

    删除 delete from 表名 where 字段=某个值;

    操作表(文件)
        int 整型  char 字符串
        # 切换数据库
        use db1;
        增:
        # 创建数据表t1(字段名,类型...)
        create table t4(
        id int,
        name char
        );
        
        查:
            # 查看所有表
            show tables;
            # 查看建表语句
            show create table t1;
            '''
        CREATE TABLE `t5` (
          `id` int(11) DEFAULT NULL,
          `name` char(1) DEFAULT NULL
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8
            '''
            # 垂直查看数据信息,默认水平.
            show create table t1G
            # 查看表结构
            desc t1;
        改:
            # modify 单纯改变数据类型  指定char字符长度是6
            alter table t1 modify name char(6);
            # change 连名字带数据类型都改变 新名字和数据类型都需要指定
            alter table t1 change name NAME char(7);
            alter table t1 change NAME name char(11);
            # 更改表名
            alter table t1 rename t99
        删:
            # 删除表t1
            drop table t5
    
    操作记录(文件内容):
        增:
            #  t2(字段名字,逗号彼此隔开) 一次只插入一条;
            insert into t2(id,name) values(1,'one')
            #  一次插入多条数据
            insert into t2(id,name) values(2,"two"),(3,"three"),(4,"four")
            # 可以不指定具体字段,但是字段值必须一一对应
            insert into t2 values(5,"five")
            # 可以具体指定某个字段设置值
            insert into t2(id) values(6);
        查
            # select 后面接字段名称 也可以直接写* ,*代表所有字段;
            select id,name from t2;
            select * from t2;
            # 数据库.表 在没有选择数据库的时候,也可以查询;
            select * from db1.t2;
            
        改:
            # upate 表名 set 字段=where 条件
            update t2 set name = "zero";
            # 加上条件再去修改值,否则全部都修改了 条件id=3的这条记录
            update db1.t2 set name = "six" where id = 4;
        删:
            # 删除t2表所有的数据
            delete from t2;
            # 删除six,指定具体数据删除,加上where 条件 id=4的记录
            delete from t2 where id=4;
    
    # 清空数据,id号保留;
    delete from t2
    # 清空数据,id号重置;(速度更快)
    trancate table t1;
    
    
    # 常用数据类型:
    int 整型
    
    char和varchar 都是字符串
    char(5)      定长,固定开辟字符长度是5的空间 (手机号,或者身份证);速度快
    varchar(5)   变长,最大开辟字符长度是5的空间,实际按照存入的值算大小,速度慢
    float(255,30) 一共255,小数点最多占用30位
    enum 和 set 的数据必须从其中挑选,没有的话报错;
    enum         枚举 从一组数据中选一个 (一般性别上)
    set          集合 从一组数据中选多个 ,自动去重 
    
    一个综合的例子:
    mysql> create table t10(
        -> id int,
        -> name varchar(15),
        -> money float(6,2),
        -> sex enum("man",'woman'),
        -> hobby set("eat","drink",'play','smile')
        -> );
    # 正确
    insert into t10(id,name,money,sex,hobby) values(1,'one',9.1,"man","eat,drink");
    # float(6,2) 整数位最大是4位.
    insert into t10(id,name,money,sex,hobby) values(2,'sdfsdfd',82.349,"man","smile,smile");
    insert into t10(id,name,money,sex,hobby) values(2,'sdfsdfd',82.349,"man","smile1343smile");
    操作表和表内容

    # 常用数据类型:
    int 整型

    char和varchar 都是字符串
    char(5) 定长,固定开辟字符长度是5的空间 (手机号,或者身份证);速度快
    varchar(5) 变长,最大开辟字符长度是5的空间,实际按照存入的值算大小,速度慢
    float(255,30) 一共255,小数点最多占用30位
    enum 和 set 的数据必须从其中挑选,没有的话报错;
    enum 枚举 从一组数据中选一个 (一般性别上)
    set 集合 从一组数据中选多个 ,自动去重

    综合案例:

    mysql> create table t10(
    -> id int,
    -> name varchar(15),
    -> money float(6,2),
    -> sex enum("man",'woman'),
    -> hobby set("eat","drink",'play','smile','piao')
    -> );
    # 正确
    insert into t10(id,name,money,sex,hobby) values(1,'wangwen',9.1,"man","eat,drink");
    # float(6,2) 整数位最大是4位.
    insert into t10(id,name,money,sex,hobby) values(2,'sdfsdfd',82.349,"man","piao,piao,piao");
    insert into t10(id,name,money,sex,hobby) values(2,'sdfsdfd',82.349,"man","piao1343piao");

    注:

    linux查看mysql配置文件

    find / -name my.cnf
    nano /etc/mysql/my.cnf
    !includedir /etc/mysql/conf.d/
    !includedir /etc/mysql/mysql.conf.d/

    cd /etc/mysql/conf.d/ # 客户端mysql配置文件
    cd /etc/mysql/mysql.conf.d/ # 服务端mysql配置文件

    #把文档当中

    #放服务端配置文件中
    # 服务端使用的字符集默认为8比特编码的latin1字符集
    character-set-server=utf8
    # 创建新表时将使用的默认存储引擎
    default-storage-engine=INNODB

    # 设置mysql客户端默认字符集
    default-character-set=utf8

     

    退出MySQL

    exit; 或者 quit;

    卸载MySQL

    # ### mysql 卸载 
    # (1) windows 卸载
    关闭服务
    cmd : mysqld remove
    删除已经解压的文件夹
    重启电脑
    
    # (2) linux 卸载
    sudo apt-get autoremove --purge mysql-server-5.7 
    sudo apt-get remove mysql-common
    sudo rm -rf /etc/mysql/  /var/lib/mysql   
    #清理残留数据
    dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P  
    sudo apt autoremove
    sudo apt autoreclean
    卸载mysql步骤

     

     

     

     

  • 相关阅读:
    HDU 1465 不容易系列之一(错排,递归)
    HDU 1397 Goldbach's Conjecture(二分,查找素数)
    HDU 1393 Weird Clock (英语,纪念题)
    HDU 1163 Eddy's digital Roots(模)
    HDU 1098 Ignatius's puzzle(数学归纳)
    HDU 1028 Ignatius and the Princess III (递归,dp)
    字符串方法
    __name__和__main的含义
    list 和 str
    python_元组
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/11029894.html
Copyright © 2011-2022 走看看