MySQL数据库(上)

基础术语

  1. 主键:主键是唯一的,一个数据表中只能包含一个主键。
  2. 外键:外键用于关联两个表
  3. 冗余:存储两倍数据,冗余降低了性能

数据库范式

  1. 每个属性不可再分
  2. 非主属性,必须依赖于主属性,不可形成局部依赖。

数据库服务器、数据库和表的关系

客户端访问数据库服务器,而服务器下面对应了很多DB(数据库),DB下面也有很多表。

SQL语句分类

  1. DQL:数据查询语言,用于检索数据库中的数据。
  2. DML:数据操作语言,用于改变数据库数据(增,删,改)
  3. DDL:数据库定义语言,用于建立,修改,删除数据库。
  4. DCL:数据库控制语言,用于授予或回访访问数据库的某种特权。

常用的SQL语句

show databases; 查看数据库
 create database dept; 创建数据库。dept是库名
 drop database dept;删除数据库dept
 use dept;切换数据库
 create table student(
 sid int(4) primary key auto_increment,
 sname varchar(20) not null,
 sgender char(2),
 sproject varchar(20),
 scores double,
 sage int(4)
 );创建一个学生表
 alter table student rename as stu;修改表名为stu
 show tables;查看数据库下面的表
 desc stu;查看stu表的结构
 alter table stu add sphone varchar(20);在stu表里增加一个sphone列
 alter table stu change sphone spho varchar(30);将syu表中的sphone修改成spho 并给定修改后的类型
 alter table stu drop spho;删除spho列
 insert into stu values(1,“xiaodenghui”,“1”,“java”,90,22);插入一条数据,这里要一一对应数据库的属性
 insert into stu values(2,“zhangsan”,“1”,“java”,90,22),(2,“zhangsan”,“1”,“java”,90,22);插入多条数据
 insert into stu values(3,“lisi”,“1”,“java”,90,22);
 insert into stu values(4,“wangwu”,“1”,“java”,90,22);
 insert into stu values(5,“houliu”,“1”,“java”,80,22);
 insert into stu values(6,“maqi”,“1”,“java”,100,22);
 select * from stu;查看所有的信息
 insert into stu(sname,sage) values(“nihao”,20);插入一条数据
 update stu set sname=“lisi”;所有的sname都会改成lisi
 update stu set sname=“wangwu”,sage=23 where sid=4;修改id为4的那条数据
 delete from stu where sid=3;删除sid为3的那一行数据
 select sname,sid from stu where sproject=“java” and scores=90;查询科目为java和分数为90分的学生姓名和id
 select sname,sid from stu where sproject=“java” or scores=90;查询科目为java或分数为90分的学生姓名和id
 select sname,sid from stu where scores>=90;查询分数大于90分的学生姓名和id
 select sname,sid from stu where sproject is null;查询科目为null的学生姓名和id
 select sname,sid from stu where sproject is not null;查询科目不为null的学生姓名和id;
 select distinct sproject from stu;查询有多少科目
 select * from stu where sname like “%l%”;查询sname中有l的数据
 select * from stu where sname like“l_”;查询sname中有l并且后面只有一个字符的数据。l_表示占位符
 ifnull();这个函数是判断第一个元素是否为空,如果为空就返回第二个元素,否则就返回第一个
 select count(*) from stu;查询有多少条数据
 select max(scores) from stu;查询最高的分数
 select min(scores) from stu;查询最低的分数
 select avg(scores) from stu;查询平均分
 select * from stu limit 6,2; limit 下标,页量
 select * from stu order by scores desc;降序排列
 select * from stu order by scores asc;降序排列