MYSQL学习

设计表逻辑--表关联

首先学习如何有逻辑地设置一套表系统

举例说明:

表一

序号        学号        日期1        日期2

1            kb2101     出勤           缺勤

2            kb2102     出勤           出勤

..              ....           ...               ...

关联姓名信息,展示姓名的详细信息(依赖关系:表一中学号列信息依赖于表二)

表二

学号        姓名        课程        身份证号

kb2101    张三        大数据     320xxxxxxx

kb2102    李四        Java        320xxxxxxx

...             ....            ....                ..........

主键约束

primary key 主键唯一不重复,表示该字段是该表的唯一标识,例如:上述案例中学生的学号能唯一确定一名学生,可设置为主键.(并可以设置成自增列)

primary key 可以直接跟在字段后面也可以在字段写完后添加在最后;举例

mysql>create table if not exists `newallstu` (`stuno` int(10) auto_increment,`stuname` varchar(255), primary key(`stuno`) );等同于mysql>create table if not exists `newallstu` (`stuno` int(10) primary key auto_increment,`stuname` varchar(255) );

外键约束

用于在两表间建立关系,需要指定引用主表的哪一个字段,在插入或更新表的数据时,数据库将自动检查更新的字符值是否符合外键约束的限制,如果不符合约束要求,则更新将会失败

注意

1)InnoDB支持外键但MyISAM不支持,

2)作为外键的字段要求在主表中是主键(单字段主键)

自动递增

auto_incremen

设置该列为自增字段.,默认每条自增1;

通常用来设置主键,且为整数类型;

可设置初始值和步长;

举例

create table `student`(studentno int(10) primary key auto_increment,loginpwd varchar (20) ,studentname varchar (20) ,sex int(1) ,gradeid int (10),phone varchar (50) ,address varchar (255),borndate datetime ,email varchar (50),identitvcard varchar (18) ,
constraint FK_gradeid foreign key (gradeid) references grade(grideid));

其中gradeid依赖于表gradeid,使用constraint FK_gradeid foreign key (gradeid) references grade(grideid));进行外键关联.

注意

使用外键关联的字段在alter操作中会禁用修改该字段名或者删除等操作,必须先解开外键关联,才能对该列名(change/drop)操作,否则就会修改或者删除不成功,所以在未来工作中,主外键关联很少用到,会增加调试工作难度.

删除外键操作

alter table 表名 drop foreign key FK_外键名;

查找表信息

一般查询表的操作

select * from table ;(不推荐)

select  t.name ,t.age from table as t;(起别名,方便table.fields(列表的列字段)的查询,起别名可以省略as 替换成空格)

等效于 select name ,age from table ;(不起别名)

select t.name as n,t.age as a from table as t;等效于select t.name  n,t.age  a from table  t;(省略as)

等效于 select name as n,age as a from table ;(省略别名)

常用where语句

where语句后面加的都是真假判断(逻辑运算结果为真则输出为假则过滤掉)

逻辑判断条件用and或or连接;

举例

mysql> select * from result where studentno=1002 and subjectno=2;

mysql> select * from result where studentno=1002 or subjectno=2;

mysql> select * from result where studentresult<=90 and studentresult>=80;

mysql> select * from result where studentresult between 80 and 90;(between包含边界)

逻辑关系符号运算(基本同java逻辑判断,除了"="号和"=="的区别.java"=="是逻辑判断符号)

mysql> select * from result where studentresult!=100 && subjectno=1;

is null和is not null;

mysql> select * from teacher where name is not null;

mysql> select * from teacehr where name is null;

like关键词和%和_的用法

搜索词%(表示以搜索词开头)

%搜索词(表示以搜索词结尾)

%搜索词%(表示搜索词在中间)

搜索词_(精确查找,一个"_"代表一个字符)

in关键词用法

in(匹配对象)

select score from result where score in (90,95,100);


 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

地球在逃人员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值