MySQL基本操作,学习笔记(一)

目录

一、MySQL介绍及安装

二、创建数据库

1.登录mysql服务后,使用 create 命令创建数据库

2.查看已创建的数据库  show

3.删除数据库 drop 命令删除数据库

4.选择数据库 use

三、MySQL 数值类型

三、创建数据表

1. 创建数据表需要"表名"、"表字段名"、"定义每个表字段",可以理解为excel,只不过我们用sql语句创建表格

2.查询数据表定义 desc

3.删除表 和删除库一样 drop

4.修改表 alter table

4.1   修改表类型

4.2   增加表字段

 4.3   删除表字段

 4.4   表字段改名

 4.5   表字段排序

 4.6   修改表名

四、操作数据表,如插入数据、更新数据、删除数据和查询数据

1.插入数据 insert into

2.更新记录 update...set

3.删除数据 delete

4.查询记录 select

4.1 查询单张表

4.2 查询不重复的记录 distinct

4.3 条件查询 where

4.4 排序和限制 ordby by

4.5 聚合 having


一、MySQL介绍及安装

CSDN有很多文章介绍和安装,这里不再赘述。

喜欢看视频操作的推荐3小时学会MySQL 初学入门完整教程

工欲善其事必先利其器,行动起来吧。

二、创建数据库

1.登录mysql服务后,使用 create 命令创建数据库

# 语法
CREATE DATABASE 数据库名;
# 实例操作
mysql> create database test;
Query OK, 1 row affected (0.02 sec)

2.查看已创建的数据库  show

# 语法
SHOW DATABASES;
# 实例操作
mysql> SHOW DATABASES; #可以看到下面已包含创建名为 test 库
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| opera              |
| performance_schema |
| sakila             |
| sys                |
| test               |
| world              |
+--------------------+
8 rows in set (0.01 sec)

3.删除数据库 drop 命令删除数据库

在删除数据库过程中,务必要十分谨慎,因为在执行删除命令后,所有数据将会消失。

# 语法
drop database <数据库名>;
# 实例操作
mysql> drop database test;
Query OK, 0 rows affected (0.04 sec)

4.选择数据库 use

在你连接到 MySQL 数据库后,可能有多个可以操作的数据库,所以你需要选择你要操作的数据库。

# 语法
use <数据库名>;
# 实例操作
mysql> use test;
Database changed

三、MySQL 数值类型

MySQL 支持多种类型,大致可以分为三类:数值、日期/时间和字符串(字符)类型。

MySQL 支持所有标准 SQL 数值数据类型。 

详情可参考菜鸟教程MySQL 数据类型 ,很详细,不再赘述。

三、创建数据表

1. 创建数据表需要"表名"、"表字段名"、"定义每个表字段",可以理解为excel,只不过我们用sql语句创建表格

# 通用语法
create table 表名称(
  列名1 数据类型 约束条件,
  列名2 数据类型 约束条件,
  ......
  列名n 数据类型 约束条件
)
# 创建表名为 students 的学生表
mysql> create table students(
      -> id int(10) primary key,
      -> name varchar(20) not null,
      -> age int(10) not null,
      -> sex varchar(5) not null,
      ->phone_number int(20)
      ->);
Query OK, 0 rows affected, 3 warnings (0.06 sec)

2.查询数据表定义 desc

DESC 表名;
mysql> DESC students;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id           | int         | NO   | PRI | NULL    |       |
| name         | varchar(20) | NO   |     | NULL    |       |
| age          | int         | NO   |     | NULL    |       |
| sex          | varchar(5)  | NO   |     | NULL    |       |
| phone_number | int         | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

3.删除表 和删除库一样 drop

drop tables 表名;
mysql> drop tables students;
Query OK, 0 rows affected (0.03 sec)

4.修改表 alter table

4.1   修改表类型

alter table 表名 modify 表字段名 varchar(18);
mysql> alter table students modify name varchar(18);
Query OK, 0 rows affected (0.05 sec)
Records: 0  Duplicates: 0  Warnings: 0

# 查看是否修改成功
mysql> desc students;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id           | int         | NO   | PRI | NULL    |       |
| name         | varchar(18) | YES  |     | NULL    |       |
| age          | int         | NO   |     | NULL    |       |
| sex          | varchar(5)  | NO   |     | NULL    |       |
| phone_number | int         | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+

4.2   增加表字段

