【Mysql 学习】mysql 的使用入门

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
云数据库 RDS PostgreSQL,高可用系列 2核4GB
简介:

开始学习mysql ,记录自己学习的一点记录。

--创建数据库company
mysql> create database company;
Query OK, 1 row affected (0.00 sec)

--要知道系统中有那些数据库,可以使用如下命令来查询:
mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| company            |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.00 sec)
information_schema --主要存储了系统中的一些数据库对象信息,比如用户表信息,列信息,权限信息, 字符集信息,分区信息。
mysql      
      --存储了系统的用户权限信息
test               --系统自动创建的数据库,任何人都可以使用。
--查询当前使用的数据库。
mysql> select database();
+------------+
| database() |
+------------+
| NULL       |
+------------+
1 row in set (0.00 sec)

mysql> use company;
Database changed
mysql> select database();
+------------+
| database() |
+------------+
| company    |
+------------+
1 row in set (0.00 sec)
--删除数据库company
mysql> drop database company;
Query OK, 0 rows affected (0.03 sec)
-使用use dbname 选择要连接的数据库
mysql> use mysql;
Database changed
--查看mysql数据库中存在的数据表。
mysql> show tables;
+---------------------------+
| Tables_in_mysql           |
+---------------------------+
| columns_priv              |
| db                        |
| event                     |
| func                      |
| general_log               |
| help_category             |
| help_keyword              |
| help_relation             |
| help_topic                |
| host                      |
| ndb_binlog_index          |
| plugin                    |
| proc                      |
| procs_priv                |
| servers                   |
| slow_log                  |
| tables_priv               |
| time_zone                 |
| time_zone_leap_second     |
| time_zone_name            |
| time_zone_transition      |
| time_zone_transition_type |
| user                      |
+---------------------------+
23 rows in set (0.03 sec)
--创建表,由于mysql的表名是以目录的形式存在磁盘上的,所以表名要符合任何目录名允许的字符。
mysql> create table dept(deptno int(4),deptname varchar(50));
Query OK, 0 rows affected (0.00 sec)
--查看表结构。
mysql> desc dept;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| deptno   | int(4)      | YES  |     | NULL    |       |
| deptname | varchar(50) | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)

mysql> create table employee (eid int(4),ename varchar(50), birthday date,deptno
 int (4));
Query OK, 0 rows affected (0.01 sec)
---查看构造表的ddl语句。
mysql> show create table  employee \G
*************************** 1. row ***************************
       Table: employee
Create Table: CREATE TABLE `employee` (
  `eid` int(4) DEFAULT NULL,
  `ename` varchar(50) DEFAULT NULL,
  `birthday` date DEFAULT NULL,
  `deptno` int(4) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1
1 row in set (0.00 sec)

--alter table 的使用方法。
--修改表名。
mysql> alter table employee rename emp;
Query OK, 0 rows affected (0.00 sec)

mysql> desc emp;
+----------+-------------+------+-----+---------+-------+
| Field    | Type        | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| eid      | int(4)      | YES  |     | NULL    |       |
| ename    | varchar(50) | YES  |     | NULL    |       |
| birthday | date        | YES  |     | NULL    |       |
| deptno   | int(4)      | YES  |     | NULL    |       |
+----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

mysql> show tables ;
+-------------------+
| Tables_in_company |
+-------------------+
| dept              |
| emp               |
+-------------------+
2 rows in set (0.00 sec)

--修改表中列名。
ALTER TABLE TABNAME CHANGE COLUMN old_col_name new_col_name col_definition
--将birthday 改为 birthdate
mysql> alter  table emp change birthday birdate date;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(4)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
--修改表中字段的类型
ALTER TABLE TABNAME MODIFY [COLUMN] column_definition [FIRST|AFTER col_name]

mysql> alter table emp modify eid  int(5);
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> alter table emp modify sex char(2) first;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex     | char(2)     | YES  |     | NULL    |       |
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)
比较一下 change 与modify的区别:
 1 change 和 modify 都可以修改表的定义,不同的是change后面需要写两次列名,不方便,
 2 但是change的优点是可以修改表中的列名称,而modify则不能。
   alter table tabname  add new_column after/before ole_column;
   alter table emp  modify age int(3) first;
--增加表中的字段
语法:
alter table tabname add [column] column_definition [first|after col_name]

mysql> alter table emp add column sex char(2);
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
| sex     | char(2)     | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)
--
mysql> alter table emp add column sex char(2) after ename;
ERROR 1060 (42S21): Duplicate column name 'sex'
--删除表中的字段。
mysql> alter table emp drop column sex;
Query OK, 0 rows affected (0.01 sec)
Records: 0  Duplicates: 0  Warnings: 0
--指定添加字段所在的位置。默认是添加到表中末尾。
mysql> alter table emp add column sex char(2) after ename;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0

mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| sex     | char(2)     | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

--注意:CHANGE\FIRST\AFTER COLUMN 是mysql 在标准sql的拓展。在其他数据库上不一定适用
--关于DML 语句这里和sql标准一样的就不再多做介绍了,重点说一下 insert 插入操作:
   insert into tabname(col1,col2,...) values(val1,val2,...)
