您的位置:首页 > 数据库

常用数据库语法

2011-07-16 10:59 295 查看
常用数据库语法(以Mysql为基础)

注:我们以XXX代表数据库名(database),aaa代表数据表名(table),id和name为列名(column)

DOS下连接数据库:mysql -u用户名 -hIP -p密码

备份(前提是以断开数据库连接):mysqldump -u用户名 -p密码 数据库名 >F:\XXX.txt

恢复:mysql -u用户名 -p密码 数据库名 <F:\XXX.txt

数据库操作:

create database XXX;

show databases;

use XXX;

drop database XXX;

表操作:

1.创建create

——————————————————————

create table aaa(

id int auto_increment primary key,

name varchar(30) not null,

);

——————————————————————

2.查看show

——————————————————————

show columns from aaa;

show columns from aaa from XXX;

describe aaa id;(只显示一列)简写为:desc aaa id;

——————————————————————

3.修改alert

———————————————————————————————————————————

alter table aaa add email varchar(30) not null,modify name varchar(40) not null;

注意修改的最小单位为一列,不能单独修改一列中的某一个属性。例如修改name varchar(10) not null成varchar(30),如果用modify name varchar(30);就会出错,因为默认把not null也修改成null了。

———————————————————————————————————————————

4.插入insert

—————————————————————————————————————

insert into aaa(user,password,email) values('zollty','123456','zollty@qq.com');

—————————————————————————————————————

5.#######表查询语句#####

————————————————————————————————

select * from aaa

where ……

group by ……

order by ……

having ……

limit ……

————————————————————————————————

6.修改update

—————————————————————————————

update aaa set password='741951' where user='zollty';

—————————————————————————————

7.删除delete

———————————————————

delete from aaa where user='tiger';

———————————————————

特别案例分析:

1.联合查询

SELECT a . * , b.name, b.email, b.qq, c.revert, c.revert_time
FROM post a
LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b WHERE a.guest_id = b.id
ORDER BY a.id DESC

这是一个实际的案例,要求是:在guest(id,name,email),post(id,guest_id,post,post_time),

revert(id,post_id,revert,revert_time) 三个表中找到guest中的name,email,qq以及revert中的revert,revert_time还有post中的所有信息。三个表的外键关系是guest.id = post.guest_id,post.id = revert.post_id。查询的入口是post表,根据post的id主键找到guest和revert表中的相应信息,然后删除。

第三行代码是关键:

LEFT JOIN revert c ON ( a.id = c.post_id ) , guest b WHERE a.guest_id = b.id

分析:左连接到revert表,revert化名为c,连接条件是a.id = c.post_id(即revert中的post_id要和post表中的id相同);左连接到guest表,guest化名为b,连接条件是a.guest_id = b.id(即guest表中的id要和post表中的guest_id相同)。显然这两个连接都是利用了上面的外键关系。

实例:

注意:/*……*/为注释内容。

/*连接数据库:-u后接用户名,-p后接密码*/

C:\Users\Administrator>mysql -uroot -hlocalhost -pzollty

Welcome to the MySQL monitor. Commands end with ; or \g.

/*选择数据库,USE后加数据库的名称*/

mysql> USE zollty;

Database changed

/*查看student表的所有列(columns)*/

mysql> SHOW COLUMNS FROM student;

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

| Field | Type | Null | Key | Default | Extra |

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

| Sno | char(9) | NO | PRI | NULL | |

| Sname | char(20) | NO | | NULL | |

| Ssex | char(4) | NO | | NULL | |

| Sage | smallint(6) unsigned | YES | | NULL | |

| Sdept | varchar(20) | YES | | NULL | |

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

5 rows in set (0.03 sec)

/*向student表中插入数据*/

mysql> INSERT INTO student(Sno,Sname,Ssex,Sage,Sdept) values('20215121','李

勇','男','20','CS');

Query OK, 1 row affected (0.03 sec)

/*以同样的方法插入"王敏""张立"等,(略)………*/

mysql> SHOW COLUMNS FROM course;

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

| Field | Type | Null | Key | Default | Extra |

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

| Cno | char(4) | NO | PRI | NULL | |

| Cname | char(40) | NO | | NULL | |

| Cpno | char(4) | YES | MUL | NULL | |

| Ccredit | smallint(6) | YES | | NULL | |

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

4 rows in set (0.01 sec)

/*向course表中插入数据,此时还不能插入Cpno列,因为我设置了外键约束*/

mysql> INSERT INTO course(Cno,Cname) VALUES ('1','数据库');

Query OK, 1 row affected (0.04 sec)

mysql> INSERT INTO course(Cno,Cname) VALUES ('2','数学');

Query OK, 1 row affected (0.04 sec)

(略)………

mysql> INSERT INTO course(Cno,Cname) VALUES ('7','PASCAL语言');

Query OK, 1 row affected (0.02 sec)

/*更新数据,因为上面还没有指定列Cpno和Ccredit的值,此时可以设置了*/

mysql> UPDATE course

-> SET Cpno='5', Ccredit=4

-> WHERE Cno='1';

Query OK, 1 row affected (0.06 sec)

Rows matched: 1 Changed: 1 Warnings: 0

mysql> UPDATE course

-> SET Cpno='1', Ccredit=4

-> WHERE Cno='3';

Query OK, 1 row affected (0.04 sec)

Rows matched: 1 Changed: 1 Warnings: 0

(略)………

/*最基本的查询语句:查询course表中所有列的数据*/

mysql> SELECT *

-> FROM course;

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

| Cno | Cname | Cpno | Ccredit |

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

| 1 | 数据库 | 5 | 4 |

| 2 | 数学 | NULL | 2 |

| 3 | 信息系统 | 1 | 4 |

| 4 | 操作系统 | 6 | 3 |

| 5 | 数据结构 | 7 | 4 |

| 6 | 数据处理 | NULL | 2 |

| 7 | PASCAL语言 | 6 | 4 |

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

7 rows in set (0.00 sec)

/*退出MySQL*/

mysql> exit

Bye

/*备份数据库:将名为zollty的数据库备份到E:\zollty.txt*/

C:\Users\Administrator>mysqldump -uroot -pmymima zollty >E:\zollty.txt

end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: