Mysql数据库的一些命令

时间:2021-09-19 23:36:01

如果你习惯用 windows 的数据库,也就是在 图形界面上操作数据库的话,那么当你在命令上 操作 mysql 将会感到陌生,其实只要你掌握了一些基本命令,还有经常使用,熟练起来了, 将会相当方便,而且很快速。

好了,现在开始 带一些刚接触mysql 的朋友 进入mysql 的世界吧。 呵呵。


查看当前数据库的版本,因为有些命令在不同版本中 用法有可能不一样,
注意 -V 是大写字母V
[root@localhost ~]# mysqladmin -V
mysqladmin  Ver 8.42 Distrib 6.0.4-alpha, for redhat-linux-gnu on i686

这样就知道我当前使用的 mysql 版本是 6.0.4-alpha

----------------------
当你安装完数据库后,当然就是要进入mysql 进行测试一番。

首先登陆 退出命令 这个应该是最基本的了。

mysql -uroot -p123

这个表示用户名为 root 密码为123

出现 mysql> 这个符号,表示你成功登陆进去了

然后你就可以输入一些命令让 mysql 显示相关的信息出来,例如看我下面操作

---------------------------------

查看数据库列表

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| 17rumen            |
| mysql              |
| test               |
+--------------------+
4 rows in set (0.01 sec)

这样上面就显示出 4个数据库了。

我忘记说了, 当你输入mysql 命令后, 要加入 ; 分号,说明 这条命令接触了

然后按一下 回车就可以了。

------------------------------

当你想要进入 某一个数据库的 那么就使用下面命令:

use 数据库名字;

例如 use mysql; 表示进入mysql这个数据库

进入数据库后,就可以查看 当前数据库的数据表。

show tables;

就会把 当前数据库的所有表列出来;

---------------------------------

然后就可以 查看一些表的内容,也就是 字段的内容

例如:

select User,Password from user;

这是查看mysql 数据库的用户名和密码,当然这密码是加密后的

=====================
别看这些步骤有些复杂,其实很好理解,一层层进去查看而已

你要查看数据表,当然要进入 某个数据库,

当你要查看表的数据的时候  就要进入某张表。


进入后 要 一步步退出来吗 ?

这个当然不用, 例如 你随时可以进入 其他数据库

例如我现在当前位置在 mysql 数据库的某一张表上,

我可以直接 use 17rumen; 直接进入到 17rumen 这个数据库上去。

是吧, 很方便的。

========================================

然后说一下 跨数据库查询, 也就是我当前在一个数据库 查看另外一个数据库上的

信息内容。

我当前在 mysql 这个数据库上, 要查 17rumen 这个数据库上的 news 表内容

如何呢?

select * from 17rumen.news;

这样就可以了, 不需要在17rumen 数据库上进行操作。

看到了吧,这样就可以很方便进行操作,剩下很多时间。

=================================

还有就是 查看某一张表的 结构,包括字段名,是否允许为Null,主键,外键,默认值,等等。

desc user;

就是查看 user 表的结构, Field 表示字段名 ,Type 表示 字段的数据类型

---------------

如果你想要看某个字段的详细信息

例如刚才  desc user; 只是查看表的结构

下面接着查看 user 表的 Host 字段的信息

desc user Host;

就把 Host 字段显示出来

desc user Host;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| Host  | char(60) | NO   | PRI |         |       |
+-------+----------+------+-----+---------+-------+
1 row in set (0.00 sec)

看到不允许为空, Key 为 PRI 表示 这个就是 主键来的。

================

一些基本常用命令就 到这里, 当然还有 退出命令 就是 exit; 就可以了

以后还会为大家介绍 创建数据库 表 查询 删除 添加 等等的操作。 谢谢观看


当大家刚刚装好mysql数据库后,会有一个默认本地用户root,密码在你装数据库期间会提示你输入一个密码,那个就是你的root密码虽然别的用户也可以登录到数据库但是权限少的可怜装好数据库后我们可以通过注释掉配置文件/etc/mysql/my.cnf中的bind-address = 127.0.0.1这行来使mysql可以远程登录(然后重启有效)

在命令行模式下修改用户密码的方式:

mysqladmin -u root -p password "新的密码";(不过在你修改密码时,会让你先输入你的旧密码)

