MySQL学习笔记

来源:互联网 发布:作业调度算法 编辑:程序博客网 时间:2024/06/06 02:26
2014/1/8
今天尝试用DOS方式执行了许多MySQL的命令,顿然命令行的操作速度比GUI方式大很多,学到了不少东西,总结关键的几点如下;
1.建议含有外键约束的两张表worker,department.


create table department(d_id int(4) primary key auto_increment,
d_name varchar(10)
);


create table worker(id int(4) primary key auto_increment,
name varchar(20) not null,
d_id int(4) not null,
constraint worker_fk foreign key(d_id)
references department(d_id)
);


个人理解:worker表里除了自己的主键外还有一个外键,它定义于department,故称d_id是department的主键,是worker的外键。


定义约束的语法:constraint 约束名 foreign key(字段名) references 其他表(字段名)


2.显示一张表的结构有两种方法 describe table或者 show columns from table,其中第二种方法执行速度更快
3.修改字段birthday到sex字段前的语法为:alter table teacher modify birthday datetime after name(name开始是在sex之前)
这里注意birthday 的数据类型 datetime不能缺少!!


4.查询一类事物所属的类型的种类,比如所有记录都有type字段:可以用 select distinct type from table;
5.table1.name = table2.name 此处的等号就是传说的等值连接;


2014/1/11
1.修改表字段名称 ALTER TABLE tb_name 
CHANGE COLUMN name name1 VARCHAR(20) NOT NULL ;


2.如何设置数据库编码格式 set names utf8
3.如何增加外键 


ALTER TABLE `test`.`tb_worker` 
ADD CONSTRAINT `worker_fk1`
  FOREIGN KEY (`id`)
  REFERENCES `test`.`tb_admin` (`id`)
  ON DELETE NO ACTION
  ON UPDATE NO ACTION;


4.获取目前的时间函数、逆序函数、取小数点后四舍五入函数、取小数点后不四舍五入函数
依次为CURRENT()或CURRENT_TIME()、REVERSE()、ROUND(x,y)、TRUNCATE(x,y)
5.左连接和右连接的理解。
左连接保留左边表中不符合条件的记录,同时用NULL填充属于右表中的字段。(所谓不符合条件,即连接的字段左表有,右表没有)
6.select ANY 和 ALL区别
ANY是只要其中任何一个满足条件即可。ALL是指全部都要满足条件。
7.比通配符更强大的工具---正则表达式。
2014/1/12
1.穿件存储过程时,如果有begin和end的嵌套,则每个end后面必须加“;"号。
2.全局变量即会话变量,前面必须有@号
3.局部变量需要声明后再使用,会话变量不声明即可使用。
4.游标的理解。
5.循环的使用while loop repeat。其中repeat比较特殊,至少执行一次循环体。存储过程不支持for循环
6.触发器的使用。触发器目前可以应用到日志表的操作上,当执行某一个操作时,可以通过触发器向日志表中插入相关的时间、操作类型等信息。
注意:一张表在相同时间、相同的操作类型只能创建一个触发器,如after insert触发器只能创建一个。






print '删除该学生绩点信息中...';
delete from stud_jd WHERE stud_jd.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生平均分信息中...';
delete from stud_pjf WHERE stud_pjf.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生贫困等级信息中...';
delete from stud_pkdj WHERE stud_pkdj.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生入党信息中...';
delete from stud_rd WHERE stud_rd.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生学生组织任职信息中...';
delete from stud_rz WHERE stud_rz.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生助学信息中...';
delete from stud_zx WHERE stud_zx.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生助学金信息中...';
delete from stud_zxj WHERE stud_zxj.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生家庭信息中...';
delete from stud_fam WHERE stud_fam.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生备注信息中...';
delete from stud_comment WHERE stud_comment.Sno in( SELECT Sno FROM deleted);
print '删除成功';

print '删除该学生班级任职信息中...';
delete from stud_classjob WHERE stud_classjob.Sno in( SELECT Sno FROM deleted);
print '删除成功';
0 0
原创粉丝点击