目录:
一 MySQL命令格式
二 数据库管理
三 数据库表管理、
四 对表 查询/排序/插入/更新/删除数据
五 SQL导入导出数据命令
六 用户管理
----------------------------------------------------------------------------------------------------
一 MySQL命令格式
1 要求mysql服务器告诉你它的版本号和当前日期
mysql> select version(),current_date();
2 多行语句:一条命令可以分成多行输入,直到出现分号“;”为止
mysql> select
-> USER()
-> ,
-> now()
->;
注意中间的逗号和最后的分号的使用方法。
3 一行多命令
输入如下命令:
mysql> SELECT USER(); SELECT NOW();
注意中间的分号,命令之间用分号隔开。
4命令的取消
当命令输入错误而又无法改变(多行语句情形)时,只要在分号出现前就可以用 c来取消该条命令
mysql> select
-> user()
-> c
mysql>
----------------------------------------------------------------------------------------------------
二 数据库管理
1 显示当前存在的数据库
mysql> show databases;
2 选择数据库并显示当前选择的数据库
mysql> USE 数据库名
3 显示当前数据库中存在的表
mysql> SHOW TABLES;
4 创建数据库
mysql> CREATE DATABASE 数据库名
注意不同操作系统对大小写的敏感。
5 选择你所创建的数据库
mysql> USE 数据库名
6 删除数据库
mysql> DROP DATABASE 数据库名
----------------------------------------------------------------------------------------------------
三 数据库表管理
1 建立数据库表
mysql> use 数据库名; //首先要选择一个数据库
Database changed
mysql> create TABLE 数据库表名 (表的内容);
2 显示表的结构
mysql> DESCRIBE 数据库表名;
3 修改表结构与删除表结构
a 修改某个表的字段类型及指定为空或非空
mysql>ALTER TABLE 表名称 CHANGE 字段名称 字段名称 字段类型 [是否允许非空];
mysql>ALTER TABLE 表名称 MODIFY 字段名称 字段类型 [是否允许非空];
b 修改某个表的字段名称及指定为空或非空
mysql>ALTER TABLE 表名称 CHANGE 字段原名称 字段新名称 字段类型 [是否允许非空];
c 增加一列:
mysql> ALTER TABLE 表名称 ADD COLUMN 字段名称 字段类型;
如在mytable表中增加一列表示是否单身single:
mysql> ALTER TABLE mytable add column single char(1);
d 如果要删除某一字段,可用命令:
mysql>ALTER TABLE 表名称 DROP 字段名;
4 更改表名
mysql>Alter TABLE 旧表名 RENAME 新表名;
5 将表中记录清空:
mysql> delete from 表名 [条件];
6 删除表
mysql> drop table 表1,表2;
可以删除一个或多个表,小心使用。
----------------------------------------------------------------------------------------------------
四 对表 查询/排序/插入/更新/删除数据
1 查询数据
SELECT 检索关键词 FROM 被检索的表 WHERE 检索条件(可选)
注: 检索关键词为“ * ”表示选择所有的列。
a 查询所有数据:
mysql> select * from 表名;
b 选择特定行
例子1:从mytable表查询name为tom的数据
mysql> select * from mytable where name = "tom";
+--------+------+------------+------------+
| name |sex | birth | birthaddr |
+--------+------+------------+------------+
| tom|m| 1973-09-02 | usa|
+--------+------+------------+------------+
1 row in set (0.06 sec)
例子2:上面WHERE的参数指定了检索条件。我们还可以用组合条件来进行查询:
mysql> SELECT * FROM mytable WHERE sex = "f" AND birthaddr = "china";
+--------+------+------------+------------+
| name |sex | birth | birthaddr |
+--------+------+------------+------------+
| abccs |f| 1977-07-07 | china |
+--------+------+------------+------------+
1 row in set (0.06 sec)
c 选择特定列
例子1: 查看表中的所有人的姓名,则可以这样操作:
mysql> SELECT name FROM mytable;
+----------+
| name |
+----------+
| abccs |
| mary |
| tom |
+----------+
3 row in set (0.00 sec)
例子2:如果想列出姓名和性别两列,则可以用逗号将关键词name和birth分开:
myaql> select name,birth from mytable;
d 多表查询
现在我们有了两个表: mytable 和 title。利用这两个表我们可以进行组合查询:
例如我们要查询作者abccs的姓名、性别、文章:
mysql> SELECT name,sex,title FROM mytable,title
-> WHERE name=writer AND name='abccs';
+-------+------+-------+
| name | sex | title |
+-------+------+-------+
| abccs | f| a1|
| abccs | f| a2|
+-------+------+-------+
上面例子中,由于作者姓名、性别、文章记录在两个不同表内,因此必须使用组合来进行查询。必须要指定一个表中的记录如何与其它表中的记录进行匹配。
注意:如果第二个表title中的writer列也取名为name(与mytable表中的name列相同)而不是writer时,就必须用mytable.name和title.name表示,以示区别。
再举一个例子,用于查询文章a2的作者、出生地和出生日期:
mysql> select title,writer,birthaddr,birth from mytable,title
-> where mytable.name=title.writer and title='a2';
+-------+--------+-----------+------------+
| title | writer | birthaddr | birth |
+-------+--------+-----------+------------+
| a2| abccs | china | 1977-07-07 |
+-------+--------+-----------+------------+
2 排序与计数
a 对行进行排序
例子1:我们可以对表中的记录按生日大小进行排序:
mysql> SELECT name, birth FROM mytable ORDER BY birth;
+----------+------------+
| name | birth |
+----------+------------+
| tom | 1973-09-02 |
| abccs| 1977-07-07 |
| mary | 1978-12-12 |
+----------+------------+
3 row in set (0.00 sec)
例子2:我们可以用DESC来进行逆序排序:
mysql> SELECT name, birth FROM mytable ORDER BY birth DESC;
+----------+------------+
| name | birth |
+----------+------------+
| mary | 1978-12-12 |
| abccs| 1977-07-07 |
| tom | 1973-09-02 |
+----------+------------+
3 row in set (0.00 sec)
b 行计数
例子1:数据库经常要统计一些数据,如表中员工的数目,我们就要用到行计数函数COUNT()。
COUNT()函数用于对非NULL结果的记录进行计数:
mysql> SELECT COUNT(*) FROM mytable;
+----------+
| COUNT(*) |
+----------+
|3 |
+----------+
1 row in set (0.06 sec)
例子2:员工中男女数量:
mysql> SELECT sex, COUNT(*) FROM mytable GROUP BY sex;
+------+----------+
| sex | COUNT(*) |
+------+----------+
| f|2 |
| m|1 |
+------+----------+
2 row in set (0.00 sec)
注意我们使用了GROUP BY对SEX进行了分组。
3 插入数据
首先打开数据库
a 加入一条新记录:INSERT INTO 表名[(列名)] VALUES (对应内容)
例子1:往mytable表(表的结构为:name varchar(20),sex char(1), birth date, deathaddr varchar(20) )加入一条记录,添加时需要注意一一对应
mysql> insert into mytable values ('abccs','f','1977-07-07','china');
例子2:mysql> insert into mytable(name,sex) values ('abccs','f');
b 用文本方式将数据装入一个数据库表 :LOAD DATA LOCAl INFILE "文本文件名(包括路径)" INTO TABLE 表名
本数据应符合的格式:字段数据之间用tab键隔开,null值用来代替
例子:
创建一个文本文件“mysql.txt”,每行包含一个记录,用定位符(tab)把值分开,并且以在
CREATE TABLE语句中列出的列次序给出,例如:
abccs f 1977-07-07 china
mary f 1978-12-12 usa
tom m 1970-09-02 usa
假如你的mytable.txt放在D盘,使用下面命令将文本文件“mytable.txt”装载到mytable表中:
mysql> LOAD DATA LOCAL INFILE "d:/mytable.txt" INTO TABLE mytable;
4 更新/修正表数据
UPDATE 表名 SET 列名= 新值 WHERE 条件
例子:
假如tom的出生日期有错误,应该是1973-09-02,则可以用update语句来修正:
mysql> update mytable set birth = "1973-09-02" where name = "tom";
5 删除数据
DELETE FROM 表名 WHERE 条件
例子:
用如下命令删除表中的一条记录:
mysql> delete from mytable where name='abc';
DELETE从mytable表中删除满足由where给出的条件的一条记录。
----------------------------------------------------------------------------------------------------
五 SQL导入导出数据命令
1 数据导出
数据导出主要有以下几种方法:
(1) 使用select into outfile 'filename'语句
(2) 使用mysqldump实用程序
(1) 例子:我们有一个库为phptest,其中有一个表为driver。现在要把driver卸成文件。执行命令:
mysql> use phptest;
Database Changed
mysql> select * from driver into outfile 'a.txt';
Query OK, 22 rows affected (0.05 sec)
上面就可以完成将表driver从数据库中卸到a.txt文件中。注意文件名要加单引号。那么这个文件在哪
呢?在mysql目录下有一个data目录,它即是数据库文件所放的地方。每个库在单独占一个子目录,所以
phptest的目录为c:/mysql/data/phptest(注意:我的mysql安装在c:/mysql下)。好,现在我们进去,a.txt
就是它。
打开这个文件,可能是:
1 Mika Hakinnen 1
2 David Coulthard 1
3 Michael Schumacher 2
4 Rubens Barrichello 2
我们可以修改输出文件名的目录,以便放在指定的位置。如'a.txt'可以改成'./a.txt'或'/a.txt','F:/a.txt'。
其中'./a.txt'放在c:/mysql/data目录下了,
而'/a.txt'文件则放在c:/目录下了。
所以select命令认为的当前目录是数据库的存放目录,这里是 c:/mysql/data。
如果你想把表导出到Excel文件中,只需要把 'a.txt' 改成 'a.xls' 即可
使用select命令还可以指定卸出文件时,字段之间的分隔字符,转义字符,包括字符,及记录行分隔字符。列在下面:
FIELDS
TERMINATED BY '/t'
[OPTIONALLY] ENCLOSED BY ''
ESCAPED BY '//'
LINES
TERMINATED BY '/n'
TERMINATED 表示字段分隔
[OPTIONALLY] ENCLOSED 表示字段用什么字符包括起来,如果使用了OPTIONALLY则只有CHAR和VERCHAR 被包括
ESCAPED 表示当需要转义时用什么作为转义字符
LINES TERMINATED 表示每行记录之间用什么分隔
上面列的是缺省值,而且这些项都是可选的,不选则使用缺省值。可以根据需要进行修改。给出一个例
子如下:
mysql> select * from driver into outfile 'a.txt' fields terminated by ',' enclosed by '"';
Query OK, 22 rows affected (0.06 sec)
结果可能如下:
"1","Mika","Hakinnen","1"
"2","David","Coulthard","1"
"3","Michael","Schumacher","2"
"4","Rubens","Barrichello","2"
...
可以看到每个字段都用','进行了分隔,且每个字段都用'"'包括了起来。注意,行记录分隔符可以是
一个字符串,请大家自行测试。不过,如果输出文件在指定目录下如果存在的话就会报错,先删除再测
试即可。
2 数据导入
同导出相类似,导入也有两种方法:
(1) 使用LOAD DATA INFILE 'filename'命令
(2) 使用mysqlimport实用程序
(1)例子:
使用load命令:
load data infile 'driver.txt' into table driver fields terminated by ',' enclosed by '"';
----------------------------------------------------------------------------------------------------
六 用户管理
1 查看用户
mysql> use mysql;
Database Changed
mysql> select * from user;
注:mysql库中有user表,表包含 host、user、password 及相关权限如update等。
2 创建新用户
有两种方法:
(1) CREATE USER 用户名
(2) GRANT 权限列表[(字段列表)] [,类型 [(字段列表)]…]
ON 数据库名称.表名称
TO 用户名@域名或IP地址
[IDENTIFIED BY ‘密码值’][WITH GRANT OPTION]
[WITH GRANT OPTION]
注:第二种方法创建用户同时,还授予了该用户的权限,设置了该用户相关属性,如密码等.
3 删除用户
DROP USER 用户名
4 授予用户权限
GRANT 权限列表[(字段列表)] [,类型 [(字段列表)]…]
ON 数据库名称.表名称
TO 用户名@域名或IP地址
5 撤销用户权限
REVOKE 权限类型 [(字段列表)] [, 权限类型 [(字段列表)]…]
ON {数据库名称.表名称}
FROM 用户名@域名或IP地址
后记:哈哈哈~~~一周的学习成果!!!花了一个下午整理出来的,虽然很累,但是很满足,很高兴啊!!!