准备
DROP TABLE IF EXISTS `grade`;
CREATE TABLE `grade` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`grade` int(11) NOT NULL,
PRIMARY KEY (`no`)
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8;
insert into `grade`(`no`,`grade`) values (1,90),(2,80),(3,70);
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`no` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(20) NOT NULL,
PRIMARY KEY (`no`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
insert into `student`(`no`,`name`) values (1,'a'),(2,'b'),(3,'c'),(4,'d');
数据库中语句分为四类:
1.数据定义语言(DDL)
2.数据查询语言(DQL)
3.数据操作语言(DML)
4.数据控制语言(DCL)
数据增删改
插入数据
INSERT INTO student(NO,NAME) VALUES(5,"e") ;
删除
如果要清空表中的所有记录,可以使用下面的两种方法:
delete from student
truncate table student
删除某一条数据: delete from student where student.no = 5
delete ,truncate , drop 区别:
delete 是dml语句,操作会放到rollback segement中,事务提交之后才生效,如果有相应的触发器,执行的时候将被触发.而且 可以附带条件,更加灵活.
truncate和drop
两个都是ddl语句,操作立即生效,原数据不放到rollback segment中,不能回滚,操作不会触发trigger
速度(一般情况下) : drop > truncate > delete
数据修改
update student set student.name = "e" where student.no = 4
表字段操作
字段增加
alter table xxx(表名) add xxx(字段名) (字段类型)
字段修改
alter table xxx(表名) change xxx(旧字段名) xxx(新字段名) (字段类型)
字段删除
alter table xxx(表名) drop colum xxx(字段名)
数据查询(外连接 内连接)
内连接:
例子: select * from student,grade where student.no = grade.no
外连接: 分左外连接 和 右外连接
比如我们现在有两张表
第一个表名为 grade 规定为左表 第二个表名为student 规定为右表
左连接:SELECT * FROM grade LEFT JOIN student ON grade.no = student.no
可以看到左边表有的数据一定会显示 而右边表的数据则有些不会显示
右连接:SELECT * FROM grade RIGHT JOIN student ON grade.no = student.no
左边表没有的数据 而右边表有 则会把左边表的数据变为NULL 右边表的数据完整输出