目录
一、数据增加、查询、修改、删除、起别名、去重
1.0 准备操作
1.1 添加数据 insert
1.1.1 全列添加
1.1.2 部分列插入
1.1.3 插入多行数据
1.2 查询数据 select
1.2.1 查询所有的 列
1.2.2 查询指定的 列
1.3 修改数据 update set
1.4 删除数据 delete
1.5 起别名 as 关键字
1.6 去重 distinct 关键字
一、数据增加、查询、修改、删除、起别名、去重
1.0 准备操作
准备操作,先创建一个表结构,以便后续操作
先创建一个表,然后添加一下数据
准备一个数据表,顺便复习一下之前的操作
1 命令行登录:mysql -uroot -p
2 选择一个数据库
mysql> use base_1;
Database changed
mysql>3 创建一个数据表
create table stu(id int unsigned primary key not null auto_increment,name varchar(20) not null,age tinyint default 0,height decimal(5,2),gender enum('男','女','保密'));
4 查看我们现在的数据表什么样子吧!
show tables;
desc stu;
现在,下面的表格结构就是本文的操作基础了
PS:gender 是 eunm 枚举类型,可使用具体的数字(下标)去代替具体的字符串
当然此处的下标 从 1 开始
1.1 添加数据 insert
1.1.1 全列添加
insert into 表名 values(......值);
注意的是,values()中,值的顺序应该和表结构字段的顺序是一致的
比如:
mysql> insert into stu values(0,'张三',18,68,'保密');
mysql> insert into stu values(0,'刘伟',23,100,'男');
执行结果:
mysql> desc stu;
+--------+----------------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------------------------+------+-----+---------+----------------+
| id | int unsigned | NO | PRI | NULL | auto_increment |
| name | varchar(20) | NO | | NULL | |
| age | tinyint | YES | | 0 | |
| height | decimal(5,2) | YES | | NULL | |
| gender | enum('男','女','保密') | YES | | NULL | |
+--------+----------------------------+------+-----+---------+----------------+
5 rows in set (0.00 sec)
mysql> insert into stu values(0,'张三',18,68,'保密');
Query OK, 1 row affected (0.01 sec)
mysql>
1.1.2 部分列插入
此处的部分插入,未插入的默认为NULL
注意点一样:注意值的顺序保持一致
insert into 表名(列名1,...) values (......值);
比如:
mysql> insert into stu(name,age) values ('张三',55);
结果:
mysql> select * from stu;
+----+--------+------+--------+--------+
| id | name | age | height | gender |
+----+--------+------+--------+--------+
| 1 | 张三 | 18 | 68.00 | 保密 |
| 2 | 刘伟 | 23 | 100.00 | 男 |
| 3 | 张三 | 55 | NULL | NULL |
+----+--------+------+--------+--------+
3 rows in set (0.00 sec)
mysql>
1.1.3 插入多行数据
insert into 表名(字段,字段) values (),(),(),(),();
比如:
mysql> insert into stu(name,height) values('刘备',165),('关羽',185),('张飞',180),('孙权',170);
Query OK, 4 rows affected (0.00 sec)
Records: 4 Duplicates: 0 Warnings: 0
mysql>
然后可以查询看一下结果:
mysql> select * from stu;
+----+--------+------+--------+--------+
| id | name | age | height | gender |
+----+--------+------+--------+--------+
| 1 | 张三 | 18 | 68.00 | 保密 |
| 2 | 刘伟 | 23 | 100.00 | 男 |
| 3 | 张三 | 55 | NULL | NULL |
| 4 | 刘备 | 0 | 165.00 | NULL |
| 5 | 关羽 | 0 | 185.00 | NULL |
| 6 | 张飞 | 0 | 180.00 | NULL |
| 7 | 孙权 | 0 | 170.00 | NULL |
+----+--------+------+--------+--------+
7 rows in set (0.00 sec)
mysql>
1.2 查询数据 select
1.2.1 查询所有的 列
select * from 表名;
比如:
mysql> select * from stu;
执行结果:
mysql> select * from stu;
+----+--------+------+--------+--------+
| id | name | age | height | gender |
+----+--------+------+--------+--------+
| 1 | 张三 | 18 | 68.00 | 保密 |
| 2 | 刘伟 | 23 | 100.00 | 男 |
+----+--------+------+--------+--------+
2 rows in set (0.00 sec)
mysql>
1.2.2 查询指定的 列
select 列名1,列名2 from 表名;
比如:
mysql> select name,id from stu;
结果:
mysql> select name,id from stu;
+--------+----+
| name | id |
+--------+----+
| 张三 | 1 |
| 刘伟 | 2 |
| 张三 | 3 |
| 刘备 | 4 |
| 关羽 | 5 |
| 张飞 | 6 |
| 孙权 | 7 |
+--------+----+
7 rows in set (0.00 sec)
mysql>
1.3 修改数据 update set
update 表名 set 列1=值1,列2=值2... where 条件;
现在的表是这个样子
比如我们修改一下 关羽年龄=50,性别是男
我们发现 关羽的 id =5
mysql> update stu set age=50,gender=1 where id=5;
Query OK, 1 row affected (0.01 sec)
Rows matched: 1 Changed: 1 Warnings: 0
修改后的表:
1.4 删除数据 delete
delete from 表名 where 条件;
比如:删除关羽的信息 关羽 id=5,以此为条件
delete from stu where id=5;
这是物理删除,一旦删除了就很难恢复,因此可以使用 逻辑删除
mysql> delete from stu where id=5;
Query OK, 1 row affected (0.00 sec)
结果关羽没了 id=5也没了
1.5 起别名 as 关键字
as 关键字起别名
- 对单次查询有效,
- 使用的时候 as可以省略不写
mysql> select * from stu;
+----+--------+------+--------+--------+
| id | name | age | height | gender |
+----+--------+------+--------+--------+
| 1 | 张三 | 18 | 68.00 | 保密 |
| 2 | 张三 | 18 | 68.00 | 保密 |
| 3 | 刘伟 | 23 | 100.00 | 男 |
| 4 | 刘伟 | 23 | 100.00 | 男 |
| 6 | 刘备 | 0 | 165.00 | NULL |
| 7 | 关羽 | 0 | 185.00 | NULL |
| 8 | 张飞 | 0 | 180.00 | NULL |
| 9 | 孙权 | 0 | 170.00 | NULL |
+----+--------+------+--------+--------+
8 rows in set (0.00 sec)
我们使用as关键字起别名查看试一试
注意多个别名中间,用逗号隔开
mysql> select name as 姓名,age 年龄 from stu;
+--------+--------+
| 姓名 | 年龄 |
+--------+--------+
| 张三 | 18 |
| 张三 | 18 |
| 刘伟 | 23 |
| 刘伟 | 23 |
| 刘备 | 0 |
| 关羽 | 0 |
| 张飞 | 0 |
| 孙权 | 0 |
+--------+--------+
8 rows in set (0.00 sec)
mysql>
1.6 去重 distinct 关键字
我们可以看到,上面的表有两个张三,两个刘伟,一模一样的数据
我们使用distinct 关键字可以进行去重
mysql> select distinct name from stu;
+--------+
| name |
+--------+
| 张三 |
| 刘伟 |
| 刘备 |
| 关羽 |
| 张飞 |
| 孙权 |
+--------+
6 rows in set (0.01 sec)
mysql>
distinct 后面可以跟多个字段,多个字段一起去重