mysql servermysql -h localhost -u root -p //连接数据库 enterpasswd:  //键入密码>show databases; //输出数据库名表>create database test_db; //创建一个名字是test_db的数据库>use test_db; //进入test_db数据库>create table tb_emp1>(>id int(11),>name varchar(25),>deptid int (11),>salary float>);//创建一个数据库表,标明为tb_emp1,表中有4个字段,字段名id表示名单标号,字段名name表示员工名称,字段名deptid表示所在部门编号,字段名salary表示员工薪水>show tables; //输出数据库中的表>desc tb_emp1; //输出数据表中的字段名称//定义主键的方法//1.定义列的同时指定主键>create table tb_emp2>(>id int(11) primary key,>name varchar(25),>deptid int(11),>salary float>);//创建一个数据库,标明为tb_emp2,表中有4个字段,字段名id表示名单编号且定义为主键//主键能够唯一表示表中的一条记录,可以结合外键来定义不同的数据表之间的关系,并且可以加快数据库的查询速度>desc tb_emp2; //使用desc显示数据表中列的名称,id字段定义为PRI//2.定义完所有列后定义主键>create table tb_emp3>(>id int(11),>name varchar(25),>deptid int(11),>salary float,>primary key(id)>);//效果同上//设置多字段联合主键  一个确定不了唯一,需要多个组合来确定唯一。>create table tb_emp4>(>id int(11),>name varchar(25),>deptid int(11),>salary float,>primary key(id,deptid)>);>desc tb_emp4; //查看发现id和deptid字段都被标记为主键 称为表tb_emp4的联合主键//外键是用来在两个表之间建立连接,可以是一个或者多个,一个表的外键可以是空值,若不是空值,则必须与另外一个表的主键键值//外键是表的一个字段,可以不是本表的一个主键,但必须对应于另外一个表的主键//定义外键后,不允许删除在另一个表中具有关联关系的行,外键的作用是保持数据的一致完整性。部门表tb_dept的主键是id,在员工表tb_emp5中有一个键deptid与这个id关联>create table tb_dept>(>id int(11) primary key,>name varchar(22) not null, //使用了非空约束字段标志not null>location varchar(50)>);//新建一个部门表,id表示部门号,name表示部门名称,location表示部门位置>create table tb_emp5>(>id int(11) primary key,>name varchar(25),>deptid int(11),>salary float,>constraint fk_emp_dept1 foreign key(deptid) references tb_dept(id)>);//新建一个员工信息表tb_emp5,在该表中添加名称为fk_emp_dept1的外键约束,外检名称为deptid,其依赖于表tb_dept1的主键id//模板 constraint 外键名 foreign key(字段名1) references 主表名(主键1)//字表与父表//相关表之间的联系,子表(从表)的外键必须关联父表(主表)的主键,且关联字段的数据类型必须匹配>create table tb_emp6>(>id int(11) primary key,>name varchar(25) not null >deptid int(11),>salary float,>constraint fk_emp_dept2 foreign key(deptid) references tb_emp6(id)>);//定义非空字段name插入值不能为空//唯一性约束(unique)要求该列唯一,允许为空,但只能出现一个空值//字段唯一性约束定义方法1>create table tb_dept2>(>id int(11) primary key,>name varchar(22) unique,>location varchar(50)>);>desc tb_dept2  //显示字段键值为UNI//字段唯一性约束定义方法2>create table tb_dept3>(>in int(11) primary key,>name varchar(22),>location varchar(50),>constraint sth unique(name)>);>desc tb_dept3show create table 表名 //查看表中外键约束名称//默认约束用来指定列默认的值。如果插入一条新的记录是没有为这个字段复制,那么系统会自动为这个字段赋默认值。//字段名 数据类型 default 默认值>create table tb_emp7>(>id int(11) primary key,>name varchar(25) not null,>deptid int(11) default 11111,  //设置员工所在的部门编号默认11111>salary float,>constraint fk_emp7_dept foreign key(deptid) references tb_dept(id)>);>desc tb_emp7 //发现tb_emp7表中deptid列的default键值为11111//在主键中添加AUTO_INCREMENT关键字可以使系统自动生成主键值,且每增加一条记录,主键值加1 该关键字可以应用于任何整数类型>create table tb_emp8>(>id int(11) primary key auto_increment,>name varchar(25) not null,>deptid int(11) default 11111,>salary float,>constraint fk_emp8_dept foreign key(deptid) references tb_dept(id)>);>desc tb_emp8 //tb_emp8表中的deptid列default键值为11111,id列Extra键值为auto_increment//下面我们来测试一下//首先我们现在tb_dept表中添加一个部门id为11111的记录,否则在tb_emp8中插入记录时会因为缺少默认11111的部门id的外键值而连接出错>insert into tb_dept(id,name,location)>values(11111,'server','shaanxi,china');>insert into tb_emp8(name,salary)>values('frank',6000),('tom',5600),('grace',5900);//下面我们用select显示表中所有记录 结果可以看到id值自动增加>select * from tb_emp8 //我们可以查看mysql中变量的值>show variables like '%xxx%'; //查看session会话变量的值 可以查看auto_increment变量值>show global variables like '%xxx%'; //查看全局变量的值//查看表基本结构语句>describe tb_emp8;>desc tb_emp8;//表基本结构极端解释//NULL :该列是否可以存储NULL值,可以为YES,不也以为NO//Key:表示该列是否可以存储NULL值,PRi表示该列是表主键的一部分,UNI表示该类是UNIQUE索引的一部分,MUL表示在列中某个给定值允许出现多次//Default:表搜狐死该列是否有默认值,如果有的话是多少//Extra:表示可以获取的与给定列有关的附加信息,例如AUTO_INCREMENT等//查看表详细结构语句>show create table tb_emp8\G;//增加\G参数是显示效果整齐//区别 desc语句使用表格的形式显示出表的基本结构 show create table语句使用语句的形式显示出标的详细结构