用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