S Q L语言分类
1.数据库查询语言 (Data Query Language,D Q L)
D Q L主要用于数据的查询,其基本结构是使用SELECT子句,FROM子句和WHERE子句的组合来查询一条或多 条数据。
2.数据库操作语言 (Data Manipulation Language,D M L)
insert 增加数据
update 修改数据
delete 删除数据
3.数据库定义语言(Data Definition Language,D D L)
create 创建数据库
alter 修改数据库对象
drop 删除数据库对象
4.数据控制语言(Data Control Language,D C L)
grant 授予用户权限
revoke 回收用户权限
5.数据库事务语言(Transaction Control Language,T C L)
start transaction 开启事务
commit 提交事务
rollback 回滚事务
set transaction 设置事务属性
D D L 操作
创建数据库和删除数据库
create database mydata; -- 创建数据库
drop database my data; -- 删除数据库
创建数据库表
create table student ( -- 学生表
sno int (6), -- 学号
sname varchar(12), -- 学生姓名
sex char(2), -- 性别
enterdate date , -- 入学时间
classname varchar(12) -- 班级
);
-- 查看表结构
desc student;
修改、删除和查看数据库表 结构
-- 增加一列
alter table student add score double(4,1);
-- 增加一列 改变列位置
alter table student add score1 double(4,1) first; -- 第一个列
alter table student add score2 double(4,1) after age -- 在age 列后面
-- 删除一列
alter table student drop score double(4,1);
-- 修改一列 列名不变
alter table student drop modify score double(5,2);
-- 修改一列 改变列名
alter table student change score score2 double(5,2);
-- 修改表名
alter table student rename to student2;
-- 查看表结构
desc student2
删储数据库 表
drop table student;
D M L操作
插入数据 (insert)
-- 插入一条数据
insert into student values(1,'小白','男','2020-1-1','java001')
-- 插入多条数据
insert into student values
(1,'小白','男','2020-1-1','java001'),
(2,'小张','男','2020-1-1','java001'),
(3,'小李','男','2020-1-1','java001'),
(4,'小刘','男','2020-1-1','java001');
修改数据(update)
update student set sname = '张三' where sno=1;
删除数据(delete)
delete from student where sno=1;
约束
非外键约束
约束条件 | 描述 | 关键字 |
---|---|---|
主键约束 | 约束字段的值是唯一的表示对应的记录 | primary key |
非空约束 | 约束字段的值不能为空 | not null |
唯一约束 | 约束字段的值是唯一的 | unique |
检查约束 | 限制某个字段的取值范文 | check |
默认值约束 | 约束的字段有默认值 | default |
自动增加约束 | 约束的字段是数值,自动递增 | auto_increment |
-- 方式1
create table student ( -- 学生表
sno int (6) primary key auto_increment, -- 学号
sname varchar(12) not null, -- 学生姓名
sex char(2) default '男' check(sex='男'or sex='女'), -- 性别
enterdate date , -- 入学时间
emaill varchar(18) unique,
classname varchar(12) not null -- 班级
);
-- 方式2
create table student(
sno int(6) auto_increment,
sname varchar(12)not null,
sex char(2) default '男' ,
age int(3) ,
classname varchar(12),
enterdate date,
email varchar(20) ,
constraint pk_stu primary key(sno),
constraint ck_stu_sex check(sex ='男' or sex ='女'),
constraint ck_stu_age check(age>=18 and age<=50),
constraint uk_stu_email unique(email)
);
-- 方式3
create table student2 ( -- 学生表
sno int (6), -- 学号
sname varchar(12), -- 学生姓名
sex char(2), -- 性别
enterdate date , -- 入学时间
emaill varchar(18) unique,
classname varchar(12) -- 班级
);
-- 添加约束条件
alter table student2 add constraint pk_stu_sno primary key;
alter table student2 add constraint nn_stu_sname not null;
alter table student2 add constraint ck_stu_sex check(sex='男'or sex='女');
alter table student2 add constraint uq_stu_emaill unique;
alter table student2 modify sno int(6) auto_increment ; -- 修改
-- 删除约束条件
alter table student2 drop nn_stu_sname;
alter table student2 drop uq_stu_emaill;
联合主键
-- 联合主键
create table ta1(
tname varchar(10),
tclas varchar(10),
sal double(8,2),
primary key(tname,tclass)
);
外键约束
外键是指表中某个字段的值依赖于另一张表中某个字段的值,而被依赖的字段必须具有主键约束或者唯一约束
-- 班级表
create table class(
classno int(2) PRIMARY KEY,
classname varchar(10) not null
);
insert into class values(1,'大数据1班'),(2,'java2班'),(3,'前端1班'),(4,'java1班');
-- 学生表
create table student(
stuno int(6) primary key auto_increment,
stuname varchar(5) not null,
sex varchar(2),
sclassno int(2)
)