数据库的定义:按照数据结构组织、存储和管理数据的仓库,本身可看作电子化的文件柜
数据库的作用:提供一个存储空间用来存储各种容器,数据库本身不能存储数据,数据只能存储在表中
关系型数据库的4部分(SQL语言):
- 数据定义语言(DDL):create,alter,drop,…
- 数据操作语言(DML):insert,update,delete,…
- 数据查询语言(DQL) : select,…
- 数据控制语言(DCL) : grant,revoke,commit,rollback,…
数据的类型:
整数类型 | tinyint smallint mediunint int bigint |
---|---|
浮点数类型 | float double |
日期、时间类型 | datatime YYYY-MM-DD HH: MM: SS |
字符串类型 | char varchar |
1、登录
- cd\
- cd C: ……5.6\bin
- mysql -u root -p
-
2、创建、查看数据库
数据库为itcast
create databse itcast;
show databses;
show create databse itcast;
3、修改数据库
将数据库编码改为gbk
alter database itcast default character set gbk collate gbk_bin;
4、删除数据库
drop database itcast;
5、创建数据表
数据表为tb_grade
create table tb_grade
(
id int(11),
name varchar(20),
grade float
);
6、查看数据表
show create table tb_grade;
describe tb_grade;
desc tb_grade;
7、修改数据表
1)改表名(tb_grade改为grade)
alter table tb_grade rename to grade;
2)改字段名(name改为username)
alter table grade change name username varchar(20);
3)改字段数据类型(grade表中的id字段数据类型由int(11)改为int(20))
alter table grade modify id int(20);
alter table grade modify id int primary key;
4)添加字段(添加无约束条件int类型字段age)
alter table grade add age int(10);
5)删除字段(age)
alter table grade drop age;
6)修改字段排列顺序
alter table grade modify username varchar(20) first;
alter table grade modify id int(20) after grade;
8、删除数据表
数据表为grade
drop table grade;
9、主键约束
主键无重复值、非空
1)单字段主键(id字段设为主键)create table grade
(
id primary key,
name varchar(20),
grade float
);
2)多字段主键(stu_id,course_id设为主键)
create table grade
(
stu_id int,
course_id varchar(20),
stu_grade float,
primary key(stu_id,course_id)
);
10、非空约束
id字段设为非空
create table tb_grade
(
id int(11) not null,
name varchar(20),
grade float
);
11、默认约束
grade默认字段默认值为0
create table tb_grade
(
id int(11),
name varchar(20),
grade float default 0
);
12、设置表的字段值自动增加
id字段设置为自动增加
create table tb_grade
(
id int(11),
name varchar(20),
grade float
);
13、创建索引
name字段创建唯一索引、升序
create table tb_grade
(
id int(11),
name varchar(20),
grade float
unique index index_id(name) asc
);
grade字段创建全文索引、降序
create table tb_grade
(
id int(11),
name varchar(20),
grade float
fulltext index indexname(grade) desc
);
id字段创建空间索引、升序
create table tb_grade
(
id int(11),
name varchar(20),
grade float
spatial index my_index(id) asc
)engine = myisam;
创建多列索引
create table tb_grade
(
id int(11),
name varchar(20),
grade float
index my_index(id,name,grade)
);
14、在已存表上创建索引
grade表上为字段id创建索引
方法一:create unique index index_id on grade (id asc);
方法二:
alter table grade add unique index index_id(id asc);
15、删除索引
方法一:
alter table grade drop index index_id;
方法二:
drop index index_id on grade;
16、为表中的字段添加数据
表studnt添加一条数据
insert into student(id,name,grade)
values(1,'zhangsan',98);
添加多条数据
insert into student(id,name,grade) values
(2,'xiaoli',67)
(3,'liming',98);
查看表中数据
select * from student
17、更新已存在的数据
更新部分数据
updtate student set name = 'caocao', grade = 50 where id = 1;
更新全部数据
update student set grade = 80;
查看表中数据
select * from student
18、删除数据
删除部分数据
select * from student where id = 11;
delete from student where id = 11;
select * from student;
删除全部数据
delete from student;
19、单表查询
1)查询指定字段
select id,name,grade,gender from student;
2)查询所有字段
select * from student;
20、条件查询
关系运算符:= >= > <= < != <>表示不等于
select id, name from student where id = 4;
21、带关键字的查询
1)关键字in
select id, name from student where id not in(1,2,3);
2)带关键字between and
select id, name from student where id not between 2 and 5;
3)带distinct关键字的查询(过滤记录中的重复值)
select distinct name, gender from student;
4)带like关键字的查询(可包含普通字符串、百分号、下划线的通配符字符串)
查询以”s”开头学生的id
select id,name from student where name like 's%';
查询以”w”开头,”g”结束的name字段值的学生的id
select id,name from student where name like 'w%g';
查询包含”y”的字符串
select id,name from student where name like '%y%';
5)下划线
select * from student where name like 'wu__gh';
6)带and关键字的多条件查询(优先级比or高)
select * from student where id in(1,2,3,4) and name like '%ng' and grade<80;
7)带or关键字的多条件查询
select * from student where id<3 or gender = '女';
22、空值查询
select id, name,grade,gender from student where gender is null;
select * from student where gender is null;
23、高级查询
1)count(): 统计行数
select count(*) from student;
2)sum():某字段求和
select sum(grade) from student;
3)avg():某字段所有值的平均值
select avg(grade) from student;
4) max():某字段的最大值;
min():某字段的最小值select max(grade) from student;
24、查询结果进行排序
默认条件为升序,字段值为NULL默认为最小值,先筛选where….,后排序order by……
having后面可以加聚合函数,而where不行select * from student order by grade ASC;
25、group by和聚合函数一起使用
select count(*) as zrs, gender from student group by gender;
select count(*) as zrs, gender from student group by gender having sum(grade)<300;
26、limit限制查询结果数量
偏移量为0,相当于(0,4),第一条到第四条记录
select * from student limit 4;
偏移量为4,相当于(4,4),第五条到第八条记录
select * from student limit 4,4;
select * from student order by grade DESC limit 4,4;
27、为表或字段取别名
select * from student as s where s.gender='女';
select name as stu_name, gender as stu_gender from;
28、为表添加外键约束
关联关系
多对一 一对多 |
非主键和主键建立关系,外键建在多的一方 主键和非主键建立关系 |
---|---|
一对一 | 两个表的主键是公共字段(从表需要主表存在才有意义) |
多对多 | 非主键和非主键建立关系 |
grade主表名,student从表名,FK_TD外键名,id主键字段名,gid外键字段名
alter table student add constraint FK_ID foreign key(gid) reference grade(id);
29、删除外键约束
alter table student drop foreign key FK_ID;
30、添加\删除数据
添加数据:先为主表grade添加,后为从表student添加
删除数据:先删从表student,再删主表grade
insert into student(sid,sname,gid) values (1,'王红', 1);
delete from student where sname = '王红';
delete from grade where id = 1;