like mysql 相反_MySQL 的基本操作

344c35b7a19ffedb46e21a11783dce19.png
本文使用 Zhihu On VSCode 创作并发布

登录

本地登录命令:mysql -u 用户名 -p

▶ mysql -u jinl -p 

然后按回车输入密码。

指定端口登录

▶ mysql -u jinl -p -P 3306

指定IP地址以及端口登录

▶ mysql -h 127.0.0.1 -u jinl -p -P 3306

增删改查

  • 增加两个表,一个是user表,一个是grade表。
    新增表的语法为create table table_name(column_name ,column_contrains);例子:
create table grade(
  id int primary key,
  chinese int,
  math int
) default charset=utf8
  • 添加字段
-- 字段默认加在最后,在后面加上First加在首位, 要加中间位置加的话,加个 After [存在的字段]
alter table <表名> add column <字段> <数据类型> <约束> <字段位置>; 

alter table jinl add column test text not null First; 
  • 添加数据:
insert into table_name(column_1, column_2......)
values
(value_1, value_2......)

insert into user(id, name, sex)
values
(2, daoli, girl)

有这么两个表:

user
+------+----------+------+
| id   | name     | sex  |
+------+----------+------+
|    2 | daoli    | girl |
|    3 | jinl1874 | boy  |
|    4 | jinl     | boy  |
|    1 | jinl     | girl |
+------+----------+------+

grade
+------+---------+------+
| id   | chinese | math |
+------+---------+------+
|    1 |      10 |   30 |
|    2 |      60 |  100 |
|    3 |      50 |   90 |
+------+---------+------+

  • 基本语句:
SELECT fields from table_name
while condition
limit n
offset m

condition 是查询的条件,
limit 是限制返回的查询条数,
offset 是 Select 语句开始查询的偏移量。

condition 里的各个操作符:

<, >, =, >=, <=,
in 表示属于,
<> 和 != 表示不等于。
一般用 not exists 代替,这样可以最大限度使用索引。

like 子句,如果没有%,那么和 = 的作用是一样的。
% 表示替代任意字符,与正则表达式里的 * 类似。

  • 排序:order by 字段 asc(升序)/dasc (降序)
    功能:就是以某个字段升序降序。
    例子:从用户表查找id并升序显示 select id, name from user oreder by id ase
mysql> select id, name from user order by id;
+------+----------+
| id   | name     |
+------+----------+
|    1 | jinl     |
|    4 | jinl     |
|    2 | daoli    |
|    3 | jinl1874 |
+------+----------+
4 rows in set (0.00 sec)
  • 分组: group by 字段
    功能:当查询结果里某个字段有重复的时候,就可以使用group by 某个字段来分组。
    例子:select name from user groub by name,其结果为
mysql> select id, name from user group by name;              
+------+----------+
| id   | name     |
+------+----------+
|    2 | daoli    |
|    3 | jinl1874 |
|    1 | jinl     |
+------+----------+
3 rows in set (0.00 sec)

还可以加个count,统计每个字段的数据。

mysql> select id, name, count(name) from user group by name;
+------+----------+-------------+
| id   | name     | count(name) |
+------+----------+-------------+
|    2 | daoli    |           1 |
|    3 | jinl1874 |           1 |
|    1 | jinl     |           2 |
+------+----------+-------------+
3 rows in set (0.00 sec)
  • 去重
select [DISTINCT] fields from table
[where conditions]
union  [ALL]
select fields from table

去除重复的数据,一般Union会去除重复的数据,所以不需要DISTINCT。

-- ALL 表示所有的字段都去重
mysql> select name from user 
union 
select name from user; 
+----------+
| name     |
+----------+
| daoli    |
| jinl1874 |
| jinl     |
+----------+
3 rows in set (0.01 sec)

使用DISTINCT去重

mysql> select distinct name from user;
+----------+
| name     |
+----------+
| daoli    |
| jinl1874 |
| jinl     |
+----------+
3 rows in set (0.01 sec)
  • 连接
    分为内连接和外连接。

外连接里有左右连接,左连接是指取左边的全部,右边的边按照条件来。

-- 不加括号可能会报错
select name, math from (user) left join grade on (user.id = grade.id);
+----------+------+
| name     | math |
+----------+------+
| jinl     |   30 |
| daoli    |  100 |
| jinl1874 |   90 |
| jinl     | NULL |
+----------+------+
4 rows in set (0.00 sec)

外右连接,与左连接刚好相反:

select name, math from (user) right join grade on (user.id = grade.id); 
+----------+------+
| name     | math |
+----------+------+
| daoli    |  100 |
| jinl1874 |   90 |
| jinl     |   30 |
+----------+------+
3 rows in set (0.00 sec)

内连接:inner join,等于join,返回两张表都满足条件的部分。

select name, math from (user) join grade on (user.id = grade.id);       
+----------+------+
| name     | math |
+----------+------+
| daoli    |  100 |
| jinl1874 |   90 |
| jinl     |   30 |
+----------+------+
3 rows in set (0.00 sec)

  • 更改表的字段名
alter table <表名> change <旧字段> <新字段> <新数据类型>

alter table jinl change test name text not null;    
  • 更改字段数据类型
ALTER TABLE <表名> MODIFY <字段名> <数据类型>

alter table user 
modify id = 4 varchar(30);
  • 修改表的数据
UPDATE table_name SET field1=new-value1, field2=new-value2 [WHERE Clause]

  • 删除表
drop table if exists <表名>
drop table if exists jinl;
  • 删除字段
alter table <表名> drop <字段>

alter table jinl drop name;
  • 删除表的数据
delete from <表名> [Where 子句] [Order by 子句] [Limit 子句]

delete from user where id = 4;

其它基本操作

查看所有数据库:

show databases;

切换数据库:

use <数据库名>

use test

查看所有表:

show tables;

查看表的信息:

desc <表名>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值