【MySQL数据库开发之二】MySQL 基础语句的书写与操作!

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介:

本篇Himi简单介绍一些MySQL数据库的基础操作;

注:mysql 语句对大小写不敏感,语句以分号“;”标识语句结束;

1.   首先使用两个简单的查询语句;

查询当前版本:select version();

                        查询当前日期:select current_date;

查询当前时间:select now();

       两句合并: select version() , current_date , now(); 

显示结果如下:

 

 
 
  1. mysql> select version() , current_date , now(); 
  2. +-----------+--------------+---------------------+ 
  3. | version() | current_date | now()               | 
  4. +-----------+--------------+---------------------+ 
  5. | 5.5.23    | 2012-04-17   | 2012-04-17 14:34:53 | 
  6. +-----------+--------------+---------------------+ 
  7. 1 row in set (0.00 sec) 

2.  SQL语句可分多行来写:

 
 
  1. mysql> select version(), 
  2.     -> current_date, 
  3.     -> now(), 
  4.     -> user(); 
  5. +-----------+--------------+---------------------+----------------+ 
  6. | version() | current_date | now()               | user()         | 
  7. +-----------+--------------+---------------------+----------------+ 
  8. | 5.5.23    | 2012-04-17   | 2012-04-17 14:38:42 | root@localhost | 
  9. +-----------+--------------+---------------------+----------------+ 
  10. 1 row in set (0.00 sec) 

 3. 使用查询语句来作为计算器,让mysql 为我们计算结果,如下:

 

 
 
  1. mysql> select 1*1,2*2,3*3; 
  2. +-----+-----+-----+ 
  3. | 1*1 | 2*2 | 3*3 | 
  4. +-----+-----+-----+ 
  5. |   1 |   4 |   9 | 
  6. +-----+-----+-----+ 
  7. 1 row in set (0.00 sec) 

4. 使用 \c 取消SQL语句的输入;先看下MySQL的一些提示符:

