【MySQL复习】

数据库基本操作

CREATE DATABASE test;

-- 创建数据库 并设置字符集编码
CREATE DATABASE schooldb CHARSET utf8;

-- 创建数据库 并设置字符集编码 并判断数据库是否存在
CREATE DATABASE IF NOT EXISTS test CHARSET utf8;

-- 删除数据库
DROP DATABASE test;

-- mysql数据库一旦创建不能修改,只能修改字符集编码

ALTER DATABASE test CHARSET utf8;

数据表

-- 学生表  学号,姓名,性别,生日,电话,地址,身高,注册时间

CREATE TABLE student(
   num INT,
   NAME VARCHAR(10),
   gender CHAR(1),
   birthday DATE,
   phone CHAR(11),
   address VARCHAR(30),
   height DECIMAL(3,2),
   reg_time DATETIME
)

-- 删除表
DROP TABLE student

-- 创建表,并为列添加约束
/*
   学号 唯一,不能为空 而且只能有一个学号
   可以为学号列添加主键约束(唯一不能重复,不能为空,一个表中只能有一个列添加主键约束)
   PRIMARY KEY 设置列为主键
   AUTO_INCREMENT 设置主键列自动增长,只能修饰主键列,而且主键列类型为整数
   
   not null 不能为空约束  可以添加到多个普通列
   
   UNIQUE 唯一约束  可以添加到多个普通列
   
   CHECK(height<2.60)  检查约束
*/
CREATE TABLE student(
   num INT PRIMARY KEY AUTO_INCREMENT,
   NAME VARCHAR(10) NOT NULL,
   gender CHAR(1) NOT NULL,
   birthday DATE,
   phone CHAR(11) NOT NULL UNIQUE,
   address VARCHAR(30),
   height DECIMAL(3,2) CHECK(height<2.60),
   reg_time DATETIME
)

DROP TABLE student

CREATE TABLE student(
   num INT PRIMARY KEY AUTO_INCREMENT  COMMENT '学号  主键',
   NAME VARCHAR(10) NOT NULL  COMMENT '姓名',
   gender CHAR(1) NOT NULL DEFAULT '男'  COMMENT '性别',
   birthday DATE,
   phone CHAR(11) NOT NULL UNIQUE,
   address VARCHAR(30),
   height DECIMAL(3,2) CHECK(height<2.60),
   reg_time DATETIME
)

DROP TABLE student

CREATE TABLE student(
   num INT PRIMARY KEY AUTO_INCREMENT  COMMENT '学号  主键',
   NAME VARCHAR(10) NOT NULL  COMMENT '姓名',
   gender CHAR(1) NOT NULL DEFAULT '男'  COMMENT '性别',
   birthday DATE,
   phone CHAR(11) NOT NULL UNIQUE,
   address VARCHAR(30),
   height DECIMAL(3,2) CHECK(height<2.60),
   reg_time DATETIME
)

-- 修改表名
RENAME TABLE student TO stu
RENAME TABLE stu TO student

-- 复制表结构
CREATE TABLE stu LIKE student

多表
多表查询

DROP TABLE IF EXISTS emp;
DROP TABLE IF EXISTS dept;


# 创建部门表
	CREATE TABLE dept(
        did INT PRIMARY KEY AUTO_INCREMENT,
        dname VARCHAR(20)
    );

	# 创建员工表
	CREATE TABLE emp (
        id INT PRIMARY KEY AUTO_INCREMENT,
        NAME VARCHAR(10),
        gender CHAR(1), -- 性别
        salary DOUBLE, -- 工资
        join_date DATE, -- 入职日期
        dep_id INT,
        FOREIGN KEY (dep_id) REFERENCES dept(did) -- 外键,关联部门表(部门表的主键)
    );
	-- 添加部门数据
	INSERT INTO dept (dNAME) VALUES ('研发部'),('市场部'),('财务部'),('销售部');
	-- 添加员工数据
	INSERT INTO emp(NAME,gender,salary,join_date,dep_id) VALUES
	('孙悟空','男',7200,'2013-02-24',1),
	('猪八戒','男',3600,'2010-12-02',2),
	('唐僧','男',9000,'2008-08-08',2),
	('白骨精','女',5000,'2015-10-07',3),
	('蜘蛛精','女',4500,'2011-03-14',1),
	('小白龙','男',2500,'2011-02-14',null);	

查询语句

select * from emp , dept;  -- 从emp和dept表中查询所有的字段数据

上面语句就是连接查询
连接查询:

  • 内连接查询 :相当于查询AB交集数据
-- 隐式内连接
SELECT 字段列表 FROM1,2WHERE 条件;

-- 显示内连接
SELECT 字段列表 FROM1 [INNER] JOIN2 ON 条件;

  • 外连接查询
    左外连接查询 :相当于查询A表所有数据和交集部门数据
    右外连接查询 : 相当于查询B表所有数据和交集部分数据
-- 左外连接
SELECT 字段列表 FROM1 LEFT [OUTER] JOIN2 ON 条件;

-- 右外连接
SELECT 字段列表 FROM1 RIGHT [OUTER] JOIN2 ON 条件;

  • 子查询
    查询中嵌套查询,称嵌套查询为子查询。
-- 查询 '财务部' 或者 '市场部' 所有的员工的部门did
select did from dept where dname = '财务部' or dname = '市场部';

select * from emp where dep_id in (select did from dept where dname = '财务部' or dname = '市场部');

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值