mysql server mysql -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_dept3 show 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语句使用语句的形式显示出标的详细结构
转载于:https://blog.51cto.com/baojizsy/1546334