MySQL导入csv

导入csv文件

使用如下命令:
mysql> load data infile "your csv file path" into table [tablename] fields terminated by ','
注意上面导入文件时,都需要提前建立好与文件内各个段对应好的数据表。并且文件的路径需要使用引号括起来,双引号和单引号都可以。

mysql去重的最方便的方法

方法一:

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段

下面先来看看例子:

table
id name
1 a
2 b
3 c
4 c
5 b

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。

select distinct name from table
得到的结果是:

name
a
b
c

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧:

select distinct name, id from table

结果会是:

id name
1 a
2 b
3 c
4 c
5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句:

select id, distinct name from table

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。

最终好用的语句如下:

select *, count(distinct name) from table group by name

结果:

id name count(distinct name)
1 a 1
2 b 1
3 c 1

最后一项是多余的,不用管就行了,目的达到。。。。。

哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错。。。。。。。。!OK了

总结语句:select *, count(distinct name) from (select * from table……等嵌套语句) group by name
参考出处:https://blog.csdn.net/djun100/article/details/84473838?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.channel_param

mysql约束和标识

约束分为表级约束和列级约束,列级约束包括,主键,唯一,非空,默认值;外键约束一般写在表级约束里面

create table if not exists major(
    id int primary key,
    name varchar(20)
)

create table if not exists info(
    id int primary key,
    name varchar(20) not null,
     gender char(1),
    age int default 18,
    seat int unique,
    majorid int,
    constraint fk_info_major foreign key(majorid) referencer major(id) 
);

desc info;
show index from info;

1.注意外键字段必须是关联的主键或唯一键,关联其他键会报错

2.注意创建顺序,一定是先创建表,再创建带约束的关联表

3.插入和删除关联记录时候,注意顺序;插入先major后info;删除先info,后major

主键和唯一的区别

主键特点唯一,非空,一张表中至多一个主键,允许组合
唯一:可以为空,一张表中可以有多个唯一键,允许组合

create table if not exists info(
    id int,
    name varchar(20) not null,
     gender char(1),
    age int default 18,
    seat int,
    majorid int,
    constraint fk_info_major foreign key(majorid) referencer major(id),
    primary key(id,name),
    unique(age,seat)
);

自增id

alter table info modify COLUMN id int auto_increment

级联删除

constraint fk_info_major foreign key(majorid) REFERENCES major(id) on delete cascade;

alter table info add constraint fk_info_major foreign key(majorid) REFERENCES major(id) on delete cascade ;

级联置空

constraint fk_info_major foreign key(majorid) REFERENCES major(id) on delete set null;

alter table info add constraint fk_info_major foreign key(majorid) REFERENCES major(id) on delete set null;

查询Mysql数据库中以逗号分隔id存储的字段信息,id对应的详细信息在另一个表中

查询Mysql数据库中以逗号分隔id存储的字段信息,id对应的详细信息在另一个表中

有两张表,

一张为资产表b表

一张为用户表 u表

u表

id 名称 资产Id
1 小红 1,2,3
2 小明 2,5

b表

id   名称
1    房子
2    车子
3   股票
4    基金
5   债券

正常查询u表

select * from u

现在需求是:

id   名称   资产
1   小红     房子,车子,股票
2 小明    车子,债券

修改sql为

select u.id,u.名称,group_concat(b.名称 orderby b.id separator "----") from u left join b on find_in_set(b.id,u.资产Id) group by u.id;     

注意:有时候mysql会报错:

mysql 错误Row xx was cut by GROUP_CONCAT()

解决办法:

1.在MySQL配置文件中加上

group_concat_max_len = 102400 #你要的最大长度

2.可以简单一点,执行语句:

mysql> SET GLOBAL group_concat_max_len=102400;
Query OK, 0 rows affected (0.01 sec)

原理:

GROUP_CONCAT有个最大长度的限制,超过最大长度就会被截断掉,你可以通过下面的语句获得:

