MySQL 数据库简单操作

    对于想要从事或爱好mysql相关工作的童鞋们,有必要掌握在命令行下对mysql实现一些简单的操作。本文从描述了如何登录到mysql数据库服务器,如何在mysql提示符下发布命令,创建数据库,以及执行一些简单的DML操作。

 

1、连接到与退出mysql

为了连接mysql数据库服务器,当调用mysql时,通常需要提供一个MySQL用户名并且很可能需要一个密码。如果服务器
运行在登录服务器之外的其它机器上,还需要指定主机名。联系管理员以找出进行连接所使用的参数 (即,连接的主机
、用户名和使用的密码)。知道正确的参数后,可以按照以下方式进行连接:
shell> mysql -h host -u user -p
mysql> select version(),current_date;
+---------------------------------------+--------------+
| version()                             | current_date |
+---------------------------------------+--------------+
| 5.6.17-enterprise-commercial-advanced | 2014-04-28   |
+---------------------------------------+--------------+
1 row in set (0.03 sec)

--在允许匿名登录到本地服务器的情下可以直接在shell提示符下直接输入mysql即可实现登录
mysql> #提示符告诉你mysql准备为你输入命令。

shell> mysql
--输入分号表示结束命令输入并执行该命令
--成功地连接后,可以在mysql>提示下输入QUIT (或\q ,exit)随时退出
mysql> QUIT
Bye
--在Unix中,也可以按control-D键断开服务器。


2、发布命令

mysql执行命令可分为非交互与交互模式
a) 非交互模式
非交互模式,也叫批模式,也就是将想要运行的命令放在一个文件中,然后告诉mysql从文件读取它的输入。
通常用于返回数据量较大,以及批量管理,执行特殊脚本运行的情形。
shell> mysql <query.sql

[root@linux1 ~]# more query.sql 
show databases;
use cnfo
select * from tb_tmp; 
[root@linux1 ~]# mysql -u root -pmysql <query.sql
Warning: Using a password on the command line interface can be insecure.
Database
information_schema
cnfo
mysql
performance_schema
test
name    sex     birth
Jack    F       2014-04-28
John    M       2013-04-28

--也可以使用下面的2种方式来执行批
mysql > source /<dir>/filename 
mysql > \./<dir>/finename       

--如下面的演示
[root@linux1 ~]# mysql -u root -pmysql
mysql> source query.sql
+--------------------+
| Database           |
+--------------------+
| information_schema |
| cnfo               |
| mysql              |
| performance_schema |
| test               |
+--------------------+
5 rows in set (0.00 sec)

Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
+------+------+------------+
| name | sex  | birth      |
+------+------+------------+
| Jack | F    | 2014-04-28 |
| John | M    | 2013-04-28 |
+------+------+------------+
2 rows in set (0.00 sec)

也可以在shell模式下直接执行SQL,如下面的方法:
-e or --execution=option  
shell>mysql -e "SQL cmd1;SQL cmd2;.."
shell>mysql --execute="SQL cmd1;SQL cmd2;.."

b) 交互模式
交互模式就是直接在mysql提示符下发布命令并执行命令。
如下操作,不区分大小写,输入回车后会得到命令执行的结果,即为交互模式。
mysql> SELECT VERSION(), CURRENT_DATE;
mysql> select version(), current_date;
mysql> SeLeCt vErSiOn(), current_DATE;

--简单计算
mysql> select power(2,3),(5-1)*4;
+------------+---------+
| power(2,3) | (5-1)*4 |
+------------+---------+
|          8 |      16 |
+------------+---------+
1 row in set (0.00 sec)

--分号分割多行
mysql> select version();select current_date;
+---------------------------------------+
| version()                             |
+---------------------------------------+
| 5.6.17-enterprise-commercial-advanced |
+---------------------------------------+
1 row in set (0.01 sec)

+--------------+
| current_date |
+--------------+
| 2014-04-28   |
+--------------+
1 row in set (0.00 sec)

--换行输入命令
--注,可以输入空行
mysql> select user(),
    -> current_date;
+----------------+--------------+
| user()         | current_date |
+----------------+--------------+
| root@localhost | 2014-04-28   |
+----------------+--------------+
1 row in set (0.00 sec)

--取消执行当前命令
mysql> select current_date()\c


3、获取mysql帮助信息
直接在提示符下输入mysql --help会得到mysql命令所有参数的相关帮助信息,可以配合管道符more使用
shell> mysql --help

 

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

 

5、日常操作

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

--切换数据库
mysql> use cnfo
Database changed

--查看当前数据库
mysql> select database();
+------------+
| database() |
+------------+
| cnfo       |
+------------+
1 row in set (0.00 sec)

--启动mysql时连接到指定数据库
[root@linux1 ~]# mysql -u root -p cnfo
Enter password: 

mysql> select database();
+------------+
| database() |
+------------+
| cnfo       |
+------------+
1 row in set (0.01 sec)

--在当前库创建表
mysql> create table tb_tmp(name varchar(20),
    -> sex char(1),birth date);
Query OK, 0 rows affected (0.09 sec)

--显示当前库所有的表
mysql> show tables;
+----------------+
| Tables_in_cnfo |
+----------------+
| tb_tmp         |
+----------------+
1 row in set (0.00 sec)

--查看表的定义信息
mysql> desc tb_tmp
    -> ;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| birth | date        | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)

-- Author : Leshami
-- Blog   : http://blog.csdn.net/leshami
--为表插入记录
mysql> insert into tb_tmp values('Jcack','F','20140428');
Query OK, 1 row affected (0.08 sec)

mysql> insert into tb_tmp values('John','M','20130428');
Query OK, 1 row affected (0.02 sec)

