0
点赞
收藏
分享

微信扫一扫

mysql入门系列(一)

phpworkerman 2022-03-24 阅读 31
mysqlsql

mysql基础入门

前言:sql语言入门

sql语言分为五个部分

  • 数据查询语言(Data Query Language, DQL)
    1、主要是select操作;
  • 数据操作语言(Data Manipulation Language, DML)
    1、insert操作;
    2、update操作;
    3、delete操作;
  • 数据定义语言(Data Definition Language, DDL)
    1、create操作;
    2、alter操作;
    3、drop操作;
  • 数据控制语言(Data Control Language, DCL)
    1、grant操作(用户授权);
    2、revoke操作(权限回收);
  • 事务控制语言(Transaction Query Language, TCL)
    1、start transaction(开启事务);
    2、commit;
    3、rollback;
    4、set tranaction(设置事务级别);

一、创建数据库和表

说明:本文以一个完整例子描述,版本是mysql8

-- 创建数据库
create database test_db;
-- 查看数据库
show databses;
-- 切换数据库
use test_db;
-- 创建学生表
create table t_student(
	sno int(5),
	sname varchar(6),
	sex char(1),
	age int(3),
	class_name varchar(15),
	enter_date date,
	email varchar(32)
);
-- 查询学生表
select * from t_student limit 5;
-- 查看学生表建表语句
show create table t_student;
-- 查看学生表详情
desc t_student;

二、修改数据

/*
插入操作:向学生表中插入记录
*/
insert into t_student values (1,'张三','男',23,'行政一班','2022-01-01','zs@163.com');
insert into t_student values (2,'李四','男',23,'行政一班','2022-01-01','ls@163.com');
insert into t_student values (3,'王五','男',23,'行政一班','2022-01-01','ww@163.com');
/*
更新操作
*/
update t_student set sex = '女' where sno = 2;
/*
删除操作
*/
delete from t_student where sno = 2;

三、修改表结构

-- 学生表重命名
alter table t_student rename to t_student2;
-- 恢复名称
alter table t_student2 rename to t_student;
-- 向学生表结尾插入一列
alter table t_student drop addr;
-- 向学生表开头插入一列
alter table t_student add addr varchar(255) first;
-- 向学生表sex列后插入一列
alter table t_student add addr2 varchar(255) after sex;
-- 更改学生表列属性
alter table t_student modify addr2 varchar(123);
-- 更改学生表列名称
alter table t_student change addr2 addr3 varchar(123);

四、非外键约束

-- 删除学生表
drop table if exists t_student;
-- 新建带非外键约束的学生表
create table t_student(
	sno int(5) primary key auto_increment,
	sname varchar(6) not null,
	sex char(1) default '男' check(sex = '男' || sex = '女'),
	age int(3) check(age >= 18 and age <= 60),
	class_name varchar(15),
	enter_date date,
	email varchar(32) unique
);
-- 测试email唯一性生效情况
insert into t_student values (1,'张三','男',21,'java01班','2023-9-1','zs@126.com');
insert into t_student values (null,'李四','男',21,'java01班','2023-9-1','zs@126.com');

-- 删除表
drop table t_student;
-- 新建普通表
create table t_student(
    sno int(5),
    sname varchar(6),
    sex char(1),
    age int(3),
    class_name varchar(15),
    enter_date date,
    email varchar(32)
);
-- 对已存在表设置约束
alter table t_student add constraint pk_stu primary key(sno);
alter table t_student modify sno int(5) auto_increment;
alter table t_student add constraint uq_email unique(email);
alter table t_student add constraint ck_sex check(sex = '男' || sex = '女');
alter table t_student add constraint ck_age check(age >= 18 and age <= 60);

五、外键约束

-- 新建员工宿舍表
create table t_dept(
	dept_no int(5) primary key auto_increment,
	dept_name varchar(255) unique
)
-- 新建员工表
drop table if exists t_employee;
show tables;
create table t_employee(
	emp_no int(5) primary key auto_increment,
	emp_name varchar(10) not null,
	emp_mail varchar(20) unique,
	dept_id int(5),
	constraint fk_dept foreign key (dept_id) references t_dept(dept_no)
);
-- 新增宿舍表记录
insert into t_dept values 
(null, '一号宿舍楼'), (null, '三号宿舍楼'), (null, '八号宿舍楼');
-- 错误插入员工记录测试,预期会报错
insert into t_employee values (null,'张三','zs@126.com',4);
-- 新增员工记录
insert into t_employee values (null,'张三','zs@126.com',1);
insert into t_employee values (null,'李四','ls@126.com',2),(null,'小明','xm@126.com',3);

-- 删除外键约束
alter table t_employee drop foreign key fk_dept;
/*
对已有表设置外键约束,外键策略
	1、cascade 2、set null
	说明:在update和delete外检设置中可以混合使用
*/
alter table t_employee add constraint foreign key fk_dept (dept_id) 
references t_dept(dept_no) on update cascade on delete cascade;

-- 更新宿舍表,员工表中的记录会关联更新
update t_dept set dept_no = 5 where dept_no = 2;
-- 查看员工表的级联更新效果
select * from t_employee;
举报

相关推荐

0 条评论