1.数据的存储方式(表属性的操作)
1.1 建表前思考的问题
a.表名
b.表里包含的数据类型(CHAR(定长字符),VARCHAR(不定长字符),NUMBER(数值),DATE(日期和时间),BLOB(大数据集),直义字符串,自定义类型)
c.构成主键的字段
d.每个字段的长度
e.哪些字段可以为NULL
1.2CREATE TABLE 语句
基本语法:
CREATE TABLE table_name ( field1 data_type [ not null ], field2 data_type [ not null ], field3 data_type [ not null ], field4 data_type [ not null ]);1.3 ALTER TABLE 命令
(修改和删除表时,如果使用了RESTRICT选项,且表被视图或约束所引用,则返回错误。如果使用了CASCADE,且全部引用试图和约束都会被删除)
基本语法:
ALTER TABLE table_name [restrict|cascade] [change_style];a.增加属性
ALTER TABLE table_name ADD column_name data_type [not null];b.删除属性
ALTER TABLE table_name DROP COLUMN column_name;c.修改属性名
ALTER TABLE table_name CHANGE column_name new_name data_type;d.修改属性的数据类型
ALTER TABLE table_name MODIFY column_name data_type;e.从现有表新建另一个表
CREATE TABLE new_table_name AS SELECT [*[COLUMN1,COLUMN2]] FROM table_name [WHERE];1.4 删除表
DROP table_name [restrict|cascade];1.5查看表
DESC table_name;1.6 测试代码
//建表 create table student_tbl (id char(9), sex varchar(5), birthday year, Chinese integer(3), Math integer(3)); //增加English属性 alter table student_tbl add English integer(3); //删除sex属性 alter table student_tbl drop column sex; //修改属性名id 为ID alter table student_tbl change id ID char(9); //修改birthday属性数据格式为date alter table student_tbl modify birthday date; //复制student_tbl到新表class1 create table class1_tbl as select * from student_tbl; //查表 desc student_tbl;
2.完整性约束
2.1 主键约束
主键:表中一个或多个用于实现记录唯一性的字段(属性)。
实现方式:
//在字段的定义阶段将其指定为主键 column_name data_type [null] [primary key] //在字段定义之后再定义主键 CREATE TABLE table_name ( column1 data_type [ not null ], column2 data_type [ not null ], column3 data_type [ not null ], column4 data_type [ not null ], primary key ([column1,column2])); //给表中属性创建主键约束 ALTER TABLE TABLE_NAME ADD PRIMARY KEY (COLUMN); ALTER TABLE TABLE_NAME ADD CONSTRAINT PRIMARY KEY (COLUMN); //撤销主键约束 ALTER TABLE TABLE_NAME DROP PRIMARY KEY;*在修改属性时不可以创建复合主键,即只可以在定义属性时创建主键。
2.2 唯一性约束
实现方式:
//在字段的定义阶段创建UNIQUE约束 column_name data_type [null] [unique] //在字段定义之后再创建UNIQUE约束 CREATE TABLE table_name ( column1 data_type [ not null ], column2 data_type [ not null ], column3 data_type [ not null ], column4 data_type [ not null ], unique ([column1,column2])); //给表中属性创建UNQIUE约束 ALTER TABLE TABLE_NAME ADD UNIQUE (COLUMN); ALTER TABLE TABLE_NAME ADD CONSTRAINT UNIQUE (COLUMN); //撤销UNIQUE约束 ALTER TABLE TABLE_NAME DROP INDEX COLUMN;2.3 外键约束
外键:子表里的一个字段,引用父表里的主键。
实现方式:
//在字段定义之后再创建外键 CREATE TABLE table_name ( column1 data_type [ not null ], column2 data_type [ not null ], column3 data_type [ not null ], column4 data_type [ not null ], FOREIGN KEY (COLUMN) REFERENCES OTHER_TBL(COLUMN)); //给表中属性创建外键约束 ALTER TABLE TABLE_NAME ADD FOREIGN KEY (COLUMN) REFERENCES OTHER_TBL(COLUMN); //撤销外键约束 //1.首先查看建表语言,得到外键名 show create table_name account; //2.然后删除 ALTER TABLE Orders DROP FOREIGN KEY fk_PerOrders2.4 NOT NULL 约束
直接在定义里
2.5 检查约束
用于检查输入到特定字段的数据的有效性。、
实现方式:
//在字段的定义阶段创建CHECK约束 column_name data_type [null] [ c)] //在字段定义之后再创建CHECK约束 CREATE TABLE table_name ( column1 data_type [ not null ], column2 data_type [ not null ], column3 data_type [ not null ], column4 data_type [ not null ], CONSTRAINT chk_Person CHECK (column1>0 AND column1='***')); //给表中属性创建CHECK约束 ALTER TABLE Persons ADD CHECK (Id_P>0); ALTER TABLE Persons ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes'); //撤销CHECK约束(没成功) ALTER TABLE Persons DROP CHECK chk_Person;
3. MySQL查看数据库和表的信息
//查看所有数据库 SHOW DATABASES; //选择数据库 USE DB_NAME; //查看当前使用的数据库 SELECT DATABASE(); //查看数据库里有那些表 SHOW TABLES; //查看表里有哪些属性 DESC TABLE_NAME; //删除数据库 DROP DATABASE DB_NAME;