mysql运用

2020-03-20  本文已影响0人  卿酌南烛_b805

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)

注:

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

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

上一篇下一篇

猜你喜欢

热点阅读