提示符 含义
mysql> 准备好接受新命令。
-> 等待多行命令的下一行。
‘> 等待下一行,等待以单引号(“’”)开始的字符串的结束。
“> 等待下一行,等待以双引号(“””)开始的字符串的结束。
`> 等待下一行,等待以反斜点(‘`’)开始的识别符的结束。
/*> 等待下一行,等待以/*开始的注释的结束。

输入\c以后,它切换回到mysql>,提供反馈以表明mysql准备接受一个新命令。

4. 创建使用数据库:

4.1   查询当前已存在的数据库:

 
 
  1. mysql> show databases; 
  2. +--------------------+ 
  3. | Database           | 
  4. +--------------------+ 
  5. | information_schema | 
  6. | mysql              | 
  7. | performance_schema | 
  8. | test               | 
  9. +--------------------+ 
  10. 4 rows in set (0.17 sec) 

4.2  使用已有的数据库;例如使用已存在的 test 数据库;

mysql> use testDatabase changed

4.3   假设你在test 该数据库创建的任何东西可以被访问它的其它人删除,因此,你应该询问MySQL管理员许可你使用自己的一个数据库。假定你想要调用你的menagerie,管理员需要执行这样一条命令:

mysql> GRANT ALL ON menagerie.* TO 'your_mysql_name'@'your_client_host';

这里your_mysql_name是分配给你的MySQL用户名,your_client_host是所连接的服务器所在的主机。

4.4    创建并选择新的数据库;

 
 
  1. mysql> create database himiDB 
  2.     -> ; 
  3. Query OK, 1 row affected (0.06 sec) 
  4.   
  5. mysql> use himidb 
  6. Database changed 
  7. mysql> 

5. 创建使用表;

5.1     新创建的数据库中是没有任何表的,如上面我新建的himiDB,如下我使用 show tables; 显示:

 
 
  1. mysql> show databases 
  2.     -> ; 
  3. +--------------------+ 
  4. | Database           | 
  5. +--------------------+ 
  6. | information_schema | 
  7. | himiDB             | 
  8. | mysql              | 
  9. | performance_schema | 
  10. | test               | 
  11. +--------------------+ 
  12. 5 rows in set (0.00 sec) 
  13.   
  14. mysql> use himidb 
  15. Database changed 
  16. mysql> show tables 
  17.     -> ; 
  18. Empty set (0.00 sec) 

而关于表的创建比较麻烦,需要设计,较难的部分是决定你的数据库结构应该是什么:你需要什么数据库表,各数据库表中有什么样的列。你将需要一个包含你每个宠物的记录的表。它可称为pet表,并且它应该包含,最少,每个动物的名字。因为名字本身不是很有趣,表应该包含另外的信息。例如,如果在你豢养宠物的家庭有超过一个人,你可能想要列出每个动物的主人。你可能也想要记录例如种类和性别的一些基本的描述信息。

年龄呢?那可能有趣,但是存储到一个数据库中不是一件好事情。年龄随着时间流逝而变化,这意味着你将要不断地更新你的记录。相反, 存储一个固定值例如生日比较好,那么,无论何时你需要年龄,可以以当前日期和出生日期之间的差来计算它。MySQL提供了日期运算函数,因此这并不困难。存储出生日期而非年龄还有其它优点:·         你可以使用数据库完成这样的任务,例如生成即将到来的宠物生日的提示。(如果你认为这类查询有点蠢,注意,这与从商务数据库来识别出不久要发给生日祝贺的客户是同一个问题,因为计算机帮助私人联络。)·         你可以相对于日期而不止是当前日期来计算年龄。例如,如果你在数据库存储死亡日期,你能很容易地计算出一只宠物死时有多大。

这里假设我们创建一个people 的表,其中包含人的  名字、名族(h/m 来表示汉族/满族)、城市,性别(m/w man/woman)、出生和死亡日期。

 
 
  1. mysql> create table people ( 
  2.     -> name varchar(20), 
  3.     -> mz varchar(1), 
  4.     -> city varchar(10), 
  5.     -> sex varchar(1), 
  6.     -> birthday varchar(20), 
  7.     -> deathday varchar(20)); 
  8. Query OK, 0 rows affected (0.37 sec) 

创建表规则:  create table xx(table Name) ( item的名字  item的类型  );

这里 varchar 字符,varchar()小括号内的表示字符大小,根据情况自己定义,范围是:1到65535的任何长度(如果选择得不合适,后来证明你需要一个更长的字段,MySQL提供一个ALTER TABLE语句。)

OK,我们来查看这个新创建的表中的类目(具体每个记录的查看使用 select *from 语句):

 

 
 
  1. mysql> show tables; 
  2. +------------------+ 
  3. | Tables_in_himidb | 
  4. +------------------+ 
  5. | people           | 
  6. +------------------+ 
  7. 1 row in set (0.00 sec) 
  8.   
  9. mysql> describe people; 
  10. +----------+-------------+------+-----+---------+-------+ 
  11. | Field    | Type        | Null | Key | Default | Extra | 
  12. +----------+-------------+------+-----+---------+-------+ 
  13. | name     | varchar(20) | YES  |     | NULL    |       | 
  14. | mz       | varchar(1)  | YES  |     | NULL    |       | 
  15. | city     | varchar(10) | YES  |     | NULL    |       | 
  16. | sex      | varchar(1)  | YES  |     | NULL    |       | 
  17. | birthday | varchar(20) | YES  |     | NULL    |       | 
  18. | deathday | varchar(20) | YES  |     | NULL    |       | 
  19. +----------+-------------+------+-----+---------+-------+ 
  20. 6 rows in set (0.14 sec) 

5.2  往表中插入数据:

5.2.1. 第一种使用读取本地txt插入到表中,txt的每个value之间以tab空开,然后采用如下语句插入:

load data local infile ‘xxx路径’ into table people;

如下:

 
 
  1. mysql> load data local infile '/Users/Himi/Desktop/people.txt' into table people; 
  2. Query OK, 1 row affected (0.08 sec) 
  3. Records: 1  Deleted: 0  Skipped: 0  Warnings: 0 
  4.   
  5. mysql> SELECT * FROM people; 
  6. +------+------+---------+------+-----------+----------+ 
  7. | name | mz   | city    | sex  | birthday  | deathday | 
  8. +------+------+---------+------+-----------+----------+ 
  9. | himi | h    | beijing | m    | 1989-9-23 | NULL     | 
  10. +------+------+---------+------+-----------+----------+ 
  11. 1 row in set (0.03 sec) 

OK,没有问题,txt每一行对应表单的每一行,如果需要插入多行可以直接回车就OK啦。

注意:

mysql> LOAD DATA LOCAL INFILE ‘/path/people.txt’ INTO TABLE people;

请注意如果用Windows中的编辑器(使用\r\n做为行的结束符)创建文件,应使用:

mysql> LOAD DATA LOCAL INFILE ‘/path/people.txt’ INTO TABLE people    -> LINES TERMINATED BY ‘\r\n’;

(在运行OS X的Apple机上,应使用行结束符’\r’。)

如果你愿意,你也能明确地在LOAD DATA语句中指出列值的分隔符和行尾标记,但是默认标记是定位符和换行符。

5.2.2.  使用INSERT语句手动直接插入

 
 
  1. mysql> insert into people 
  2.     -> values('insertHimi','h','Anhui','m','1989-9-23',NULL); 
  3. Query OK, 1 row affected (0.10 sec) 
  4.   
  5. mysql> select *from people; 
  6. +------------+------+---------+------+-----------+----------+ 
  7. | name       | mz   | city    | sex  | birthday  | deathday | 
  8. +------------+------+---------+------+-----------+----------+ 
  9. | himi       | h    | beijing | m    | 1989-9-23 | NULL     | 
  10. | himi       | h    | beijing | m    | 1989-9-23 | NULL     | 
  11. | himi3      | h    | beijing | m    | 1989-9-23 | NULL     | 
  12. | insertHimi | h    | Anhui   | m    | 1989-9-23 | NULL     | 
  13. +------------+------+---------+------+-----------+----------+ 
  14. 4 rows in set (0.01 sec) 

 





本文转自 xiaominghimi 51CTO博客,原文链接:http://blog.51cto.com/xiaominghimi/908909,如需转载请自行联系原作者
相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
21天前
|
关系型数据库 MySQL 数据库连接
数据库连接工具连接mysql提示:“Host ‘172.23.0.1‘ is not allowed to connect to this MySQL server“
docker-compose部署mysql8服务后,连接时提示不允许连接问题解决
|
8天前
|
关系型数据库 MySQL 数据库
Docker Compose V2 安装常用数据库MySQL+Mongo
以上内容涵盖了使用 Docker Compose 安装和管理 MySQL 和 MongoDB 的详细步骤,希望对您有所帮助。
77 42
|
26天前
|
缓存 关系型数据库 MySQL
【深入了解MySQL】优化查询性能与数据库设计的深度总结
本文详细介绍了MySQL查询优化和数据库设计技巧,涵盖基础优化、高级技巧及性能监控。
197 0
|
2月前
|
存储 Oracle 关系型数据库
数据库传奇:MySQL创世之父的两千金My、Maria
《数据库传奇:MySQL创世之父的两千金My、Maria》介绍了MySQL的发展历程及其分支MariaDB。MySQL由Michael Widenius等人于1994年创建,现归Oracle所有,广泛应用于阿里巴巴、腾讯等企业。2009年,Widenius因担心Oracle收购影响MySQL的开源性,创建了MariaDB,提供额外功能和改进。维基百科、Google等已逐步替换为MariaDB,以确保更好的性能和社区支持。掌握MariaDB作为备用方案,对未来发展至关重要。
72 3
|
2月前
|
安全 关系型数据库 MySQL
MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!
《MySQL崩溃保险箱:探秘Redo/Undo日志确保数据库安全无忧!》介绍了MySQL中的三种关键日志:二进制日志(Binary Log)、重做日志(Redo Log)和撤销日志(Undo Log)。这些日志确保了数据库的ACID特性,即原子性、一致性、隔离性和持久性。Redo Log记录数据页的物理修改,保证事务持久性;Undo Log记录事务的逆操作,支持回滚和多版本并发控制(MVCC)。文章还详细对比了InnoDB和MyISAM存储引擎在事务支持、锁定机制、并发性等方面的差异,强调了InnoDB在高并发和事务处理中的优势。通过这些机制,MySQL能够在事务执行、崩溃和恢复过程中保持
116 3
|
2月前
|
SQL 关系型数据库 MySQL
数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog
《数据库灾难应对:MySQL误删除数据的救赎之道,技巧get起来!之binlog》介绍了如何利用MySQL的二进制日志(Binlog)恢复误删除的数据。主要内容包括: 1. **启用二进制日志**:在`my.cnf`中配置`log-bin`并重启MySQL服务。 2. **查看二进制日志文件**:使用`SHOW VARIABLES LIKE 'log_%';`和`SHOW MASTER STATUS;`命令获取当前日志文件及位置。 3. **创建数据备份**:确保在恢复前已有备份,以防意外。 4. **导出二进制日志为SQL语句**:使用`mysqlbinlog`
113 2
|
2月前
|
关系型数据库 MySQL 数据库
Python处理数据库:MySQL与SQLite详解 | python小知识
本文详细介绍了如何使用Python操作MySQL和SQLite数据库,包括安装必要的库、连接数据库、执行增删改查等基本操作,适合初学者快速上手。
369 15
|
2月前
|
SQL 关系型数据库 MySQL
数据库数据恢复—Mysql数据库表记录丢失的数据恢复方案
Mysql数据库故障: Mysql数据库表记录丢失。 Mysql数据库故障表现: 1、Mysql数据库表中无任何数据或只有部分数据。 2、客户端无法查询到完整的信息。
|
2月前
|
关系型数据库 MySQL 数据库
数据库数据恢复—MYSQL数据库文件损坏的数据恢复案例
mysql数据库文件ibdata1、MYI、MYD损坏。 故障表现:1、数据库无法进行查询等操作;2、使用mysqlcheck和myisamchk无法修复数据库。
|
2月前
|
SQL 关系型数据库 MySQL
MySQL导入.sql文件后数据库乱码问题
本文分析了导入.sql文件后数据库备注出现乱码的原因,包括字符集不匹配、备注内容编码问题及MySQL版本或配置问题,并提供了详细的解决步骤,如检查和统一字符集设置、修改客户端连接方式、检查MySQL配置等,确保导入过程顺利。

热门文章

最新文章