mysql_study_3

时间:2022-05-19 16:19:50

代码:

CREATE DATABASE test_01;

CREATE DATABASE mysql_shiyan;

use mysql_shiyan;

CREATE TABLE department
(
dpt_name CHAR(20) NOT NULL,
people_num INT(10) DEFAULT '',
CONSTRAINT dpt_pk PRIMARY KEY (dpt_name)
); CREATE TABLE employee
(
id INT(10) PRIMARY KEY,
name CHAR(20),
age INT(10),
salary INT(10) NOT NULL,
phone INT(12) NOT NULL,
in_dpt CHAR(20) NOT NULL,
UNIQUE (phone),
CONSTRAINT emp_fk FOREIGN KEY (in_dpt) REFERENCES department(dpt_name)
); CREATE TABLE project
(
proj_num INT(10) NOT NULL,
proj_name CHAR(20) NOT NULL,
start_date DATE NOT NULL,
end_date DATE DEFAULT '2015-04-01',
of_dpt CHAR(20) REFERENCES department(dpt_name),
CONSTRAINT proj_pk PRIMARY KEY (proj_num,proj_name)
); CREATE TABLE table_1
(
l_1 INT(10) PRIMARY KEY,
l_2 INT(10),
l_3 INT(10)
); #INSERT INTO department(dpt_name,people_num) VALUES('\u90e8\u95e8',\u4eba\u6570); INSERT INTO department(dpt_name,people_num) VALUES('dpt1',11);
INSERT INTO department(dpt_name,people_num) VALUES('dpt2',12);
INSERT INTO department(dpt_name,people_num) VALUES('dpt3',10);
INSERT INTO department(dpt_name,people_num) VALUES('dpt4',15); #INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(\u7f16\u53f7,'\u540d\u5b57',\u5e74\u9f84,\u5de5\u8d44,\u7535\u8bdd,'\u90e8\u95e8'); INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(01,'Tom',26,2500,119119,'dpt4');
INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(02,'Jack',24,2500,120120,'dpt2');
INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(03,'Rose',22,2800,114114,'dpt3');
INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(04,'Jim',35,3000,100861,'dpt1');
INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(05,'Mary',21,3000,100101,'dpt2');
INSERT INTO employee(id,name,age,salary,phone,in_dpt) VALUES(06,'Alex',26,3000,123456,'dpt1'); #INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(\u7f16\u53f7,'\u5de5\u7a0b\u540d','\u5f00\u59cb\u65f6\u95f4','\u7ed3\u675f\u65f6\u95f4','\u90e8\u95e8\u540d'); INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(01,'proj_a','2015-01-15','2015-01-31','dpt2');
INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(02,'proj_b','2015-01-15','2015-02-15','dpt1');
INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(03,'proj_c','2015-02-01','2015-03-01','dpt4');
INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(04,'proj_d','2015-02-15','2015-04-01','dpt3');
INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(05,'proj_e','2015-02-25','2015-03-01','dpt4');
INSERT INTO project(proj_num,proj_name,start_date,end_date,of_dpt) VALUES(06,'proj_f','2015-02-26','2015-03-01','dpt2'); #INSERT INTO table_1 VALUES(01,11,12); INSERT INTO table_1 VALUES(02,22,89);
INSERT INTO table_1 VALUES(03,56,33);
INSERT INTO table_1 VALUES(04,34,37);
INSERT INTO table_1 VALUES(05,39,32);
INSERT INTO table_1 VALUES(06,90,33);

删除数据库

DROP DATABASE test_01;

改表的名字

RENAME TABLE 原名 TO 新名字;

ALTER TABLE 原名 RENAME 新名;

ALTER TABLE 原名 RENAME TO 新名;

删除表 :DROP TABLE table_2;

对表结构的删除

这条语句其实不只可用于重命名一列,准确地说,它是对一个列做修改(CHANGE) :

ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;

注意:这条重命名语句后面的 “数据类型” 不能省略,否则重命名失败。

对一列的修改(即对表结构的修改)

3.3.1 增加一列

在表中增加一列的语句格式为:

ALTER TABLE 表名字 ADD COLUMN 列名字 数据类型 约束;
或:
ALTER TABLE 表名字 ADD 列名字 数据类型 约束;

现在 employee 表中有 id、name、age、salary、phone、in_dpt 这6个列,我们尝试加入 height (身高)一个列并指定DEFAULT 约束:

ALTER TABLE employee ADD height INT(4) DEFAULT 170;

mysql_study_3

可以发现:新增加的列,被默认放置在这张表的最右边。如果要把增加的列插入在指定位置,则需要在语句的最后使用AFTER关键词(“AFTER 列1” 表示新增的列被放置在 “列1” 的后面)。

提醒:语句中的 INT(4) 不是表示整数的字节数,而是表示该值的显示宽度,如果设置填充字符为 0,则 170 显示为 0170

比如我们新增一列 weight(体重) 放置在 age(年龄) 的后面:

ALTER TABLE employee ADD weight INT(4) DEFAULT 120 AFTER age;

mysql_study_3

上面的效果是把新增的列加在某位置的后面,如果想放在第一列的位置,则使用 FIRST 关键词,如语句:

ALTER TABLE employee ADD test INT(10) DEFAULT 11 FIRST;

效果如下:

mysql_study_3

3.3.2 删除一列

删除表中的一列和刚才使用的新增一列的语句格式十分相似,只是把关键词 ADD 改为 DROP ,语句后面不需要有数据类型、约束或位置信息。具体语句格式:

ALTER TABLE 表名字 DROP COLUMN 列名字;

或: ALTER TABLE 表名字 DROP 列名字;

我们把刚才新增的 test 删除:

ALTER TABLE employee DROP test;

mysql_study_3

3.3.3 重命名一列

这条语句其实不只可用于重命名一列,准确地说,它是对一个列做修改(CHANGE) :

ALTER TABLE 表名字 CHANGE 原列名 新列名 数据类型 约束;

注意:这条重命名语句后面的 “数据类型” 不能省略,否则重命名失败。

当原列名和新列名相同的时候,指定新的数据类型或约束,就可以用于修改数据类型或约束。需要注意的是,修改数据类型可能会导致数据丢失,所以要慎重使用。

我们用这条语句将 “height” 一列重命名为汉语拼音 “shengao” ,效果如下:

ALTER TABLE employee CHANGE height shengao INT(4) DEFAULT 170;

mysql_study_3

3.3.4 改变数据类型

要修改一列的数据类型,除了使用刚才的 CHANGE 语句外,还可以用这样的 MODIFY 语句:

ALTER TABLE employee CHANGE height shengao INT(4) DEFAULT 170;

再次提醒,修改数据类型必须小心,因为这可能会导致数据丢失。在尝试修改数据类型之前,请慎重考虑。

对表的内容修改

3.4.1 修改表中某个值

UPDATE 表名字 SET 列1=值1,列2=值2 WHERE 条件;
UPDATE employee SET age=21,salary=3000 WHERE name='Tom';

mysql_study_3

注意:一定要有 WHERE 条件,否则会出现你不想看到的后果

3.4.2 删除一行记录

删除表中的一行数据,也必须加上 WHERE 条件,否则整列的数据都会被删除。删除语句:

DELETE FROM 表名字 WHERE 条件;

我们尝试把 Tom 的数据删除:

DELETE FROM employee WHERE name='Tom';

mysql_study_3



相关文章