登录本地mysql数据库 ”mysql -u root -p  “回车它会让你输入密码,输入正确密码就可以登录了

连接到远程主机上的MYSQL。假设远程主机的IP为:110.110.110.110,用户名为root,密码为abcd123。则键入以下命令:

mysql -h110.110.110.110 -uroot -pabcd123

(注:u与root可以不用加空格,其它也一样)

登录mysql数据库后使用的命令:(注意写完命令后要加个分号来)命令字母可以不区分大小写

显示当前使用者的名字:select user();
查看所有的用户:select user,host,password from mysql.user;
显示当前用户的权限:show grants for 用户名@localhost;(当然用户必须是在数据库中已经建立的用户,如果不是会显示错误)
创建新用户: create user username identified by ‘password'(此用户没有任何权限或没有任何身份);还可以这样建新用户:  grant select,insert,update,delete on *.* to test2@localhost identified by 'abc‘;
删除新用户:Delete FROM mysql.user Where User='test' and Host='localhost';
刷新系统权限表:flush privileges; 
选择数据库:use databasename;然后可以对数据库进行操作;
创建数据库:create database databasename;
删除数据库:drop database databasename;
查看表:show tables;
修改表名:alter table tablename rename  newtablename;
查看表的结构:desc tablename;或者是 show columns from tablename;
删除表:delete from tablename;或者truncate tablename; delete的效果是将mysql表中所有记录一条一条删除到删完,而truncate相当于保留mysql表的结构,重新创建了这个表,所有的状态都相当于新表,因此效率上truncate比delete快,并且不可恢复数据 。

1) 创建一张学生表,包含以下信息,学号,姓名,年龄,性别,家庭住址,联系电话

create table student 
(
 学号 int,
 姓名 varchar(10),
 年龄 int,
 性别 varchar(4),
 家庭住址 varchar(50),
 联系电话 varchar(11)
);(注意里面的英文、数字和括号用英文格式书写)
2) 修改学生表的结构,添加一列信息,学历 
alter table student add column 学历 varchar(6);
alter table test modify 性别 char(10) --修改表列类型
3) 修改学生表的结构,删除一列信息,家庭住址 
alter table student drop column 家庭住址;//注意此处用drop而非delete
4) 向学生表添加如下信息: 
  学号 姓名年龄性别联系电话学历

  1A22男123456小学

  2B21男119中学

  3C23男110高中

  4D18女114大学 
insert into student (学号,姓名,年龄,性别,联系电话,学历) values(1,"A",22,"男","123456","小学");(当插入的中文不能识别时,可用nchar()或nvarchar(),改用unicode编码而不用ASCii编码)
insert into student (学号,姓名,年龄,性别,联系电话,学历) values(1,"B",21,"男","119","中学");
insert into student (学号,姓名,年龄,性别,联系电话,学历) values(1,"C",23,"男","123456","高中");
insert into student (学号,姓名,年龄,性别,联系电话,学历) values(1,"D",23,"女","114","大学");
5) 修改学生表的数据,将电话号码以11开头的学员的学历改为“大专”
update student set 学历="大专" where 联系电话 like "11%";
6) 删除学生表的数据,姓名以C开头,性别为‘男'的记录删除 
delete from student where 姓名 like "C" and 性别="男";
7) 查询学生表的数据,将所有年龄小于22岁的,学历为“大专”的,学生的姓名和学号示出来 
select 姓名,学号 from student where 年龄<22 and 学历="大专";
8) 查询学生表的数据,查询所有信息,列出前25%的记录 
select top 25 percent * from student ; ????
select  * from student limit 25%;???? 这条有问题,在sql 2000中应该是select top 25 percent * from student ;
9) 查询出所有学生的姓名,性别,年龄降序排列 
select 姓名,性别,年龄 from student order by 年龄 desc;
10) 按照性别分组查询所有的平均年龄 
select avg(年龄) as 平均年龄 from student group by 性别;
select avg(年龄) from student group by 性别;
select avg(年龄) 平均年龄 from student group by 性别;
3) 说出以下聚合数的含义:avg ,sum ,max ,min , count ,count(*)

  AVG:求平均值 
  SUM:求和 
  MAX:求最大值 
  MIN:求最小值 
  COUNT(*):返回所有行数 
  COUNT返回满足指定条件的记录值