• mysql的使用


    数据库操作:

     这里我们先修改一下windows下的my.ini文件,我的数据库安装在C:ProgramDataMySQLMySQL Server 8.0,配置文件在这里,编辑该文件增加下面的行:

    auto-rehash #添加auto-rehash

     重新登录:mysql -u root -p --auto-rehash

     

     1)创建数据库和删除数据库(win+r进入dos,然后mysql -uroot -p密码进入数据库操作窗口)

      使用普通用户,你可能需要特定的权限来创建或者删除 MySQL 数据库,root用户拥有最高权限,可以使用 mysqladmin 命令来创建数据库:

    mysqladmin -u root -p create mytest#创建一个名字为mytest的数据库
    #此时/usr/local/mysql/data/mytest目录就是创建的新的数据库
    #该mytest目录下便存在一个文件:db.opt
    
    #或者登录mysql后执行
    CREATE DATABASE 数据库名;
    
    #如果想删除这个创建的数据库,有三种方法可选择
    #一:在bash下直接执行rm
    sudo rm -rf /usr/local/mysql/data/mytest#找到创建的数据库所在路径
    
    #二:使用mysqladmin命令
    mysqladmin -u root -p drop mytest
    #需要输入密码,然后弹出:Do you really want to drop the 'mytest' database [y/N] 
    #输入y确认即可drop 掉mytest
    
    #三,登录mysql后
    mysql > drop database mytest;

     2)显示数据库信息

    #先执行mysql登录用户mysql
    SHOW DATABASES;
    
    #使用某一数据库,USE 数据库名字
    USE RUNOOB;

    数据表操作

     1)查看某数据库下面的数据表

    #要先use db_name,进行目标数据库,然后查看某个数据库下的数据表
    USE DATABASE_NAME;
    SHOW TABLES;

     

     2)查看某个数据表的结构

    DESC TABLE_NAME;

     3)创建数据表

    mysql> create table runoob_table(
        runoob_id INT NOT NULL AUTO_INCREMENT,
        runoob_title VARCHAR(100) NOT NULL,
        runoob_author VARCHAR(40) NOT NULL,
        submission_date DATE,
        PRIMARY KEY (runoob_id)
        ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
    
    show tables;
    
    • 如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL, 在操作数据库时如果输入该字段的数据为NULL ,就会报错。
    • AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
    • PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
    • ENGINE 设置存储引擎,CHARSET 设置编码

     4)查看数据表内容

    select * from runoob2_tbl;

      

     

      

    select submission_date from runoob_tbl_clone where runoob_title='learn R' and runoob_name='xiaoyang';
    

      

     

     5)删除数据表

    #直接删除数据表
    drop table runoob_table;
    
    #删除数据表中的某条记录
    select * from runoob2_tbl;
    
    delete from runoob2_tbl where runoob_title='learn jsp';
    
    select * from runoob2_tbl;
    
    #清空表,保持表结构
    truncate runoob2_tbl;
    
    select * from runoob2_tbl;
    

      

      

      1、当你不再需要该表时, 用 drop;

      2、当你仍要保留该表,但要删除所有记录时, 用 truncate;

      3、当你要删除部分记录时, 用 delete。

     6)插入数据

    #INSERT INTO table_name ( field1, field2,...fieldN ) VALUES( value1, value2,...valueN );
    #如果数据是字符型,必须使用单引号或者双引号,如:"value"
    
    insert into runoob_tbl_clone (runoob_id, submission_date, runoob_title, runoob_name) VALUES(8, NULL, 'learn ML', 'xiaohong');
    
    insert into runoob_tbl_clone (runoob_id, submission_date, runoob_title, runoob_name) VALUES(7, NOW(), 'learn PERL', 'xiaoxiao');
    
    #当然也可以一次插入多条数据
    insert into runoob_tbl_clone (runoob_id, submission_date, runoob_title, runoob_name) VALUES (9, NOW(), 'learn hadoop', 'xiaoli'), (10, NULL, 'learn AI', 'HH') ;
    

      

     

     7)从文件直接导入数据库

      如有一文件input:

      

    load data local infile '/path/input' into table runoob_tbl_clone  FIELDS TERMINATED BY ',' ;
    
    #如果指定LOCAL关键词,则表明从客户主机上按路径读取文件。如果没有指定,则文件在服务器上按路径读取文件。
    
    load data local infile '/path/input' into table runoob_tbl_clone  FIELDS TERMINATED BY ',' LINES TERMINATED BY '
    ';
    
    #两个命令的 FIELDS 和 LINES 子句的语法是一样的。两个子句都是可选的,但是如果两个同时被指定,FIELDS 子句必须出现在 LINES 子句之前。

      

      如果load本地文件提示: The used command is not allowed with this MySQL version,则我们先执行: mysql> SET GLOBAL local_infile = true;

      或者:mysql -u root -p --local-infile somedatabase

     

      另外插入本地文件之前,要插入的表必须先存在,这样就必须先创建表,但是如果表列数特别多,比如几百行,如何快速load呢?

     

     8)存储过程

      a)一种用来处理数据的方式,存储过程是一种没有返回值的函数

      b)存储过程和函数是事先经过编译并存储在数据库的一段SQL语句的集合,调用存储过程和函数可以简化开发人员的许多工作,减少时间在数据库和应用服务器直接的传输,能够提高数据处理的效率

      c)和函数的区别在于存储函数必须有返回值,而存储过程没有返回值,但是存储过程的参数可以使用IN,OUT,INOUT类型(可以通过OUT和INOUT向外传出数据),而存储函数的参数只能是IN类型的,如果有函数从其他类型的数据库迁移到MySQL,那么就可能需要将函数改为存储过程
      实例:向t_copy表插入100个用户(总不能调用insert into 100次吧?)
    创建表
    CREATE TABLE t_pro(
    id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
    NAME VARCHAR(50)
    )CHARSET utf8;
    

      我们先插入三条数据:

    insert into t_pro (id, NAME) VALUES(1, 'user1'),(2,'user2'),(,us3,'user3');
    

      

      定义存储过程:

    DELIMITER $$
    CREATE PROCEDURE pro_copy()
    BEGIN
    SET @i=4;
    WHILE @i<=100 DO
    INSERT INTO t_pro(NAME) VALUES(CONCAT("user",@i)); --拼接USER 和i值
    SET @i=@i+1; --防止成为死循环
    END WHILE; --结束循环
    END $$ --结束自定义结束符
    DELIMITER ;
    

      查询存储过程:

    show create procedure pro_copyG
    

      

      调用存储过程:

    call pro_copy();
    

      再次查询表:

    select * from t_pro;
    

      

     9)查询一个数据表的记录总数

      首先desc我们可以看看字段名,然后使用count来查询记录总数

    select count(field_name) from table_name;

      

      

  • 相关阅读:
    Beautifulsoup模块
    Tronado自定义Form组件
    5分钟入门Tornado
    Django-组件拾遗
    mvc Area(区域)相关技术
    制作web安装程序
    MVC
    Asp.net MVC中repository和service的区别
    关于ASP.NET MVC+Repository+Service架构的一些思考
    MVC引入SERVICE层 提高代码重用性 沟通CONTROL和MODEL
  • 原文地址:https://www.cnblogs.com/always-fight/p/10102362.html
Copyright © 2020-2023  润新知