mysql增删改查

2018-07-09  本文已影响4人  指尖轻敲
id username password address sex age

1. 增

插入数据
insert into user values(1,'黄婷婷',111,'江苏',1,24);
或者
insert into user(id,username,password,address,sex,age) values(2,'鞠婧祎',222,'四川',1,23);

推荐使用第二种,第一种如果少写了字段会报错。id如果不写但是设置了自动增长,可以自动增加。

如果添加多条数据
insert into user(id,username,password,address,sex,age) values(3,'赵粤',333,'广东',1,22),(4,'赵嘉敏',444,'上海',1,21);
载入数据
load data infile 'C:/Users/Administrator/Desktop/data_test.txt' into table load_data;

1、这里注意如果报错,类似这种ERROR 1366 (HY000): Incorrect integer value: 'id' for column 'id' at row 1,应该是编码的问题,用高级点的编辑器改成utf8就可以,不要用utf8-BOM。

2、如果报错ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv opti on so it cannot execute this statement,则应该是权限的问题,可以使用命令

SHOW VARIABLES LIKE "secure_file_priv"; 

查看secure_file_priv的value值,这里有三种情况。

我们可以修改这个值windows下可以修改mysql下my.ini文件中secure_file_priv的值,保存之后重启mysql既可。

补充导出数据:
select * from girls into outfile 'D:/wamp/tmp/test.txt';

2. 删

DELETE FROM table_name WHERE LastName = 'Wilson'  //删除某一行
DELETE * FROM table_name //删除所有行

3. 改

修改数据
UPDATE table SET name = 'leilei' WHERE id = 2 

4. 查

查看所有数据
select * from user;
查询某个字段在某个区间的数据

查年龄在30-40之间的所有数据

select * from user where age between 30 and 40;
查某个字段等于满足两个条件的数据

查年龄等22或者23的数据

select * from user where age=23 or age=22;
select * from user where age in(22,23);
模糊查询

查询address字段以川结尾的数据,like和%集合使用,%表示匹配任意字符(_表示匹配任意一个字符)。

select * from user where address like '%川';
排序查询

默认升序(asc省略)

select * from user order by age;

降序

select * from user order by age desc; 
筛选查询

从第二条开始查,一共查四条

select * from user limit 2,4;
分组查询(去重查询)

选择的字段一定要在by后面包含。如果要查询分组后的数据,用having,和where一样,但是只针对分组后的数据。

select address from user group by address;

select address from user group by address having '地址'="河北";
查询有多少条数据
select count(*) from user;
起别名

如果字段名长,可以username起别名为name

select username as name from user;

联合查询

内联查询

把两个表id相同的信息拼成一行,一个user表和一个goods表

select * from user inner join goods on user.id = goods.id;

如果只想显示用户姓名和商品名

select username,name from user inner join goods on user.id = goods.id;
左联查询

显示以user表为准的信息,没有的信息为NULL

select * from user left join goods on user.id = goods.id;
右联查询

显示以goods表为准的信息,没有关联到的user表中其他信息不显示

select * from user right join goods on user.id = goods.id;
嵌套查询(不推荐)

查询谁买了物品(自己感觉就是user中id在goods中有的列出来)

select * from user where id in(select id from goods);

any、all

// 查询tab1中id值大于tab2中所有uid值得数据
select * from tab1 where id > all (select uid from tab2);

// 查询tab1中id值大于tab2中任何一个uid值得数据
select * from tab1 where id > all (select uid from tab2);
上一篇下一篇

猜你喜欢

热点阅读