Chinaunix首页 | 论坛 | 博客
  • 博客访问: 104405
  • 博文数量: 45
  • 博客积分: 2520
  • 博客等级: 少校
  • 技术积分: 650
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-09 16:54
文章分类

全部博文(45)

文章存档

2011年(1)

2008年(44)

我的朋友

分类: Mysql/postgreSQL

2008-03-25 13:21:15

DDL(数据定义语言)语句

 

1,创建数据库                        create database 数据库名;

mysql> create database javaworld;

    Query OK, 1 row affected

 

 

2,查看已存在数据库                    show databases;

   

mysql> show databases;

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

| Database           |

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

| information_schema |

| javaworld            |

| mysql                 |

| test                  |

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

4 rows in set

 

 

 

3,选择要操作的数据库                 use 数据库名;

mysql> use javaworld;

Database changed

   

 

4,查看javaworld数据库中所有的表            

                                   show tables;

mysql> show tables;

Empty set

 

 

 

5,删除数据库                        drop database 数据库名;

mysql> drop database javaworld;

Query OK, 0 rows affected

mysql> show databases;

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

| Database             |

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

| information_schema |

| mysql                 |

| test                  |

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

3 rows in set

 

 

 

6,创建表                            create table 表名(字段名(字段类型) 约束);

mysql> create table emp(ename varchar(10), hiredate date, sal decimal(10,2), deptno int(2));

Query OK, 0 rows affected

 

 

7,查看表的描述                   desc 表名;

mysql> desc emp;

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

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

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

| ename    | varchar(10)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

4 rows in set

 

 

8,查看创建表的SQL语句(引擎和字符集也可看到)  

                                    show create table 表名;

mysql> show create table emp;

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

| Table | Create Table                                                                                                                                                                                  

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

| emp   | CREATE TABLE `emp` (

  `ename` varchar(10) default NULL,

  `hiredate` date default NULL,

  `sal` decimal(10,2) default NULL,

  `deptno` int(2) default NULL

) ENGINE=InnoDB DEFAULT CHARSET=gb2312 |

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

1 row in set

 

 

9,删除表                            drop table 表名;

mysql> drop table emp;

Query OK, 0 rows affected

 

 

10,修改表     

<1>修改表类型

:修改emp表的ename字段定义,varchar(10)改为varchar(20)

mysql> alter table emp modify ename varchar(20);

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| ename    | varchar(20)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

4 rows in set

 

<2>增加表字段

:emp上新增字段age,类型为int(3)

mysql> alter table emp add column age int(3);

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| ename    | varchar(20)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

| age      | int(3)        | YES  |     | NULL    |       |

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

5 rows in set

 

<3>删除表字段

:将字段age删除

mysql> alter table emp drop column age;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| ename    | varchar(20)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

4 rows in set

 

<4>字段改名

:ename改名为name,同时修改字段类型为varchar(10)

 

 

mysql> alter table emp change ename name varchar(10);

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| name     | varchar(10)   | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

4 rows in set

 

 

<5>修改字段排列顺序

:birth加在ename

mysql> alter table emp add birth date after ename;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| ename    | varchar(10)   | YES  |     | NULL    |       |

| birth    | date          | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

5 rows in set

 

:修改字段age,将它放在最前面

 

mysql> alter table emp modify age int(3) first;

Query OK, 0 rows affected

Records: 0  Duplicates: 0  Warnings: 0

 

mysql> desc emp;

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

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

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

| age      | int(3)        | YES  |     | NULL    |       |

| ename    | varchar(10)   | YES  |     | NULL    |       |

| birth    | date          | YES  |     | NULL    |       |

| hiredate | date          | YES  |     | NULL    |       |

| sal      | decimal(10,2) | YES  |     | NULL    |       |

| deptno   | int(2)        | YES  |     | NULL    |       |

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

6 rows in set

 

<6>更加表名

mysql> alter table emp rename emp1;

Query OK, 0 rows affected

 

mysql> desc emp;

ERROR 1146 : Table 'javaworld.emp' doesn't exist

mysql> show tables;

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

| Tables_in_javaworld |

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

| emp1                |

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

1 row in set

 

 

 

DML(数据操纵语言)语句

1,插入记录

insert into emp(ename,hiredate,sal,deptno) values('zzzx1','2000-01-01','2000',1);

Query OK, 1 row affected

 

也可以不指定字段名,values中值的顺序需和字段名排列顺序一致

 

mysql> insert into emp values('lisa','2003-02-01','3000',2);

Query OK, 1 row affected

 

 

或者只对部分字段插入值

insert into emp(ename,sal) values('dony','1000');

Query OK, 1 row affected

 

查看表

mysql> select * from emp;

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

| ename | hiredate   | sal     | deptno |

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

| zzzx1 | 2000-01-01 | 2000.00 |      1 |

| lisa  | 2003-02-01  | 3000.00 |     2 |

| dony  | NULL         | 1000.00 | NULL   |

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

3 rows in set

 

也可一次插入多条记录,每条记录之间用逗号分隔

mysql> insert into dept values(5,'dept5'),(6,'dept6');

Query OK, 2 rows affected

Records: 2  Duplicates: 0  Warnings: 0

 

mysql> select * from dept;

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

| deptno | deptname |

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

|      5  | dept5    |

|      6  | dept6    |

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

2 rows in set

 

 

2,更新记录

empename”lisa”sal值从3000改为4000

mysql> update emp set sal=4000 where ename='lisa';

Query OK, 1 row affected

Rows matched: 1  Changed: 1  Warnings: 0

 

也可以同时更新多个表中的数据,

:同时更新emp表的字段saldept表的字段deptname

mysql> select * from emp;

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

| ename  | hiredate   | sal     | deptno |

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

| zzx    | 2000-01-01 | 100.00  |      1 |

| lisa   | 2003-02-01 | 200.00  |      2 |

| bjguan | 2004-04-02 | 100.00  |      1 |

| dony   | 2005-02-05 | 2000.00 |      4 |

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

4 rows in set

 

mysql> select * from dept;

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

| deptno | deptname |

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

|      1 | tech     |

|      2 | sale     |

|      5 | fin      |

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

3 rows in set

 

mysql> update emp a, dept b set a.sal=a.sal*b.deptno,b.deptname=a.ename where a.deptno=b.deptno;

Query OK, 3 rows affected

Rows matched: 5  Changed: 3  Warnings: 0

 

mysql> select * from emp;

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

| ename  | hiredate   | sal     | deptno |

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

| zzx    | 2000-01-01 | 100.00  |      1 |

| lisa   | 2003-02-01 | 400.00  |      2 |

| bjguan | 2004-04-02 | 100.00  |      1 |

| dony   | 2005-02-05 | 2000.00 |      4 |

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

4 rows in set

 

mysql> select * from dept;

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

| deptno | deptname |

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

|      1 | zzx      |

|      2 | lisa     |

|      5 | fin      |

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

3 rows in set

 

阅读(384) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~