sql操作mysql数据库_使用SQL操作MySQL数据库

用SHOW显示已有的数据库

句法:SHOW DATABASES [LIKE wild]

如果使用LIKE wild部分,wild字符串可以是一个使用SQL的“%”和“_”通配符的字符串。

功能:SHOW DATABASES列出在MySQL服务器主机上的数据库。

你可以尝试下面举例,观察输出结果,例如:

mysql>show databases;

+----------+

| Database |

+----------+

| first  |

| mysql  |

| mytest  |

| test  |

| test1  |

+----------+

mysql>show databases like ‘my%’;

+----------------+

| Database (my%) |

+----------------+

| mysql  |

| mytest  |

+----------------+

用mysqlshow程序也可以得到已有数据库列表。

用Create Dabase 创建数据库

句法:CREATE DATABASE db_name

功能:CREATE DATABASE用给定的名字创建一个数据库。

如果数据库已经存在,发生一个错误。

在MySQL中的数据库实现成包含对应数据库中表的文件的目录。因为数据库在初始创建时没有任何表,CREATE

DATABASE语句只是在MySQL数据目录下面创建一个目录。

例如:

mysql>create database myfirst;

然后利用show databases观察效果。

用DROP DATABASE删除数据库

句法:DROP DATABASE [IF EXISTS] db_name

功能:DROP

DATABASE删除数据库中的所有表和数据库。要小心地使用这个命令!

DROP

DATABASE返回从数据库目录被删除的文件的数目。通常,这3倍于表的数量,因为每张表对应于一个“.MYD”文件、一个“.MYI”文件和一个“.frm”文件。

在MySQL 3.22或以后版本中,你可以使用关键词IF

EXISTS阻止一个错误的发生,如果数据库不存在。

用USE选用数据库

句法:USE db_name

USE

db_name语句告诉MySQL使用db_name数据库作为随后的查询的缺省数据库。数据库保持到会话结束,或发出另外一个USE语句:

mysql> USE db1;

mysql> SELECT count(*) FROM mytable;

# selects

from db1.mytable

mysql> USE db2;

mysql> SELECT count(*) FROM mytable;

# selects

from db2.mytable

如果你不是用USE语句,那么上面的例子应该写成:

mysql> SELECT count(*) FROM db1.mytable;

mysql> SELECT count(*) FROM db2.mytable;

由于use也是一个mysql客户程序的命令,所以你可以在命令行最后不加分号,客户程序可以得到结果。

查看表结构:

句法:

DESC table_name

show columns from 表名;

describe 表名;

show create table 表名;

mysql> desc student;

+-------+-------------+------+-----+---------+-------+

| Field |

Type | Null | Key | Default | Extra |

+-------+-------------+------+-----+---------+-------+

| sno | smallint(6) |

YES | | NULL | |

| sname |

char(11) |

YES | | NULL | |

| ssex |

char(2) | YES | | NULL | |

| sage | smallint(6) | YES | | NULL | |

+-------+-------------+------+-----+---------+-------+

向表中插入记录

insert into 表名 values(取值);

mysql> insert into student

values(4,'changlong','m',25);

添加列,修改列,删除列

ALTER TABLE:添加,修改,删除表的列,约束等表的定义。

查看列:desc 表名;

修改表名:alter table t_book rename to bbb;

添加列:alter table 表名 add column 列名 varchar(30);

删除列:alter table 表名 drop column 列名;

修改列名MySQL: alter table bbb change nnnnn hh int;

修改列名SQLServer:exec

sp_rename't_student.name','nn','column';

修改列名Oracle:lter table bbb rename column nnnnn to hh int;

修改列属性:alter table t_book modify name varchar(22);

sp_rename:SQLServer 内置的存储过程,用与修改表的定义。

删除表

DROP TABLE [RESTRICT|

CASCADE];

查询

SELECT [ALL|DISTINCT]

[,]

FROM [,

] …

[ WHERE ]

[ GROUP BY [ HAVING

] ]

[ ORDER BY [ ASC|DESC ]

];

查询指定列

mysql> select sno

-> from student;

+------+

| sno |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

查询所有列

mysql> select * from student;

+------+-----------+------+------+

| sno |

sname | ssex | sage |

+------+-----------+------+------+

| 1 |

chenlu |

f | 24 |

| 2 |

zhanghong | f | 23 |

| 3 |

zhanglong | m | 25 |

| 4 |

changlong | m | 25 |

+------+-----------+------+------+

查询经过计算的值

mysql> select sname, 2013-sage

-> from student;

+-----------+-----------+

|

sname | 2013-sage |

+-----------+-----------+

| chenlu | 1989 |

| zhanghong

| 1990 |

| zhanglong

| 1988 |

| changlong

| 1988 |

+-----------+-----------+

用大写字母表示性别,给列起别名。

mysql> select sno NO, sname NAME, 2013-sage

BIRTH,UPPER(ssex)

-> from student;

+------+-----------+-------+-------------+

| NO |

NAME | BIRTH | UPPER(ssex) |

+------+-----------+-------+-------------+

| 1 |

chenlu | 1989 |

F |

| 2 |

zhanghong | 1990 |

F |

| 3 |

zhanglong | 1988 |

M |

| 4 |

changlong | 1988 |

M |

+------+-----------+-------+-------------+

取消重复行

mysql> select distinct ssex

-> from student;

+------+

| ssex |

+------+

| f |

| m |

+------+

比较运算符

mysql> select sname from student where sage

< 25;

+-----------+

|

sname |

+-----------+

| chenlu |

| zhanghong |

+-----------+

确定范围

mysql> select sname sage from student where

sage between 20 and 25;

+-----------+

|

sage |

+-----------+

| chenlu |

| zhanghong |

| zhanglong |

| changlong |

+-----------+

确定集合

mysql> select sname,ssex from student where

ssex in('f');

+-----------+------+

|

sname | ssex |

+-----------+------+

| chenlu |

f |

| zhanghong |

f |

+-----------+------+

字符匹配

[NOT] LIKE ‘’ [ESCAPE ‘

’]

ESCAPE '\' 表示“ \” 为换码字符

mysql> select * from student where sno like

'1';

+------+--------+------+------+

| sno | sname | ssex | sage

|

+------+--------+------+------+

| 1 | chenlu

| f | 24 |

+------+--------+------+------+

mysql> select sname from student where sname

like 'chen%';

+--------+

| sname |

+--------+

| chenlu |

+--------+

mysql> select sname from student where sname

like 'chen__';

+--------+

| sname |

+--------+

| chenlu |

+--------+

涉及的空值查询

mysql> select sno from student where ssex is

not null;

+------+

| sno |

+------+

| 1 |

| 2 |

| 3 |

| 4 |

+------+

多重条件查询

mysql> select sname from student where

sage<25 and ssex='f';

+-----------+

|

sname |

+-----------+

| chenlu |

| zhanghong |

+-----------+

order by子句

mysql> select * from student where ssex='m'

order by sno desc;

+------+-----------+------+------+

| sno |

sname | ssex | sage |

+------+-----------+------+------+

| 4 |

changlong | m | 25 |

| 3 |

zhanglong | m | 25 |

+------+-----------+------+------+

聚集函数:

计数

COUNT([DISTINCT|ALL] *)

COUNT([DISTINCT|ALL] )

计算总和

SUM([DISTINCT|ALL]

) 计算平均值

AVG([DISTINCT|ALL] )

最大最小值

MAX([DISTINCT|ALL] )

MIN([DISTINCT|ALL]

mysql> select count(*) from student;

+----------+

| count(*) |

+----------+

| 4 |

+----------+

mysql> select avg(sage) from student;

+-----------+

| avg(sage) |

+-----------+

| 24.2500 |

+-----------+

mysql> select max(sage) from student;

+-----------+

| max(sage) |

+-----------+

| 25 |

+-----------+

mysql> select sum(sage) from student;

+-----------+

| sum(sage) |

+-----------+

| 97 |

+-----------+

GROUP BY子句分组:细化聚集函数的作用对象

未对查询结果分组,聚集函数将作用于整个查询结果;对查询结果分组后,聚集函数将分别作用于每个组

;作用对象是查询的中间结果表;按指定的一列或多列值分组,值相等的为一组

mysql> select ssex,count(ssex) from student group by

ssex;

+------+-------------+

| ssex | count(ssex) |

+------+-------------+

| f | 2 |

| m | 2 |

+------+-------------+

HAVING短语与WHERE子句的区别:

作用对象不同,WHERE子句作用于基表或视图,从中选择满足条件的元组;HAVING短语作用于组,从中选择满足条件的组。

用update修改记录

UPDATE tbl_name SET 要更改的列

WHERE 要更新的记录

这里的 WHERE 子句是可选的,因此如果不指定的话,表中的每个记录都被更新。

例如,在pet表中,我们发现宠物Whistler的性别没有指定,因此我们可以这样修改这个记录:

mysql> update pet set sex=’f’ where name=”

Whistler”;

用delete删除记录

DELETE 语句有如下格式:

DELETE FROM tbl_name WHERE 要删除的记录

WHERE 子句指定哪些记录应该删除。它是可选的,但是如果不选的话,将会删除所有的记录。这意味着最简单的 DELETE

语句也是最危险的。

这个查询将清除表中的所有内容。一定要当心!

为了删除特定的记录,可用 WHERE 子句来选择所要删除的记录。这类似于 SELECT 语句中的 WHERE

子句。

mysql> delete from pet where

name=”Whistler”;

可以用下面的语句清空整个表:

mysql>delete from pet;

来自:http://database.51cto.com/art/200811/97667.htm

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值