目录
1.登录mysql服务后,使用 create 命令创建数据库
1. 创建数据表需要"表名"、"表字段名"、"定义每个表字段",可以理解为excel,只不过我们用sql语句创建表格
一、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)
下篇继续更新....