美文网首页
mysql运用

mysql运用

作者: 卿酌南烛_b805 | 来源:发表于2020-03-20 16:01 被阅读0次

    Excel表格数据导入MySQL数据库

    有时候项目需要将存在表格中的批量数据导入数据库,最近自己正好碰到了,总结一下:

    1.将excel表格另存为.csv格式文件,excel本身的.xlsx格式导入时可能会报错,为了避免不必要的格式错误,直接使用.csv格式。

    2.使用notepad++编辑工具,打开.csv文件,将字符编码格式改为utf-8(不修改的话导入数据库后,中文会出现乱码)保存。

    notepad++打开文件--编码--转为UTF-8编码格式--保存

    3.按照excel数据格式新建数据库表,匹配字段(或者根据数据库要求的表格字段调整excel表格数据)

    4.导入数据。

    打开数据库--选择导入的数据库表--右键(导入向导)--CSV文件--选择要导入的文件--根据表格设计,修改字段名行和第一个数据行的数字--选择表的源字段(一一对应)--开始导入。

    附上两个自己参考导入的链接:

    https://blog.csdn.net/weixin_38437243/article/details/78974346

    https://jingyan.baidu.com/article/fc07f9891cb56412ffe5199a.html

    数据库的5个基本单位

    数据库服务器

    数据库

    数据表

    数据字段

    数据行

    登录数据库的命令(要记住)

    Mysql –h localhost

    –u root -p

    写出数据库创建、查看、数据库表操作命令

    (1)创建数据库:create database 数据库名字

    (2)查看:show databases;

    (3)查看表:show tables;

    (4)删除表:drop table 表名

    表创建及字段结构查看命令

    (1)创建表:create table 表名

    (2)查看表字段结构:desc 表名

    说出MyISAM、nnoDB引擎区别

    1、事务的支持不同(innodb支持事务,myisam不支持事务)

    2、锁粒度(innodb行锁应用,myisam表锁)

    3、存储空间(innodb既缓存索引文件又缓存数据文件,myisam只能缓存索引文件)

    4、存储结构

     (myisam:数据文件的扩展名为.MYD

    myData ,索引文件的扩展名是.MYI myIndex)

    (innodb:所有的表都保存在同一个数据文件里面 即为.Ibd)

    列出Mysql数据字段操作常用命令

    (1)、查看表结构:desc表名

    (2)、修改表字段类型 modify :alter table 表名 modify 字段名varchar(20);

    (3)、增加表字段:alter

    table 表名 add column 字段名类型

    (4)、增加字段时控制字段顺序:alter

    table 表名add 字段名字段类型after 字段名;

    (5)、删除表字段:alter table 表名 drop column 字段名;

    (6)、表字段改名:alter table 表名 change 字段原名字段新名字段类型;

    (7)、修改表字段排列顺序:alter table 表名modify 字段名 first;

    (8)、修改表名:alter table 旧表名 rename 新的表名;

    目前我们常用 的数据库编码有那2个

    GBK  UTF -8

    写一条mysql普通索引命令

    基本语法        alter table表  add index(字段)

    示例    alter table usres  add index(id)

    写出mysql数据库增删改查之插入语句命令

    插入基本语法一

    基本语法        insert into表 values(值1,值2,值n);

    插入基本语法二

    基本语法        insert into表(字段1,字段2,字段n) values(值1,值2,值n);

    基本语法1和基本语法2的区别是:

             基本语法1的插入语句,表中有多少个字段就必须要插入多少个值。一个不能多,一个也不能少。若有默认值,不想传,可以写上null。

             基本语法2中,除非有必填字段必须要写入值外。如果有默认值的不想写可以忽略不写。mysql会自动补主默认值。


    1、 完成结果集分组排序

    基本语法        select字段 from 表order  by字段排序关键词

    示例         select id,username,balance from money order by balance desc;

    示例说明        查询money表中的id,username,balance字段,按照余额进行降序排序

    排序用到的关键词:

    asc   升序排列,从小到大(默认)

    desc 降序排列,从大到小

    在 select 出来之后的结果集中排序使用 order by ,其中 desc 和 asc 是排序顺序中的关键字。desc 表示按照字段进行降序排列,asc 表示升序排列,如果不写关键字默认升序排列。

    2、 分别写出sum、count、max、min、avg等sql应用语句

    基本语法     select函数(字段) from 表

    1例如查询总金额:select sum(balance) from money;

    2.查询money表的id总数

    mysql> select count(uid) from money;

    3.查询最大金额

    mysql>select max(balance)from money;

    4查询最小金额

    mysql> select min(balance) from money;

    5. 查询平均金额

    mysql> select avg(balance) from money;

    完成2个表的联合查询操作

    mysql> select u.uid ,u.username as username,o.oid,o.uid,o.name as shopname from user u,order_goods o  where u.uid = o.uid;

    外连接

    基本语法        select表1.字段 [as 别名],表n.字段  from表1 LEFT JOIN 表n on  条件;

    示例         select *  from user left join order_goods  on user.uid = order_goods.uid;

    示例说明        以左边为主,查询哪些用户未购买过商品,并将用户信息显示出来外连接又分为左连接和右链接,具体定义如下。

    左连接:包含所有的左边表中的记录甚至是右边表中没有和它匹配的记录

    mysql> select *  from user left join order_goods  on user.uid = order_goods.uid;

    右连接:包含所有的右边表中的记录甚至是右边表中没有和它匹配的记录

    基本语法        select表1.字段 [as 别名],表n.字段  from表1 right JOIN 表n on  条件;

    示例         select *  from user right join order_goods  on user.uid = order_goods.uid;

    示例说明        查询商品表中哪些用户购买过商品,并将用户信息显示出来

    mysql> select *  from user right join order_goods  on user.uid = order_goods.uid;

    子查询

             有时候,当我们查询的时候,需要的条件是另外一个select语句的结果,这时就需要使用子查询。用于子查询的关键字包括in、not in、=、!=、exists、not exists等。

    基本语法        select字段  from表 where 字段 in(条件)

    示例1     select *  from user where uid in (1,3,4);

    示例1说明    按照id 查询指定用户

    示例2     select *  from user where uid in (select uid fromorder_goods);

    示例2说明    将购买过商品的用户信息显示出来

    示例1:

    mysql> select *  from user where uid in (1,3,4);

    示例2:

    mysql> select *  from user where uid in (select uid fromorder_goods);

    记录联合

             使用 union 和 union all 关键字,将两个表的数据按照一定的查询条件查询出来后,将结果合并到一起显示。两者主要的区别是把结果直接合并在一起,而 union 是将 union all 后的结果进行一次distinct,去除重复记录后的结果。

    基本语法        select语句1

    union[all] select语句2

    示例         select *  from user where uid in (1,3,4);

    示例说明        将商品表中的用户信息和用户表中的用户信息的结果组合在一起

    mysql> select uid from user union select

    uid from order_goods;

    Mysql增删改查之更新记录

    更新记录

             更新数据我们已经说过。需要修改内容,修改银行卡余额,修改装备信息的时候都需要使用到update,修改语句。

    money表数据结构:

    CREATE TABLE IF NOT EXISTS money (

      uid int(11) NOT NULL,

      username varchar(30) NOT NULL,

      balance DECIMAL(9,2) NOT NULL

     )ENGINE=InnoDB DEFAULT CHARSET=utf8;

    money表数据:

    INSERT INTO money(uid,username,balance)

    values('1','zhangsai','15000.22');

    INSERT INTO money(uid,username,balance)

    values('2','zhangsa','16000.22');

    INSERT INTO money(uid,username,balance)

    values('3','lisi','17000.22');

    INSERT INTO money(uid,username,balance)

    values('4','wangwu','18000.22');

    修改(也叫更新)语句的基本语语法如下:

    基本语法        update表名 set 字段1=值1,字段2=值2,字段n=值n where 条件

    示例         update money set  balance=balance-500 where userid = 15;

    示例说明        修改money表,将balance余额减500。要求userid为15

    假设我们有下面这一个表,表结构如下:

    mysql> select * from money where username='lisi';

    使用 update 语句进行记录更新

    mysql> update money set balance=balance-500 where uid = 15;

    同时对两个表进行更新

    基本语法        update表1,表2 set 字段1=值1,字段2=值2,字段n=值n where 条件

    示例         update money m,user um.balance=m.balance*u.age where m.userid=u.id;

    示例说明        修改money,将money表的别名设置为m;user表的别名设置为u;将m表的余额改为m表的balance*用户表的age。执行条件是:m.userid

    = u.id

    mysql> update money m,user u

    m.balance=m.balance*u.password where m.uid=u.uid;

    使用 delete 删除记录

    基本语法        DELETE FROM表 [where 条件];

    示例         DELETE FROM user whereid > 10;

    示例说明        删除掉用户表中id大于10的所有用户

    mysql> DELETE FROM money where uid='1';

     Query OK, 1 row affected (0.08 sec)

    删除掉了id为1的记录。

    清空表记录

             delete和truncate是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。

             如果一个表中有自增字段,使用truncate table 这个自增字段将起始值恢复成1.

    基本语法        TRUNCATE TABLE表名;

    示例         TRUNCATE TABLE user;

    示例说明        清空表的数据,并且让自增的id从1开始自增

    【切记】

    删除时一定要记住加上where条件,不然会清空掉整个表的记录。

    删除重要数据前一定要备份、备份、备份。

    [if !supportLists]2.1.4.2           [endif]Mysql 权限操作

    添加权限

    类别         详细解示

    基本语法        grant权限 on 库.表 to '用户'@'主机'

    identified by '密码';

    示例         grant select, inserton test.* to 'liwenkai'@'localhost' identified by '4311';

    示例说明        给予liwenkai用户,在本机连接test库所有表的权限。操作的这些表具有查询和写入权限

    注:可以针对一个用户增加多条权限。

    删除权限

    基本语法        revoke权限 on 库.表 from '用户'@'主机';

    示例         revoke select, insert ontest.* to 'liwenkai'@'localhost' identified by '4311';

    示例说明        给予liwenkai用户,在本机连接test库所有表的权限。操作的这些表具有查询和写入权限。

    参数说明

    grant all   在grant后接all说明给予所有权限

    revoke all         在revoke后接all说明删除所有权限

    权限on .        .所明给予所有库所有表的操作权限

    '用户'@'主机' 主机里面若为%。任意来源的主机均可以使用这个用户来访问

    创建数据库用户liwenkai ,具有对test数据库中所有标的 select / insert 权限

    示例:增加权限

    mysql> grant select, insert on test.* to

    'liwenkai'@'localhost' identified by '4311';

     Query OK, 0 rows affected (0.00 sec)

    示例:移除权限

    mysql> revoke insert on test.* from

    'liwenkai'@'localhost';

     Query OK, 0 rows affected (0.30 sec)

    注:

    上面的一些语句用的较少。你可以将知识点的掌握级别设置为了解级别。

    更多的时候,权限设置项特别多,人们往往记不住具体的命令。更多的时候人们使用专门的工具来操作权限。

    相关文章

      网友评论

          本文标题:mysql运用

          本文链接:https://www.haomeiwen.com/subject/frbjyhtx.html