MySQL的数据操作

添加数据

格式:insert into 表名(字段列表) values(值列表)

  1. 标准添加(指定所有字段和值)
 insert into users(id,name,age) values (1,'张麻子',30);
  1. 指定部分字段添加
mysql> insert into users(name,age) values ('张二麻子',30);
Query OK, 1 row affected
  1. 不指定字段添加(标准添加省略了字段)
mysql> insert into users values(null,'张三麻子',30);
Query OK, 1 row affected
  1. 批量添加
mysql> insert into users values
    -> (null,'mz',30),
    -> (null,'a',12);
Query OK, 2 rows affected
Records: 2  Duplicates: 0  Warnings: 0

修改数据

格式:update 表名 set 字段1=值1,字段2=值2,字段3=值3,……where条件

mysql> update users set name='李四麻子',age=28 where id=1;
Query OK, 1 row affected
Rows matched: 1  Changed: 1  Warnings: 0
mysql> update users set name='李四',age=12 where id in(2,3);
Query OK, 2 rows affected
Rows matched: 2  Changed: 2  Warnings: 0
mysql> update users set name='李四',age=12 where id=2 or id =3;
Query OK, 0 rows affected
Rows matched: 2  Changed: 0  Warnings: 0

id in(2,3) 等价于 id=2 or id =3

删除数据

格式:delete from 表名 where 条件

mysql> delete from users where id=5;
Query OK, 1 row affected

SELECT 查询

格式:select 字段 from 表名

mysql> select * from student;
+----+------+----------+-----+----------+-------------+----------+------------+---------------+
| id | name | password | sex | grade_id | phone       | location | birthday   | email         |
+----+------+----------+-----+----------+-------------+----------+------------+---------------+
|  1 | 张三 | 123      ||        1 | 12312312312 | 北京     | 1999-01-14 | 123@123.com   |
|  2 | 李四 | 123      ||        2 | 12312312344 | 上海     | 1998-09-08 | 1232@qq.com   |
|  3 | 王五 | 123      ||        5 | 12312344423 | 杭州     | 1999-07-05 | 44433@111.com |
+----+------+----------+-----+----------+-------------+----------+------------+---------------+
3 rows in set

DISTINCT关键字能够检索不同的行

mysql> select distinct stu_id from score;
+--------+
| stu_id |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set

mysql> select stu_id from score;
+--------+
| stu_id |
+--------+
|      1 |
|      2 |
|      3 |
|      1 |
|      2 |
|      3 |
+--------+
6 rows in set

LIMIT关键字能够限制显示的行数

mysql> select distinct stu_id from score limit 1;
+--------+
| stu_id |
+--------+
|      1 |
+--------+
1 row in set

order by 排序

mysql> select distinct stu_id from score order by stu_id;
+--------+
| stu_id |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set

mysql> select distinct stu_id from score order by stu_id desc;
+--------+
| stu_id |
+--------+
|      3 |
|      2 |
|      1 |
+--------+
3 rows in set

mysql> 

通过order by子句 可以将数据按某个/某些字段正序/倒序排序

条件过滤 where 子句

mysql> select score,stu_id from score where subject_id =1;
+-------+--------+
| score | stu_id |
+-------+--------+
|   100 |      1 |
+-------+--------+
1 row in set

在同时使用where 和order by 的时候,要将order by 放在后面,否则会报错

where子句操作符

操作符说明
=等于
<> !=不等于
<小于
>大于
<=小于等于
>=大于等于
between…and…两个值之间
is null空值

and和or

mysql> select name from student where sex='男' and grade_id=1;
+------+
| name |
+------+
| 张三 |
+------+
1 row in set

多个条件语句之间可以用and 和or 连接,以完成更加复杂的筛选
当or和and同时存在时,SQL 会优先处理and,我们可以通过加圆括号()的方式来提高优先级;

in 和 not


mysql> select name from student where grade_id in (1,2);
+------+
| name |
+------+
| 张三 |
| 李四 |
+------+
2 rows in set

IN 操作符允许我们在 WHERE 子句中规定多个值。效果与or类似。

in的优点

(1)在很多合法选项时,IN操作符的语法更清楚,更直观。

(2)在与其它AND和OR操作符组合使用IN时,求值顺序更容易管理。

(3)IN操作符用来指定要匹配值的清单时,功能与OR相当,不过一般比一组OR操作符执行得更快。

(4)IN的最大优点是可以包含其他SELECT语句,能够动态地建立WHERE子句。

mysql> select name from student where grade_id not in (1,2);
+------+
| name |
+------+
| 王五 |
+------+
1 row in set

WHERE 子句中的 NOT 操作符有且只有一个功能:否定它之后所跟的任何条件。

like与通配符

LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
%代表任意数量的任意字符 _代表一个任意字符

比如:
%a% 字段中有a就符合条件
a% 字段由a开头
%a 字段以a结尾
张_ 字段为张某

通配符使用注意

(1)不要过度使用通配符,如果其他操作符能达到相同的目的,应该使用其他操作符。

(2)在确实需要使用通配符时,也尽量不要把它们用在搜索模式的开始处。把通配符置于开始处,搜索起来是最慢的。

(3)仔细注意通配符的位置。如果放错地方,可能不会返回想要的数据。

在MySQL中使用正则 REGEXP

select name from stu where name regexp '[0-5]abc';

字段的计算

拼接 concat()函数

功能:将多个字符串连接成一个字符串。

语法:concat(str1, str2,…)

返回结果为连接参数产生的字符串,如果有任何一个参数为null,则返回值为null。

使用别名 as

  • SQL 别名用于为 表 或 表中的列 提供临时名称。
  • SQL 别名通常用于使 表名 或 列名 更具可读性。
  • SQL 一个别名只存在于查询期间。
mysql> select name as 名字 from student;
+------+
| 名字 |
+------+
| 张三 |
| 李四 |
| 王五 |
+------+
3 rows in set

GROUP BY 分组

mysql> select grade_id,count(*) from student group by grade_id;
+----------+----------+
| grade_id | count(*) |
+----------+----------+
|        1 |        1 |
|        2 |        1 |
|        5 |        1 |
+----------+----------+
3 rows in set

“Group By”从字面意义上理解就是根据“By”指定的规则对数据进行分组,所谓的分组就是将一个“数据集”划分成若干个“小区域”,然后针对若干个“小区域”进行数据处理。

HAVING

对分组进行筛选,规定符合条件的分组。

mysql> select grade_id,count(name) as nums from student group by grade_id;
+----------+------+
| grade_id | nums |
+----------+------+
|        1 |    2 |
|        2 |    1 |
|        5 |    1 |
+----------+------+
3 rows in set

mysql> select grade_id,count(name) as nums from student group by grade_id having nums > 1;
+----------+------+
| grade_id | nums |
+----------+------+
|        1 |    2 |
+----------+------+
1 row in set

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值