Heim > Datenbank > MySQL-Tutorial > Mysql门徒(2):Mysql 查看、创建、更改 数据库和表_MySQL

Mysql门徒(2):Mysql 查看、创建、更改 数据库和表_MySQL

WBOY
Freigeben: 2016-06-01 13:31:05
Original
1099 Leute haben es durchsucht

bitsCN.com

一、一探究竟

我想看看有多少个数据库,有多少个表,以及表里有啥东西。那么你可以这样:

图形界面:

m6

命令:

查看多少个数据库:注意 后面带s

#查看SHOW DATABASES;
Nach dem Login kopieren

 

#查看表USE blog;SHOW TABLES;
Nach dem Login kopieren
#查看表中的列SHOW COLUMNS FROM auth_user;
Nach dem Login kopieren

m7

DESCRIBE auth_user;
Nach dem Login kopieren

describe 表名 是 show columns from 表名 的一种快捷方式。

 

二、修改mysql数据库密码

方法一:

使用phpmyadmin,直接修改Mysql库的user 表。或者使用Navicat for Mysql 直接修改连接属性。

方法二:使用mysqladmin

#cmd,运行DOS,cd到mysql的bin文件夹,然后执行如下D:/Mysql/bin>mysqladmin -u root -p password newPwd#Enter password:(在此输入原密码)#newPwd指的是新密码<br>然后打开mysql 直接输入新密码即可<br>
Nach dem Login kopieren

格式:mysqladmin -u用户名 -p旧密码 password 新密码。

更多详见:http://wenku.baidu.com/view/43db0b62ddccda38376bafff.html

 

三、创建数据库、表

SHOW语句找出服务器上当前存在什么数据库:

mysql是必需的,因为它描述用户访问权限,test数据库经常作为用户试身手的工作区。

访问数据库,使用use语句

注意USE,类似QUIT,不需要一个分号。(如果你喜欢,你可以用一个分号终止这样的语句;这无碍)。

创建数据库

mysql> CREATE DATABASE 库名;
Nach dem Login kopieren
mysql> USE 库名;mysql> CREATE TABLE 表名 (字段名 VARCHAR(20), 字段名 CHAR(1));
Nach dem Login kopieren

如:

#创建表use demo;create table pet(        name varchar(20),        #名字        owner varchar(20),       #主人        species varchar(20),     #种类        sex char(1),             #性别        birth date,              #出生日期        death date               #死亡日期)
Nach dem Login kopieren

为了验证你的表是按你期望的方式创建,使用一个DESCRIBE语句:

删除数据库:

mysql> DROP DATABASE 库名;
Nach dem Login kopieren

删除数据表:

mysql> DROP TABLE 表名;
Nach dem Login kopieren

将表中记录清空:

mysql> DELETE FROM 表名;
Nach dem Login kopieren

创建表(复杂形式):

#创建customer表:create table customers(    id int not null auto_increment,    name char(20) not null,    address char(50) null,    city char(50) null,    age int not null,    love char(50) not null default 'No habbit',    primary key(id))engine=InnoDB;<br>#SELECT last_insert_id();这个函数可以获得返回最后一个auto_increment值.#默认值:default 'No habbit',#引擎类型,多为engine = InnoDB,如果省略了engine=语句,则使用默认的引擎(MyISAM)
Nach dem Login kopieren

 更改表结构:

#增加一列alter table pet add des char(100) null;#删除alter table pet drop column des;
Nach dem Login kopieren

重命名表:

#重命名表rename table pet to animals;
Nach dem Login kopieren

 添加id字段

则可操作如下:

#添加id字段alter table pet add id int not nullprimary key auto_increment first;
Nach dem Login kopieren

增加外键:

实例参考:tech.ddvip.com/2007-05/118009486725743.html

假如某个电脑生产商,它的数据库中保存着整机和配件的产品信息。用来保存整机产品信息的表叫做 Pc;用来保存配件供货信息的表叫做Parts。在Pc表中有一个字段,用来描述这款电脑所使用的CPU型号;在Parts 表中相应有一个字段,描述的正是CPU的型号,我们可以把它想成是全部CPU的型号列表。很显然,这个厂家生产的电脑,其使用的CPU一定是供货信息表(parts)中存在的型号。这时,两个表中就存在一种约束关系(constraint)——Pc表中的CPU型号受到Parts 表中型号的约束。

