mysql基础(二)
2021-01-02 / highPhone啊

数据操作语言(DML)

插入数据

语法: insert into table_name(field1, field2, …) values(value1, value2,….),(value1,value2,…)

往数据表test中插入一条数据:

1
2
3
4
5
6
7
8
9
10
#创建数据表
create table `test`(
`id` int unsigned auto_increment,
`username` varchar(50),
`password` varchar(100),
primary key(`id`)
)engine=InnoDb default charset=utf8;
#插入一条数据,由于id是主键,切自动增长,我们在插入数据的时候并不需要显示指明主键。
insert into `test`(`username`,`password`) values('zhangsan', '123456');

往数据表中插入多条数据

1
2
3
4
5
 #插入多条数据
insert into `test`(`username`,`password`) values
('lisi', '123456'),
('wangwu', '123456'),
('tianqi', '123456');

注意事项

语法中的的(field1, field2, …)可以不写,但不写此项需要在values中写全表中的所有字段的值,所以写insert语句的时候,建议field与value要一一对应

1
#insert into `test` values('zhaoliu', '1234');

修改数据

语法:update table_name set field_name where 条件

把id > 3的用户名设置成highphone

1
update `test` set `username`='highphone' where `id` > 3;

双重条件 and 和 or

1
2
3
4
# 把id > 2和id < 3的密码修改成1234
update `test` set `password`='1234' where `id` > 1 and `id` < 3;
# 把id = 1 或id = 3的记录的用户名修改成highphone1
update `test` set `username`='highphone1' where `id` = 1 or `id` = 3 ;

where子句

where子句操作符返回布尔值

含义操作符示例结果
等于=1=2false
不等于<>或!=1<>2true
大于>1 > 2false
小于<1 < 2true
大于等于>=1 >=2false
小于等于<=1 <=2true
在..范围between…and[2, 5]闭区间
and5 > 2 and 2 > 1true
or5 > 2 or 1 > 2true

删除数据

语法: delete from table_name [where 条件]

delete命令

1
2
3
4
5
--删除全部数据(不建议使用)
delete from `test`

--删除指定数据,条件中的where子句与update语句中类似
delete from `test` where `id` =4

truncate命令

作用: 完全清空一个数据库表,表的结构和索引不会变

1
truncate `test`

delete和truncate的区别

  • 相同点:都能删除整表数据,都不会删除表结构
  • 不同点:
    • truncate 可以重新设置自增列,计数器会归零,delete 不会重置自增列的计算器(innodb中重启数据库会重置)
    • truncate 不会影响事务

数据查询语言(DQL)

Select语法:

1
2
3
4
5
6
7
8
9
10

SELECT [ALL| DISTINCT]
{[tablename.]* | [tablename.]field1 [AS alias], [tablename.]field2 [AS alias],....}
FROM tablename [AS alias]
[LEFT | RIGHT | INNER JOIN tablename AS alias]
[WHERE 条件]
[GROUP BY fieldname]
[HAVING 条件]
[ORDER BY fieldName ,... ASC|DESC]
[LIMIT startIndex pageSize]
  • Select [ALL| DISTINCT]
    ALL代表查询结果全部显示出来(默认), DISTINCT代表查询结果去重
  • {[tablename.]* | [tablename.]field1 [AS alias], [tablename.]field2 [AS alias],….}
    中括号内为可选内容,*|tablename.*代表查询全部列。field1或者tablename.field1表示查询指定列,多个filed中用,分隔开,as子句为指定列其别名(可选,如指定,查询结果中显示的就是别名)
  • FROM tablename [AS alias]
    查询指定数据表,as子句为指定数据表别名,可用别名代替数据表名
  • [LEFT | RIGHT | INNER JOIN tablename AS alias]
    连表查询,可选左连接、右连接、内连接
  • [WHERE 条件]
    where子句,查询需要满足此条件的数据
  • [GROUP BY fieldname]
    查询结果按照指定列分组
  • [HAVING 条件]
    分组查询结果上再根据having条件过滤
  • [ORDER BY fieldName ,… ASC|DESC]
    根据指定一个或者多个字段排序 ASC 升序 DESC 降序
  • [LIMIT startIndex pageSize]
    指定分页查询,参数是当前页起始位置和当前页行数。
本文链接:https://highphone.xyz/8baabe1.html