MySQL学习总结2之对表的基本命令操作

 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)&rarr;浮点型。

 

<2>.字符型:★char&rarr;(定长),在数据库中占的空间不变; varchar&rarr;变长;★ text; longtext&rarr;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字段默认都是&rdquo;河南&ldquo;,命令如下:建表的命令应该是:

 

<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 '河南'/*添加默认约束地址为&rdquo;河南&ldquo;*/

);

 

<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;


你可能感兴趣的:(mysql,表的创建,表的约束条件)