# 语法
alter table 表名 add column 字段名+字段类型;
# 新增成绩 score 字段
mysql> alter table students add column score float;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
# 验证新增字段
mysql> desc students;
+--------------+-------------+------+-----+---------+-------+
| Field        | Type        | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+-------+
| id           | int         | NO   | PRI | NULL    |       |
| name         | varchar(18) | YES  |     | NULL    |       |
| age          | int         | NO   |     | NULL    |       |
| sex          | varchar(5)  | NO   |     | NULL    |       |
| phone_number | int         | YES  |     | NULL    |       |
| score        | float       | YES  |     | NULL    |       |
+--------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

 4.3   删除表字段

# 语法
alter table 表名 drop column 表字段名;
# 删除表中 phone_number 字段
mysql> alter table students drop column phone_number;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
# 验证是否删除成功
mysql> desc students;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int         | NO   | PRI | NULL    |       |
| name  | varchar(18) | YES  |     | NULL    |       |
| age   | int         | NO   |     | NULL    |       |
| sex   | varchar(5)  | NO   |     | NULL    |       |
| score | float       | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 4.4   表字段改名

# 语法
alter table 表名 change 需修改的字段名 修改后的字段名+类型;
# 将 name 字段改为 s_name 
mysql> alter table students change name s_name varchar(22);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0
# 验证是否修改成功
mysql> desc students;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| id     | int         | NO   | PRI | NULL    |       |
| s_name | varchar(22) | YES  |     | NULL    |       |
| age    | int         | NO   |     | NULL    |       |
| sex    | varchar(5)  | NO   |     | NULL    |       |
| score  | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 4.5   表字段排序

# 语法
alter table 表名 modify 需排序字段名+类型 first;
# 将字段 age 放在最前面
mysql> alter table students modify age int first;
Query OK, 0 rows affected (0.04 sec)
Records: 0  Duplicates: 0  Warnings: 0
# 验证是否排序成功
mysql> desc students;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| age    | int         | YES  |     | NULL    |       |
| id     | int         | NO   | PRI | NULL    |       |
| s_name | varchar(22) | YES  |     | NULL    |       |
| sex    | varchar(5)  | NO   |     | NULL    |       |
| score  | float       | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

 4.6   修改表名

# 语法
alter table 原表名 rename 修改的表名;
# 将 students 修改为 student
mysql> alter table students rename student;
Query OK, 0 rows affected (0.02 sec)
# 验证是否修改成功
mysql> show tables;
+----------------+
| Tables_in_test |
+----------------+
| student        |
+----------------+
1 row in set (0.01 sec)

四、操作数据表,如插入数据、更新数据、删除数据和查询数据

1.插入数据 insert into

# 语法 
INSERT INTO 数据表名 ( field1, field2,...fieldN )
VALUES( value1, value2,...valueN ); #插入单条记录

INSERT INTO 数据表名 ( field1, field2,...fieldN )
VALUES
( value1, value2,...valueN ),
( value2, value2,...valueN ),
( value3, value2,...valueN ),
( value4, value2,...valueN ); # 插入多条记录
# 实例操作
mysql> insert into student(id,age,s_name,sex,score)
    -> values
    -> (2,17,"李小龙","男",87.5);
Query OK, 1 row affected (0.00 sec)
#查询新增数据是否成功
mysql> select * from student;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  1 |   16 | 张小花 | 女  |    98 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
+----+------+--------+-----+-------+
2 rows in set (0.00 sec)

2.更新记录 update...set

# 语法
update 表名 set 字段=值 where condition;
# 将张小花的成绩(score)从98改为66
mysql> update student set score=66 where s_name="张小花";
Query OK, 1 row affected (0.00 sec)
Rows matched: 1  Changed: 1  Warnings: 0
# 验证是否修改成功
mysql> select * from student;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  1 |   16 | 张小花 | 女  |    66 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
|  5 |   18 | 赵小刚 | 男  |    59 |
|  6 |   15 | 刘小红 | 男  |    78 |
+----+------+--------+-----+-------+
6 rows in set (0.00 sec)

3.删除数据 delete

# 语法
delete from 数据表名 <where condition>;
# 删除学生表 刘小红的数据
mysql> delete from student where s_name="刘小红";
Query OK, 1 row affected (0.01 sec)
# 验证是否删除成功
mysql> select * from student;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  1 |   16 | 张小花 | 女  |    66 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
|  5 |   18 | 赵小刚 | 男  |    59 |
+----+------+--------+-----+-------+
5 rows in set (0.00 sec)

