数据库

存储数据的仓库

常见数据库分类:  大型数据库  Oracele (多用户 甲骨文 开源 使用免费 服务收费)
                 中型数据库  sqlserver(win)  postgresql(日企)  
                 小型数据库  mysql  (甲骨文  开源免费)
                 微型数据库  sqllilt  

数据库的 库 表 列名 约束名(auto_increment, FOREIGN KEY PRIMARY key UNIQUE DEFAULT(默认) not null ) 聚合函数(max min avg COUNT)

sql语句分类:

数据定义语言DDL   对库和表(库表的结构)的操作(create ALTER DROP)
数据查询语言DQL   模糊 分页查 排序 条件 分组  。。。    
数据操纵语言DML   对数据的的操作  增 删 改(insert INTO   update DELETE)
数据控制功能DCL   对数据库的权限 GRANT,REVOKE,COMMIT,ROLLBACK    事务的特性 ACID

DDL语句:

create database 库名 /表名
use 库名
alter 库名 /表名  
drop 库名/ 表名
ALTER TABLE 表名称 ADD 字段名 字段约束
ALTER TABLE 修改前表名称 RENAME 修改后表名称


 //只复制表结构及约束,但不复制数据
CREATE TABLE 复制出的表 LIKE 原表
//复制表结构及数据,但不复制约束
CREATE TABLE 复制出的表 AS SELECT * FROM 原表
//禁用约束
ALTER TABLE 表名称 DISABLE KEYS
//启用约束
ALTER TABLE 表名称 ENABLE KEYS
  //删除表字段
ALTER TABLE 表名称 DROP COLUMN 字段名
//删除主键
ALTER TABLE 表名称 DROP PRIMARY KEY
//删除索引
ALTER TABLE 表名称 DROP INDEX 索引的字段名
//删除外键约束
ALTER TABLE 表名称 DROP FOREIGN KEY 外键的字段名

DML语句:

添加数据:
insert into 表名【(字段名)】 values (字段值)
insert into 表名 (字段名) values (字段值1),(字段值2),(字段值3).。。。。
修改字段名:
update  表名 set 字段名 = 新字段值  【条件】  如果增加条件语句对应的是修改一条语句  如果没有条件对应的是修改全部数据
清空表数据:
delete 表名  【条件】     不加条件对应是表的中所有数据  如果加上条件删除的是单挑数据

DQL语句:

单表查
select 字段名1,字段名2 from 表名
ORDER BY DESC/ASC 
GROUP BY  字段名 
where  条件
like   字段名
HAVING  条件
limit 0,0

多表查
面试题:
INNER JOIN   内链接
LEFT JOIN RIGHT JOIN    外连接 {左外联 右外联}
FULL join     全连接


一共52条数据  每页显示10条  分了 5页
select * from student   LIMIT 1,2  (1 代表的是偏移量  从第几条数据开始 2 代表的是每页展示多少数据)

DQL语句

   全查 
   select * from student 

   条件查询
    select * FROM student where id = 1

   根据字段查询
   SELECT sname,sid FROM student 

   排序查询
   SELECT sname,age FROM student ORDER BY age asc

   别名查询
   SELECT sname as 姓名 ,age as 年龄 FROM student ORDER BY age asc

   分组查询
   select * from student GROUP BY ssex 
   SELECT COUNT(id),ssex as 性别 from student GROUP BY ssex   

   模糊查询   
   以%出现
   select * from student where sname like "%斯%"
   以_的占位符出现
   select * from student where sname like "__斯"

  分组后的条件查询  HAVING 用于分组后的条件查询
  SELECT sname,sid,age from student GROUP BY ssex  HAVING age>80

  分页查询
  select * from student   LIMIT 1,2  (1 代表的是偏移量  从第几条数据开始 2 代表的是每页展示多少数据)
  聚合查询   对应是表的主键  唯一 
  select COUNT(id) FROM student   用于做分页的时候用   
  SELECT MAX(age) FROM student
  SELECT MIN(age) FROM student
  SELECT avg(age) FROM student

  多表查询:  2-3 测试的范围
  内连接  innner JOIN
  外连接   left JOIN  RIGHT JOIN  
  select s.sname,s.ssex,s.age,se.cno,se.degree from student as s inner   JOIN score as se  ON s.sid = se.sno
  select s.sname,s.ssex,s.age,se.cno,se.degree from student  s left   JOIN score  se  ON s.sid = se.sno
  select s.sname,s.ssex,s.age,se.cno,se.degree from student as s RIGHT     JOIN score as se  ON s.sid = se.sno

面试题:

INNER JOIN    内连接  将两张表的相同的内容进行展示
LEFT  JOIN    左外联  以左边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充
right JOIN    左外联  以右边的表为主表从表的内容显示显示字段如果有值显示值如果没有以null填充
FULL  join    全链接   将2张表中的所有内容全部显示

子查询 以()查出来的结果作为条件再次进行查询
select * from student    
将年龄最大的名字展示
select sname from student where age = (SELECT MAX(age) FROM student) 
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 数据库对于后端开发来说是必不可少所要用到的,而MySQL数据库是其中的主流之一,在中小型公司中使用的较为广泛,作为...
    Steven_SHH阅读 1,480评论 0 2
  • SQL语言基础 本章,我们将会重点探讨SQL语言基础,学习用SQL进行数据库的基本数据查询操作。另外请注意本章的S...
    厲铆兄阅读 5,360评论 2 46
  • 注:1.mysql是一种关系型数据库 2.大小写不敏感 3.字符串用单引号,若字符串里有单引号,则...
    孙浩j阅读 1,351评论 0 2
  • 一 、数据库简介 1.1 简介 数据库(DataBase,DB):指长期保存在计算机的存储设备上,按照一定规则组织...
    笑样年华阅读 356评论 0 0
  • 一、数据库概述 什么是数据库数据库就是存储数据的仓库,其本质是一个文件系统,数据按照特定的格式将数据存储起来,用户...
    圣贤与无赖阅读 3,910评论 0 4