1.表的基本概念:
<1>.在数据库中每个表都有一个唯一的名字,称为表名。
<2>.表是行和列来组成:每个列中需要定义列名和数据类型,行用来表示数据库中的一条记录。
<3>.主键:(★唯一;主键不能为null)一列或者一组列,能够唯一标示表中的每一行。
(1.)在设计表时总要定义表的主键;
(2.)表的主键设计策略:①任意两行都不具备相同的主键值;
②每行都必须具有一个主键值,主键不能为空;
③主键应该和业务无关,不更改,不重用;
2.表的创建命令:
<1>.创建一个数据库: create database testdb;
<2>.使用该数据库: use testdb;
<3>.在该数据库中创建一个表t_user:
create table t_user(
id int not null primary key auto_increment, /*主键,自动增长,不能为null*/
username varchar(20) not null, /*用户名,varchar类型,不能为null*/
password varchar(20) not null, /*密码,varchar类型,不能为null*/
age int not null, /*年龄,int类型,不能为null*/
address varchar(20) /*地址,varchar类型,可以为null*/
);
3.删除表t_user: drop table t_user;
4.删除数据库testdb: drop database testdb;
5.数据类型:
<1>.数值型:int , decimal(4,2)→浮点型。
<2>.字符型:★char→(定长),在数据库中占的空间不变; varchar→变长;★ text; longtext→300字;
<3>.日期型:Date, Time, Year, DateTime, TimeStamp;
6.联合主键的使用:
eg:创建一个表t_student
create table t_student(
id int not null,
pid int not null,
name varchar(20) not null,
primary key(id,pid) /*这样id,pid就成了联合主键了!!此行必须是最后一行,不能写auto_increment;*/
);
7.数据库的约束条件的使用:
<1>.主键约束;
<2>.默认约束:比如给t_user表中的address字段默认都是”河南“,命令如下:建表的命令应该是:
<3>.唯一约束:比如给t_user表中的username字段添加唯一约束
create table t_user(
id int not null primary key auto_increment,
username varchar(20) not null unique, /*给用户名添加唯一约束*/
password varchar(20) not null,
age int not null,
address varchar(20) default '河南'/*添加默认约束地址为”河南“*/
);
<4>.添加外键约束:比如给t_student的pid字段添加一个t_user的外面约束,命令如下:
alter table t_student add constraint fk_student_user foreign key(pid) references t_user(id);
说明:★fk_student_user为约束名!!t_user(id)是必须的,id必须是t_user表的主键!!★
8.对表的更改:
<1>.添加列:如给t_student表添加一列表示学生所在的学校
alter table t_student add school(列名) varchar(20);
注意事项:★添加列时不能包含 not null ,因为alter table 只允许添加可包含空值或者指定了default定义的列;★
<2>.删除列:如把t_student表中的school这一列删除:
alter table t_student drop column school;
<3>.某个表建成以后,给其某列添加一个唯一性:如给t_student表中的name列添加唯一性:
alter table t_student add constraint UQ_student unique(name);
说明:unique();括号里应该添加唯一性的列名!!
<4>.重命名表:如让t_student这个表名改成t_student1
rename table t_student(旧表名) to t_student1(新表名);
<5>.给表的某列添加一个默认约束:如给t_user的age列添加默认约束为:21
alter table t_user alter column age set default 21;
============================= 2015年06月05日-add-by-han ===============================
数字数据类型:
MySQL使用所有标准的ANSI SQL数值数据类型,所以如果与MySQL不同的数据库系统这些定义会看起来也熟悉。下面的列表显示了常见的数值数据类型和它们的说明。
INT - 一个正常大小可以有符号或无符号的整数。如果带符号的,允许的范围是-2147483648到2147483647。如果没有符号,允许的范围是从0到4294967295。可以指定一个宽度达11位数字。
TINYINT -一个非常小可以有符号或无符号的整数。如果带符号的,允许的范围是从-128到127。如果没有符号,允许的范围是从0到255。可以指定一个4位数字的宽度。
SMALLINT - 一个小可以有符号或无符号的整数。如果带符号的,允许的范围是从-32768到32767。如果没有符号,允许的范围是从0到65535。可以指定一个宽度为5位数字。
MEDIUMINT - 一个中等大小的,可以有符号或无符号的整数。如果带符号的,允许的范围是-8388608到8388607。如果没有符号,允许的范围是从0到16777215。可以指定一个宽度达9位数。
BIGINT - 一个大的,可以有符号或无符号的整数。如果带符号的,允许的范围是-9223372036854775808到9223372036854775807。如果没有符号,允许的范围是从0到18446744073709551615。可以指定一个宽度达11位数字。
FLOAT(M,D) - 一个浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为10,2,其中2为小数位数和10是总人数的数字(包括小数)。小数精度可以到24位的持股量。
DOUBLE(M,D) -双精度浮点数字,不能是无符号的。可以定义的显示长度(M)和小数(D)的数量。这不是必需的,将默认为16.4,其中4个是小数位数。十进位至53位的双精度可以去。 REAL是双的代名词。
DECIMAL(M,D) - 一个解包浮点数字,不能是无符号的。每个十进制在解压缩小数,对应一个字节。定义的显示长度(M)和小数点后的位数(D)是必需的。 NUMERIC是DECIMAL的代名词。
MySQL的日期和时间数据类型有:
DATE - 日期格式YYYY-MM-DD,1000-1-1和9999-12-31之间。例如1973年12月30日将存储为1973-12-30日。
DATETIME - 日期和时间的组合YYYY-MM-DD HH:MM:SS格式,在1000-1-1 00:00:00和9999-12-31 23:59:59。例如,1973年12月30号15:30:00将存储为1973-12-30 15:30:00.。
TIMESTAMP-1970年1月1日午夜,在2037年的某个时候之间的时间戳。这看起来像之前的DATETIME格式,不带连字符之间的数字,1973年12月30日下午3:30将被存储为19731230153000(YYYYMMDDHHMMSS)。
TIME - 存储HH:MM:SS格式的时间。
YEAR(M) - 储存年在2位或4位数字格式。如果长度指定为2(例如年(2)),年份可在1970到2069(70到69)。如果长度指定为4,年份可在1901到2155。默认长度为4。
虽然数字和日期类型有些相似,将存储的大部分数据将在字符串格式。下面列出了在MySQL中常用的字符串数据类型。
CHAR(M) - 一个固定长度的字符串的长度介于1到255个字符(例如CHAR(5)),向右填充到指定的长度与空间存储。定义的长度不是必需的,但默认值是1。
VARCHAR(M) - 可变长度的字符串的长度介于1到255个字符,例如VARCHAR(25)。当创建一个VARCHAR字段必须定义一个长度。
BLOB 或 TEXT - 字段的最大长度为65535个字符。 BLOB是二进制大对象“,是用来存储大量的二进制数据,如图像或其他类型的文件。字段定义为文本也持有大量的数据,两者之间的区别是存储的数据进行排序和比较是区分大小写的BLOB,并在文本字段不区分大小写。不指定BLOB或TEXT的长度。
TINYBLOB 或 TINYTEXT -一个BLOB或TEXT列,最大长度为255个字符。不能指定TINYBLOB或TINYTEXT长度。
MEDIUMBLOB 或 MEDIUMTEXT -一个BLOB或TEXT列,最大长度为16777215个字符。不能指定MEDIUMBLOB或MEDIUMTEXT的长度。
LONGBLOB 或 LONGTEXT -一个BLOB或TEXT列,最大长度为4294967295个字符。不能指定LONGBLOB或LONGTEXT的长度。
ENUM - 枚举,这是一种奇特的术语列表。当定义一个枚举,要创建一个列表项目的值必须被选中(或它可以是NULL)。例如,如果希望字段包含“A”或“B”或“C”,则ENUM定义为ENUM('A','B','C'),只有那些值(NULL)所能填充该字段。
=======================2015-06-12-add-=================================
导出数据
不是在mysql的命令行下面,而是在DOS命令下:
mysqldump -hlocalhost -uroot -proot mydb>C:/temp.sql
导入数据
在mysql命令中创建数据库。
或者在a.sql最上面,加入下面的命令:
create DATABASE mydb;
use mydb;
source C:/a.sql
删除主键:alter table t_user drop foreign key fk_student_cus;