MySQL数据库(上)
基础术语
- 主键:主键是唯一的,一个数据表中只能包含一个主键。
- 外键:外键用于关联两个表
- 冗余:存储两倍数据,冗余降低了性能
数据库范式
- 每个属性不可再分
- 非主属性,必须依赖于主属性,不可形成局部依赖。
数据库服务器、数据库和表的关系
客户端访问数据库服务器,而服务器下面对应了很多DB(数据库),DB下面也有很多表。
SQL语句分类
- DQL:数据查询语言,用于检索数据库中的数据。
- DML:数据操作语言,用于改变数据库数据(增,删,改)
- DDL:数据库定义语言,用于建立,修改,删除数据库。
- 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;降序排列