--mysql支持如下操作:
mysql> insert into dept(deptno ,deptname) values (1002,'ceo');
Query OK, 1 row affected (0.00 sec)
mysql> insert into dept(deptno ,deptname) select 1003,'manager';
Query OK, 1 row affected (0.00 sec)
Records: 1  Duplicates: 0  Warnings: 0
mysql> select * from dept;
+--------+----------+
| deptno | deptname |
+--------+----------+
|   1001 | hr       |
|   1002 | ceo      |
|   1003 | manager  |
+--------+----------+
3 rows in set (0.00 sec)
 insert into tabname(col1,col2,...) select val1,val2,..[,select val1,val2,...]
 其中 val与 col 的类型必须一致。否则:
mysql> insert into emp select 10001,'zhangsan','2010-12-30',1001;
ERROR 1136 (21S01): Column count doesn't match value count at row 1
mysql> desc emp;
+---------+-------------+------+-----+---------+-------+
| Field   | Type        | Null | Key | Default | Extra |
+---------+-------------+------+-----+---------+-------+
| sex     | char(2)     | YES  |     | NULL    |       |
| eid     | int(5)      | YES  |     | NULL    |       |
| ename   | varchar(50) | YES  |     | NULL    |       |
| birdate | date        | YES  |     | NULL    |       |
| deptno  | int(4)      | YES  |     | NULL    |       |
+---------+-------------+------+-----+---------+-------+
5 rows in set (0.02 sec)
顺序不一致时,会报错,字段类型不一致时也会报错。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
16天前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
166 5
|
1月前
|
关系型数据库 MySQL 数据管理
Mysql基础学习day03-作业
本内容包含数据库建表语句及多表查询示例,涵盖内连接、外连接、子查询及聚合统计,适用于员工与部门数据管理场景。
37 1
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01
本课程为MySQL基础学习第一天内容,涵盖MySQL概述、安装、SQL简介及其分类(DDL、DML、DQL、DCL)、数据库操作(查询、创建、使用、删除)及表操作(创建、约束、数据类型)。适合初学者入门学习数据库基本概念和操作方法。
140 6
|
7月前
|
存储 分布式计算 MaxCompute
Hologres实时湖仓能力入门实践
本文由武润雪(栩染)撰写,介绍Hologres 3.0版本作为一体化实时湖仓平台的升级特性。其核心能力包括湖仓存储一体、多模式计算一体、分析服务一体及Data+AI一体,极大提升数据开发效率。文章详细解析了两种湖仓架构:MaxCompute + Hologres实现离线实时一体化,以及Hologres + DLF + OSS构建开放湖仓架构,并深入探讨元数据抽象、权限互通等重点功能,同时提供具体使用说明与Demo演示。
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02-作业
本教程介绍了数据库表的创建与管理操作,包括创建员工表、插入测试数据、删除记录、更新数据以及多种查询操作,涵盖了SQL语句的基本使用方法,适合初学者学习数据库操作基础。
59 0
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day03
本课程为MySQL基础学习第三天内容,主要讲解多表关系与多表查询。内容涵盖物理外键与逻辑外键的区别、一对多、一对一及多对多关系的实现方式,以及内连接、外连接、子查询等多表查询方法,并通过具体案例演示SQL语句的编写与应用。
55 0
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day01-作业
本教程包含三个数据库表的创建练习:学生表(student)要求具备主键、自增长、非空、默认值及唯一约束;课程表(course)定义主键、非空唯一字段及数值精度限制;员工表(employee)包含自增主键、非空字段、默认值、唯一电话号及日期时间类型字段。每个表的结构设计均附有详细SQL代码示例。
57 0
|
1月前
|
SQL 关系型数据库 MySQL
Mysql基础学习day02
本课程为MySQL基础学习第二天内容,涵盖数据定义语言(DDL)的表查询、修改与删除操作,以及数据操作语言(DML)的增删改查功能。通过具体SQL语句与实例演示,帮助学习者掌握MySQL表结构操作及数据管理技巧。
85 0
|
9月前
|
SQL 关系型数据库 MySQL
网安入门之MySQL后端基础
《网安入门之MySQL后端基础》简介: 本文介绍了数据库及MySQL的基础知识,涵盖数据库的概念、结构与操作。数据库是组织化存储数据的集合,通过表、列、行等结构实现高效管理。MySQL作为开源的关系型数据库管理系统,广泛应用于Web开发。文中详细讲解了MySQL的基本操作,如增(INSERT)、删(DELETE)、改(UPDATE)、查(SELECT)等语句的使用方法,并介绍了数据库事务的ACID特性。此外,还探讨了SQL注入攻击的风险及防范措施,强调了预处理语句的重要性。最后,简述了PHP中mysqli扩展的使用方法,包括连接数据库、执行查询和关闭连接等步骤。
|
10月前
|
SQL 存储 关系型数据库
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程
本文详细介绍了MySQL中的SQL语法,包括数据定义(DDL)、数据操作(DML)、数据查询(DQL)和数据控制(DCL)四个主要部分。内容涵盖了创建、修改和删除数据库、表以及表字段的操作,以及通过图形化工具DataGrip进行数据库管理和查询。此外,还讲解了数据的增、删、改、查操作,以及查询语句的条件、聚合函数、分组、排序和分页等知识点。
890 55
【MySQL基础篇】全面学习总结SQL语法、DataGrip安装教程

热门文章

最新文章

推荐镜像

更多