mysql增删改查
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值,这里有三种情况。
-
null:限制导入(outfile)导出
-
'D:/wamp/tmp':限制导入导出只能发生在这个目录下
-
'':不对导入导出做限制
我们可以修改这个值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);