表定义:

#partsCREATE TABLE parts (... 字段定义 ...,model VARCHAR(20) NOT NULL,... 字段定义 ...);#pcCREATE TABLE pc (... 字段定义 ...,cpumodel VARCHAR(20) NOT NULL,... 字段定义 ...};
Nach dem Login kopieren

既然存在在约束关系(constraint),那么就需要设置索引。

设置索引:

若要设置外键,在参照表(referencing table,即Pc表) 和被参照表 (referenced table,即parts表) 中,相对应的两个字段必须都设置索引(index)。

对Parts表:

ALTER TABLE parts ADD INDEX idx_model (model);
Nach dem Login kopieren

这句话的意思是,为 parts 表增加一个索引,索引建立在 model 字段上,给这个索引起个名字叫idx_model。

对Pc表也类似:

ALTER TABLE pc ADD INDEX idx_cpumodel (cpumodel);
Nach dem Login kopieren

事实上这两个索引可以在创建表的时候就设置。这里只是为了突出其必要性。

定义外键:

下面为两张表之间建立前面所述的那种“约束”。因为pc的CPU型号必须参照parts表中的相应型号,所以我们将Pc表的cpumodel字段设置为“外键”(FOREIGN KEY),即这个键的参照值来自于其他表。

ALTER TABLE pc ADD CONSTRAINT fk_cpu_modelFOREIGN KEY (cpumodel)REFERENCES parts(model);
Nach dem Login kopieren

第一行是说要为Pc表设置外键,给这个外键起一个名字叫做fk_cpu_model;

第二行是说将本表的cpumodel字段设置为外键;

第三行是说这个外键受到的约束来自于Parts表的model字段。

级联操作:

技术人员发现,一个月之前输入到 parts 表中的某个系列的 cpu (可能有很多款)的型号全都输错了一个字母,现在需要改正。我们希望的是,当 parts 表中那些 Referenced Column 有所变化时,相应表中的 Referencing Column 也能自动更正。

可以在定义外键的时候,在最后加入这样的关键字:

ON UPDATE CASCADE;
Nach dem Login kopieren

即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。

如果把这语句完整的写出来,就是:

ALTER TABLE pc ADD CONSTRAINT fk_cpu_modelFOREIGN KEY (cpumodel)REFERENCES parts(model)ON UPDATE CASCADE;
Nach dem Login kopieren

除了 cascade 外,还有 restrict(中文意思:限制;约束;限定 ),这里指(禁止主表变更)、SET NULL(子表相应字段设置为空)等操作。

那么我们在图形界面可以查看该表的结构:

 

四、 ALTER DATABASE语法

ALTER {DATABASE | SCHEMA} [db_name]    alter_specification [, alter_specification] ...alter_specification:    [DEFAULT] CHARACTER SET charset_name  | [DEFAULT] COLLATE collation_name
Nach dem Login kopieren

ALTER DATABASE用于更改数据库的全局特性。这些特性储存在数据库目录中的db.opt文件中。要使用ALTER DATABASE,您需要获得数据库ALTER权限。

CHARACTER SET子句用于更改默认的数据库字符集。COLLATE子句用于更改默认的数据库整序。数据库名称可以忽略,此时,语句对应于默认数据库。也可以使用ALTER SCHEMA。

 

五、ALTER TABLE语法

参考《Mysql 5.1手册 》13.1.2. ALTER TABLE语法

ALTER TABLE用于更改原有表的结构。例如,您可以增加或删减列,创建或取消索引,更改原有列的类型,或重新命名列或表。您还可以更改表的评注和表的类型。

您可以使用FIRST或AFTER col_name在一个表行中的某个特定位置添加列。默认把列添加到最后。您也可以在CHANGE或MODIFY语句中使用FIRST和AFTER。

 

 

bitsCN.com
Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage