插入记录(增)
列与值严格对应
插入基本语法一
insert into 表 values(值1,值2,值n);
插入基本语法二
insert into 表(字段1,字段2,字段n) values (值1,值2,值n);
基本语法1和基本语法2的区别是:
基本语法1的插入语句, 表中有多少个字段就必须要插入多少个值。一个不能多,
一个也不能少。若有默认值,不想传,可以写上null。基本语法2中,除非有必填字段必须要写入值外。 如果有默认值的不想写可以忽略不写。mysql会自动补主默认值。
基本语法2中,以user(id,username,sex)字段顺序为值的顺序。
假设有一张表为user表,我们对字段、字段说明、 类型和字段选填和必须状态进行说明。
表结构如下:
字段 id username email password sex
中文说明 编号 用户名 邮箱 密码 性别
类型说明 int varchar(50) varchar(60) varchar(32) tinyint
默认值说明 自增 必填 选填字段,默认值为kkcode@126.com 选填字段 必填字段
ID为自增的自段可以不用传入值,每插入一次这个字段的值会自动向上加1。有默认值和可为空的字段可不传
按照基本语法一写上表中的插入语句:
insert into user values(null,'kkcode','kkcode@126.com',null ,1);
按照基本语法二写上表中的插入语句:
insert into user(username,sex) values('kkcode',1);
以表user(username,sex)的插入顺序为准,基本语法二为更常用的用法
基本语法变形:一次插入多条记录
insert into user(username,password,sex)
values('黄晓明', 'abcdef', 1),
( 'baby', 'bcdeef', 0),
( '陈赫', '123456', 1),
('王宝强', '987654', 1);
删除记录(删)
基本语法
delete from 表 [where 条件];
示例
delete from user where id > 10;
测试过程中出现赃数据或项目上线前,需要把表记录清空。delete和truncate是一样的,但它们有一点不同,那就是DELETE可以返回被删除的记录数,而TRUNCATE TABLE返回的是0。
如果一个表中有自增字段,使用truncate table,这个自增字段将起始值恢复成1.
基本语法
TRUNCATE TABLE 表名;
示例
TRUNCATE TABLE user;
# 示例说明 清空表的数据,并且让自增的id从1开始自增
【切记】
删除时一定要记住加上where条件, 不然会清空掉整个表的记录。删除重要数据前一定要备份、备份、备份
更新记录(修改)
基本语法
改那个表,修改哪些列值,修改那几行?
update 表名 set 字段1=值1,字段2=值2,字段n=值n where 条件
修改单个字段示例
update money set balance=balance-500 where userid = 15;
修改多个字段示例
update money set balance=balance-500,username='kkcode' where userid = 15;
同时对两个表进行更新,基本语法
update 表1,表2 set 字段1=值1,字段2=值2,字段n=值n where 条件
示例
update money m,user u m.balance=m.balance*u.age where m.userid=u.id;
# 修改money,将money表的别名设置为m;
# user表的别名设置为u;将m表的余额改为m表的balance*
# 用户表的age。执行条件是:m.userid = u.id
查询记录(查)
我们定义了一个表结构,表名为money。
CREATE TABLE money (
id INT(10) NOT NULL AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL ,
balance FLOAT NOT NULL ,
province VARCHAR(20) NOT NULL ,
age TINYINT UNSIGNED NOT NULL ,
sex TINYINT NOT NULL) ENGINE = InnoDB CHARACTER SET utf8;
插入数据
insert into money (id,username,balance,province,age,sex) values
(1,'前端github',120.02,'湖北',29,1),
(2,'范冰冰',260.23,'山东',40,0),
(3,'黄晓明',150.86,'山东',40,1),
(4,'井柏然',810,'辽宁',27,1),
(5,'李冰冰',20.15,'黑龙江',43,0),
(6,'成龙',313,'山东',63,1),
(7,'杨幂',123,'北京',30,0),
(8,'刘诗诗',456,'北京',29,1),
(9,'柳岩',23.4,'湖南',36,0),
(10,'赵本山',3456,'辽宁',63,1),
(11,'汪峰',34.32,'北京',44,1),
(12,'郭德纲',212,'天津',43,1);
基础查询
select * from 表名;
查询结果如下
省略列值
select * from money;
+----+-----------+---------+-----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+-----------+-----+-----+
指定字段查询
基本语法
select 字段 from 表;
示例
select id,username, balance from money;
查询结果如下
+----+----------+---------+
| id | username | balance |
+----+----------+---------+
| 1 | 前端github | 120.02 |
| 2 | 范冰冰 | 260.23 |
| 3 | 黄晓明 | 150.86 |
| 4 | 井柏然 | 810 |
| 5 | 李冰冰 | 20.15 |
| 6 | 成龙 | 313 |
| 7 | 杨幂 | 123 |
| 8 | 刘诗诗 | 456 |
| 9 | 柳岩 | 23.4 |
| 10 | 赵本山 | 3456 |
| 11 | 汪峰 | 34.32 |
| 12 | 郭德纲 | 212 |
+----+----------+---------+
12 rows in set (0.00 sec)
查询单个字段不重复记录
基本语法
select distinct 字段 from 表;
示例
select distinct age money from money;
//查询money表中年龄唯一的所有结果
查询结果如下
+-------+
| money |
+-------+
| 29 |
| 40 |
| 27 |
| 43 |
| 63 |
| 30 |
| 36 |
| 44 |
+-------+
8 rows in set (0.14 sec)
条件查询-where
基本语法
select 字段 from 表 where 条件;
示例
select * from money where age = 29;
查询结果如下
+----+----------+---------+----------+-----+-----+
| id | username | balance | province | age | sex |
+----+----------+---------+----------+-----+-----+
| 1 | 前端github | 120.02 | 湖北 | 29 | 1 |
| 8 | 刘诗诗 | 456 | 北京 | 29 | 1 |
+----+----------+---------+----------+-----+-----+
2 rows in set (0.00 sec)
where后可接的条件:
1.比较运算符
>、<、>=、<=、!=等比较运算符;
in(m,n) //在[m,n]的集合内
in(100,500) // 在[100,500]的集合内,集合不是范围
between m and n //在[m,n]的范围内
between 100 and 500 //在[100,500]范围内
2.逻辑运算符
多个条件还可以使用 or , and ,not等逻辑运算符进行多条件联合查询
示例:查询所有字段 要求id小于10 并且province=’湖北’
select * from money where id <10 and province='湖北';
查询结果如下
----+-----------+---------+----------+-----+-----+
| id | username | balance | province | age | sex |
+----+-----------+---------+----------+-----+-----+
| 1 | 前端github | 120.02 | 湖北 | 29 | 1 |
+----+-----------+---------+----------+-----+-----+
1 row in set (0.00 sec)
结果集排序
select id,username,balance from money order by balance desc;
排序用到的关键词:
关键词===========说明
asc ==>升序排列,从小到大(默认)
desc==> 降序排列,从大到小
多字段排序
order by 后面可以跟多个不同的字段排序,并且排序字段的不同结果集的顺序也不同,如果排序字段的值一样,则值相同的 字段按照第二个排序字段进行排序。
select id,username, balance from money order by balance desc,age asc;
//查询money表中的id,username,balance字段,按照余额进行降序排序,若余额全都一样,则再使用age进行升
序排序
结果集限制
对于查询或者排序后的结果集,如果希望只显示一部分而不是全部,则可以使用 limit 关键字对结果集进行数量限制
【mysql概念性入门至此结束,多练习,融汇贯通后,再学习更深层次的mysql】
【欢迎关注,点赞支持】