mysql> SELECT @@global.group_concat_max_len;
@@global.group_concat_max_len
1024

1024这就是一般MySQL系统默认的最大长度,如果你的bid串起来大于这个就会出问题,所以解决方法就是改掉这个默认值了

mac上安装mysql

1.https://dev.mysql.com/downloads/file/?id=471631 下载安装文件
2.安装完成后,会跳出一个界面显示初始的root密码,保存下来第4步会用到,然后进入系统偏好设置启动mysql服务
3.添加环境变量:
(1).进入/usr/local/mysql/bin,查看此目录下是否有mysql,见pic6。
(2).执行vim ~/.bash_profile
在该文件中添加mysql/bin的目录,见pic7:
PATH=$PATH:/usr/local/mysql/bin
添加完成后,按esc,然后输入wq保存。
最后在命令行输入source ~/.bash_profile
4.mysql -uroot -pcode 进入数据库修改登录密码:
SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘newpass’);

MySQL install on mac

安装

我们将使用 Homebrew 安装 MySQL,同时也会安装 MySQL 的相关文件。
安装 MySQL:
brew update # 这是一个好习惯 brew install mysql
在使用 MySQL 前,我们需要做一些设置:
unset TMPDIR mkdir /usr/local/var
$ mysql_install_db –verbose –user=whoami –basedir=”(brew –prefix mysql)” –datadir=/usr/local/var/mysql –tmpdir=/tmp
使用

启动 MySQL 服务,运行 mysql.server mysql.server start
关闭 MySQL,运行:
mysql.server stop
你可以了解更多 mysql.server 的命令,运行:
mysql.server –help
登录 MySQL, 运行:
mysql -uroot
Note: 默认情况下,MySQL 用户 root 没有密码,这对本地开发没有关系,但如果你希望修改密码,你可以运行:
mysqladmin -u root password ‘new-password’
译注:

当你在设置密码时出现问题,可以参考 lgn21st 的方式。
此外,如果你觉得敲那么多命令是一件很麻烦的事情,那么你也可以参考 Mac OS安装 MySQL(使用二进制PGK包安装)

MAC下MySQL初始密码忘记怎么办

解决MAC下MySQL忘记初始密码的方法分享给大家,供大家参考,具体内容如下
第一步:
点击系统偏好设置->最下边点MySQL,在弹出页面中,关闭服务
第二步:
进入终端输入:cd /usr/local/mysql/bin/
回车后 登录管理员权限 sudo su
回车后输入以下命令来禁止mysql验证功能 ./mysqld_safe –skip-grant-tables &
回车后mysql会自动重启(偏好设置中mysql的状态会变成running)
第三步:
输入命令 ./mysql
回车后,输入命令 FLUSH PRIVILEGES;
回车后,输入命令 SET PASSWORD FOR ‘root’@’localhost’ = PASSWORD(‘你的新密码’);

laravel5.4最简单4步搞定链接mysql数据库

1.配置数据库的用户名和密码,编辑两个文件:根目录下的.env和config/database.php
2.配置路由,编辑routes/web.php
加行代码
[code]Route::get(‘user/{id}’, ‘UserController@show’);[/code]
表示访问这个链接 http://xxx.com/user/1 的时候,会去执行UserController里的show函数,并带上参数id
3.在目录app\Http\Controllers下新加个UserController,参考code如下:
[code]<?php
namespace App\Http\Controllers;
use Illuminate\Support\Facades\DB;
use App\Http\Controllers\Controller;
class UserController extends Controller
{
/**
* 为指定用户显示详情
* db:mysql
* @param int id
* @return Response
*/
public function show(
id)
{
//return ‘user_id’.id;users = DB::select(‘select * from users where id=’.id.’ limit 1′);
/* foreach (
users as user) {
echo
user->token_name;
}*/

data=json_encode(users);

return $users;
}
}[/code]
4.访问http://xxx.com/user/1 看效果