# 注意: 不管是单表还是多表,不加where条件将会把表的所有记录删除,所以操作时一定要小心

4.查询记录 select

4.1 查询单张表

# 语法
select * from 表名; 
# 查询 student 表
mysql> select * from student;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  1 |   16 | 张小花 | 女  |    66 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
|  5 |   18 | 赵小刚 | 男  |    59 |
+----+------+--------+-----+-------+
5 rows in set (0.00 sec)

4.2 查询不重复的记录 distinct

# 语法
select distinct 字段名 from 表名;
# student表中查询 sex 字段
mysql> select distinct sex from student;
+-----+
| sex |
+-----+
| 女  |
| 男  |
+-----+
2 rows in set (0.00 sec)

4.3 条件查询 where

where后面的条件是一个字段的 =比较,除了 =外,还可以使用 >.<=、!=等比较运算符,多个条件之间还可以使用or、and 等逻辑运算符进行多条件联合查询

# 语法
select * from 表名 where 条件;
# 查询 student 表中 都是女生的学生
mysql> select * from student where sex="女"; # 单条件查询
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  1 |   16 | 张小花 | 女  |    66 |
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
+----+------+--------+-----+-------+
3 rows in set (0.00 sec)
# 查询 student 表中 都是女生且年龄15的学生
mysql> select * from student where sex="女" and age="15"; # 多条件查询
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  3 |   15 | 李小明 | 女  |   100 |
+----+------+--------+-----+-------+
1 row in set (0.00 sec)

4.4 排序和限制 ordby by

# 语法
select * from 表名 order by 排序字段 desc/asc;
注意: DESC和ASC是排序顺序关键字,DESC表示按照字段进行降序排列,ASC则表示升序排列,如果不写此关键字默认是升序排列。ORDER BY后面可以跟多个不同的排序字段,并目每个排序字段可以有不同的排序顺序
# student 表中按年龄大小进行显示
mysql> select * from student order by age;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  4 |   13 | 郑小易 | 女  |    99 |
|  3 |   15 | 李小明 | 女  |   100 |
|  1 |   16 | 张小花 | 女  |    66 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
|  5 |   18 | 赵小刚 | 男  |    59 |
+----+------+--------+-----+-------+
5 rows in set (0.01 sec)
# 按成绩排序
mysql> select * from student order by score desc;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
|  1 |   16 | 张小花 | 女  |    66 |
|  5 |   18 | 赵小刚 | 男  |    59 |
+----+------+--------+-----+-------+
5 rows in set (0.00 sec)

# 对于排序后的记录,如果希望只显示一部分,而不是全部,可以使用LIMIT关键字来实现
select...[LIMIT offset start,row count];
# 只取1行数据or或3行数据
mysql> select * from student order by score desc limit 1;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  3 |   15 | 李小明 | 女  |   100 |
+----+------+--------+-----+-------+
1 row in set (0.03 sec)

mysql> select * from student order by score desc limit 3;
+----+------+--------+-----+-------+
| id | age  | s_name | sex | score |
+----+------+--------+-----+-------+
|  3 |   15 | 李小明 | 女  |   100 |
|  4 |   13 | 郑小易 | 女  |    99 |
|  2 |   17 | 李小龙 | 男  |  87.5 |
+----+------+--------+-----+-------+
3 rows in set (0.00 sec)
注意 :limit经常和 order by一起配合使用来进行记录的分页显示

4.5 聚合 having

 聚合操作,也就是聚合函数,sum 求和、count(*)  记录数、 max  最大值、 min 最小值。

# 统计 student表总人数
mysql> select count(1) from student;
+----------+
| count(1) |
+----------+
|        5 |
+----------+
1 row in set (0.01 sec)
# 统计各年龄人数和总人数
mysql> select age,count(1) from student group by age with rollup;
+------+----------+
| age  | count(1) |
+------+----------+
|   13 |        1 |
|   15 |        1 |
|   16 |        1 |
|   17 |        1 |
|   18 |        1 |
| NULL |        5 |
+------+----------+
6 rows in set (0.00 sec)
# 成功最好和最差
mysql> select max(score),min(score) from student;
+------------+------------+
| max(score) | min(score) |
+------------+------------+
|        100 |         59 |
+------------+------------+
1 row in set (0.00 sec)

下篇继续更新....

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

故乡的小百花

谢谢鼓励

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值