一、外键约束

1、当一张表中需要引用另一张表中的主键时,就需要使用外键。

2、关联主键的方式有两种。第一种是在建表的时候添加外键约束(不建议);第二种方式是通过ALTER语句添加外键约束。

(1)方式一

   过于复杂,操作意义不大

(2)方式二

  如下例子所示:将students表的gradeid字段与grade表的gradeid进行约束;

ALTER TABLE `student`
ADD CONSTRAINT `FK_gradeid` FOREIGN KEY(`gradeid`) REFERENCES `grade`(`gradeid`);

3、有外键约束的表,不能直接删除。

4、上述两种方式建立的都是物理外键,是属于数据库级别的外键,一般不建议使用。

5、工程中使用外键的方式

  数据库只作为存数据库的载体,当需要使用外键的时候,就通过程序实现。这样可以避免约束过多带来耦合的问题。

 

二、 DML语言

1、数据库的意义:数据存储、数据管理

2、DML语言:数据库操作语言。包括:

  • insert(插入)
  • update(修改)
  • delete(删除)

3、insert语句

(1)单行插入

  注意:插入的字段用 ` ` 引用起来,values中的值用 ' ' 引用起来;

INSERT INTO `newstaff` (`name`,`speak`,`email`) VALUES ('qq','en','qqq@qq.com');

(2)多行插入

  多行插入即在values中用括号和逗号将每条数据引用起来;

  

INSERT INTO `newstaff` (`name`,`speak`,`email`) VALUES ('qq','en','qqq@qq.com'),('bb','en','bb@bbb.com');

  注意:字段名如果省略,则values中的值必须一一对应!

 

4、update语句

(1)带条件修改

  注意:where的条件语句可以使用:>、<、<>(不等于)或!=、=、between..and ..、AND、OR等操作符。

UPDATE `newstaff` SET NAME='马云' WHERE id='1'; 

(2)不带条件的修改

  如果不带条件则代表将数据库中所有的值都进行修改。一般不要这样操作。

UPDATE `newstaff` SET `name`='马云'; 

 (3)修改多个值。即通过逗号分隔多个需要修改的字段。

UPDATE `newstaff` SET `name`='马云',`email`='qqq.@163.com' WHERE id='1'; 

 (4)value可以是个具体的值,也可以是一个变量。

UPDATE `newstaff` SET `name`=DATETIME,`email`='qqq.@163.com' WHERE id='1'; 

 

5、delete语句

(1)delete语法

DELETE FROM `newstaff` WHERE id='1';

(2)truncate删除

TRUNCATE `newstaff`;

  delete和truncate的区别

  • delete清空表的时候,不会将自增计数变量清零,即意味着表中下一个插入的数据,会在清零之前的数据基础上自增;
  • truncate清空表的时候,会将自增计数变量清零,即清空之后重新计数;  

(3)delete的特点

  • 当表的引擎是InnoDB时,如果使用delete清零,当mysql重启之后,计数变量依然会清零,这是因为InnoDB的计数变量是存在内存中的
  • 当表的引擎是MyISAM时,使用delete清零,不管mysql是否重启,计数变量都不会清零,这是因为MyISAM的计数变量是存在硬盘中的

 

三、DQL语言

1、DQL即查询语句

2、简单的指定查询

select `studenteNo`,`studentName` FROM student where id='1';

3、别名查询

select `studenteNo` as 学号,`studentName` as 学生姓名 FROM student as s where i=10

 

4、使用函数查询

select concat('姓名',`studenteNo`) as 新名字 FROM student;

函数concat(a,b)作用:将字段b的值拼接到字符a后面,作为结果返回。

                 

 

 5、去重查询

select distinct `studentNo` from result;

  将返回的`studentNo`的数据进行去重;

 6、查询数据库版本信息

  select version();

7、数学计算

  将计算结果加1,并作为计算结果。

select `studentNo`,`studentReult`+1 as '提分后' from result;

  select语句可以进行数学计算;

select 100*3-1 as 计算结果;

 

8、where查询的特殊用法

(1)BETWEEN ... AND....

 查询分数在50到100之间的的学号;

select studentNo from result where score between 50 and 100; 

 

(2)where语句支持逻辑运算符,包括“与”、‘或’、‘非’

 

(3)模糊查询

  • like

  查询名字以“李”开头的学生名字。%表示若干个字符,_表示一个字符。

select `studentsName` from students where `studentsName` like '李%'
  • in
select `studentsName` from students where `studentsName` in ('小明','小华','小鹏);
  • null和not null

 

#本章使用的sql语句

1、添加外键
  ALTER TABLE `当前表名`
  ADD CONSTRAINT `FK_当前表需要添加约束的字段名` FOREIGN KEY(`当前表需要添加约束的字段名`) REFERENCES `被引用表名`(被引用字段名);

2、insert 语句
  (1)单行插入
    insert into 表名([字段名1,字段名2]) values('值1','值2');
      []代表可选项,实际写的是去掉[];可以不写,如果不写则代表按照字段顺序逐个写入values中的值;
  (2)多行插入
    
insert into 表名([字段名1,字段名2]) values('值1','值2'),('值1','值2');
      注意:使用 () 和 , 将多笔记录进行区分
3、update语句
  (1)带条件修改
  update `表名` set `字段名`=`修改之后的值` where 条件;

  (2)不带条件修改
  update `表名` set `字段名`=`修改之后的值`;
4、delete语句
  (1)delete from `表名` [条件]; --不会清空计数变量
  (2)truncate `表名`; --会清空计数变量

5、select语句

(1)别名查询
  
select `studenteNo` as 学号,`studentName` as 学生姓名 FROM student as s where i=10;
(2)使用函数查询
  
select concat('姓名',`studenteNo`) as 新名字 FROM student;
(3)去重查询
  
select distinct `studentNo` from result;
(4)查询数据库版本
  select version();
(5)between and 查询;
  
select studentNo from result where score between 50 and 100;
(6)like查询
  
select `studentsName` from students where `studentsName` like '李%'; --将所有以李开头的名字都查出来;
  select `studentsName` from students where `studentsName` like '李_'; --将所有以李开头的二字名字都查出来;
(7)in查询
  
select `studentsName` from students where `studentsName` in ('小明','小华','小鹏);
(8)null和not null

      

 

 posted on 2021-10-08 23:17  佩剑君子  阅读(59)  评论(0编辑  收藏  举报