--查看表上的记录
mysql> select * from tb_tmp;
+-------+------+------------+
| name  | sex  | birth      |
+-------+------+------------+
| Jcack | F    | 2014-04-28 |
| John  | M    | 2013-04-28 |
+-------+------+------------+
2 rows in set (0.00 sec)

--更新表上的记录
mysql> update tb_tmp set name='Jack' where name='Jcack';
Query OK, 1 row affected (0.01 sec)
Rows matched: 1  Changed: 1  Warnings: 0

--过滤查询
mysql> select * from tb_tmp where sex='F';
+------+------+------------+
| name | sex  | birth      |
+------+------+------------+
| Jack | F    | 2014-04-28 |
+------+------+------------+
1 row in set (0.00 sec)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、基本命令 1、启动服务, 已管理员身份运行cmd net satrt mysql 2、停止服务 net stop 服务名称 3、连接数据库 mysql -u 用户名 -p 4、断开连接 输入exit或quit 5、查看mysql版本:select version(); 6.查看当前时间select now(); 7、远程连接 mysql -h ip地址 -u 用户名 -p 二、数据库操作 1、创建数据库: create database 数据库名 charset = utf8; 2、删除数据库 :drop database 数据库名; 3、切换数据库 use 数据库名 4、查看当前选择的数据库 select database(); 5、查看有多少数据库: show databases; 三、表操作 1、查看当前数据库所有表show tables; 2、创建表 create table 表名(列及类型) creat table student(id int auto_increment primary key,name varchar(20) not null,age int not null,gender bit default 1,address varchar(20), isDelete bit default 0) 3、删除表 drop table 表名; 4、查看表结构desc 表名; 5、查看建表语句show create table 表名; 5、重命名表名: rename table 原表名 to 新表名; 6、修改表结构 alter table 表名 add|change|drop 列名 数据类型 7、数据修改: 1、增加数据: a: 全列插入:insert into 表名 values(0,”lin”,”yellow”,200,0) 说明:主键是不用输入的,但是全列插入时要用0占位,实际以自动生成的为准 b:缺省插入:有默认值而却不需要添加时使用 Insert into 表名(列名1,列名2......) values(值1,值2.......) C:多条插入:insert into 表名 values(值1,值2,。。),(值1,值2,。。。) 多条插入也支持缺省输入 2、删除数据 delete from 表名 where 条件; delete from stu where id = 9; 没有条件是全部删除,慎用 3、改数据 update 表名 set 列1 =值1,列2 = 值2 where 条件; 不写条件就都修改了 4、查询数据: a:查询表中全部数据 select * from 表名; 四、查数据 1、基本语法 格式:select * from 表名; 说明: a、from关键字后面是表名,表示数据来源于这个表 b、Select后面写表中的列名,如果是*表示在结果集中显示表中的所有列。 c、在select后面的列名部分,可以使用as为列名起别名,这个别名显示在结果集中,但是再用别名找找不到该列。 d、如果想查询多个列,之间用逗号分隔 2、消除重复行 在select后面列的前面使用distinct可以不显示重复的行 3、条件查寻 a、语法: Select * from 表名 where 条件 B、比较运算符: 等于 = 大于> 小于 < 大于等于>= 小于等于<= 不等于!=或<> b、逻辑运算符 And or not C、模糊查寻 Like %表示任意多个字符 _表示一个任意字符 D、范围查询 In 表示在一个非连续的范围内 Between.......and.............表示在一个连续的范围内 需求:查询编号是8,10,12的数据 实例:select * from stu where id in (8,10,12); 需求:查询id在6-8的学生 E、空判断 注意null 与””不同 判断空:is null 判断非空:is not null 查询没有地址的同学; Select * from stu where address is null; e、优先级 小括号,not ,比较运算符 ,逻辑运算符,and比or优先级高,如果同时使用,建议使用(); 4、聚合 为了快速得到统计的数据,提供了5个聚合函数 Select 函数() from 表名; 1、count(*) 表示计算总行数,()中可以写*或列名 2、max(列名) 表示求此列的最大值 3、min(列名) 表示求此列的最小值 4、sum(列名) 表示求此列的和 5、avg(列名) 表示求平均数值 需求:查询女生id的最大值: 需求:查看“l”开头的学生年龄和 5、分组 分组是为了将分组后的数据通过聚合函数显示使用,按照字段进行分组,表示此字段相同的数据会被放到一个集合中 分组后,只能查询出相同的数据列,对于有差异的数据列,无法显示在结果集中,可以对分组后的数据进行聚合运算 语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ 需求,查询男生,女生分别有多少人 分组后的数据筛选语法 select 列1,列2,聚合.............From 表名 group by 列1,列2,........ having 列1,列2 6、排序 语法:select * from 表名 order by 列1 asc|desc, 列2 asc|desc..... 说明: A、将数据按照列1 进行排序,如果列1数据相同,则按照列2进行排序,....... B、默认升序 C、Asc表示升序 D、Desc表示降序 如果需要筛选,where 条件要放在表名后面 7、分页 Select * from stu limit srart count 八、关联: 建表语句: 1/create table class(id int auto_increment primary key,name varchar(20) not null ,stuNum int not null); 2/create table students(id int auto_increment primary key,name varchar(20) not null ,gender bit default 1,classid int not null,foreign key (classid) references class(id)); 关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 分类: 1、关联查询 select students.name,class.name from class inner join students on class.id = students.classid; 2、left join 会将A中有的填充到左边,没有用null填充 3,rightjoin 会将b中有填充到右边,没有用null填充 使用python写代码前,要退出mysql,要用pip install PyMySql添加库

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值