day-01

  1. 1. 常见概念
    1. 1.1. 数据库
    2. 1.2. 数据库管理系统
    3. 1.3. 数据库管理员
  2. 2. 常见操作
  3. 3. 表的操作
    1. 3.1. 新建
      1. 3.1.1. 语法
      2. 3.1.2. 案例
    2. 3.2. 复制表
    3. 3.3. 修改列
  4. 4. 常见的约束
    1. 4.1. 语法
    2. 4.2. 修改约束
      1. 4.2.1. 案例
  5. 5. 修改表名
    1. 5.1. 语法
    2. 5.2. 案例
  6. 6. DML
    1. 6.1. 含义
    2. 6.2. 分类
    3. 6.3. insert 语句
      1. 6.3.1. 语法
      2. 6.3.2. 案例
    4. 6.4. update语句
      1. 6.4.1. 语法
      2. 6.4.2. 案例
    5. 6.5. delete语句
      1. 6.5.1. 语法
      2. 6.5.2. 案例
  7. 7. DDL
    1. 7.1. 含义
    2. 7.2. truncate
      1. 7.2.1. 含义
      2. 7.2.2. 和delete区别

常见概念

数据库

数据库管理系统

数据库管理员

常见操作

  • 登录

    1
    mysql -u root -p
  • 退出

    1
    exit
  • 数据库实例操作

    1
    2
    3
    4
    show databases;             # 查看所有数据库实例
    create database 数据库实例名 # 查看创建语句
    drop database 数据库实例名 # 删除数据库实例名
    use 数据库实例名 # 使用数据库实例名
  • 表操作

    1
    2
    3
    show tables;               # 查看所有的表
    show create table 表名; # 查看创建语句
    drop table 表; # 删除表

表的操作

新建

语法

1
2
3
4
5
create table 表名(
列名1 类型 [约束],
...,
列名N 类型 [约束]
)

案例

1
2
3
4
5
create table dept(
deptNo int(2),
name varchar(20),
loc varchar(30)
)

复制表

  • 方式一

    1
    create table 表名 子查询;
  • 方式二

    1
    create table 表名 like 表名;

修改列

  • 添加列

    1
    alter tableadd 列名 类型 约束] [comment '注释'];
  • 修改列

    1
    alter table 表 change old列名 new列名 类型 约束 [comment '注释'];
    1
    alter table 表 modify 列名 类型 约束 [comment '注释'];
  • 删除列

    1
    alter table 表 drop 列名;

常见的约束

  • 主键

    含义:用来区分表中记录数的一列或多列(此时一般称为复合主键)

    特点:非空且唯一

  • 外键

    含义:表中的一列的值是来自其他表中的主键或唯一列

    特点:值只能是引用列的值或为null(前提设置可以为空)

  • NOT NULL

    含义:列的值不能为空

  • UNIQUE

    含义:表中的指定的unique的列必须是唯一的

    特点:可以为null

  • ENUM

  • SET

  • CHECK

语法

1
2
3
create table 表名(
字段 类型 [约束]
)

修改约束

  • 添加约束

    1
    alter table 表名 add constraint 约束名 约束类型 (字段名)
  • 删除约束

    1
    alter table 表名 drop primary key         -- 删除主键约束
    1
    alter table 表名 drop foreign key 约束名   -- 删除外键约束
    1
    alter table 表名 drop index 索引名         -- 删除唯一约束

案例

TODO

修改表名

语法

1
alter table 旧表 rename  新表;

案例

1
alter table new_book rename old_book;

DML

含义

数据操作语言

分类

  • insert
  • update
  • delete

insert 语句

语法

  • 插入一条记录

    1
    insert into 表名 [(列1,...,列N)] values (列1的值,...,列N的值);
  • 批量插入

    1
    insert into 表名 [(列1,...,列N)] values (列1的值,...,列N的值),(列1的值,...,列N的值),...;
    1
    insert into 表名 [(列1,...,列N)] 子查询;

案例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
insert into dept values(50,'开发部','广州');

-- 插入null值
insert into dept values (60,null,null);
insert into dept (deptno) values (70);

-- 批量插入
insert into dept (deptno) values (80),(90);
insert into dept (deptno) select empno from emp;

-- 插入时间方式一
INSERT INTO emp (empno, ename, job,mgr, hiredate, sal, comm, deptno) values(1,'xx','yy',7902,'2011-11-1',100,100,50);

-- sysdate() 是mysql自带的的函数,用来返回当前时间
select SYSDATE() from dual;

-- 插入时间方式二
INSERT INTO emp (empno, ename, job,mgr, hiredate, sal, comm, deptno) values(2,'xx','yy',7902,SYSDATE(),100,100,50);

update语句

语法

1
UPDATE table SET column = value [, column = value] [where condition];

案例

1
2
3
4
5
6
update emp set deptno = 20 where empno = 7782;
update emp set deptno = 20;
update emp set deptno = 20,sal=sal+100 wher deptno = 10;

-- 报错,思考为什么?
update emp set deptno = 50;

delete语句

语法

1
delete from table [where condition];

案例

1
2
3
4
5
6
7
delete from dept where deptno = 10;

-- 思考此处为什么报错?
delete from dept where deptno = 20;

-- 删除所有的员工
delete from emp;

DDL

含义

数据定义语言,比如:create table、create view、truancate等等

truncate

含义

截断表

和delete区别

  • truncate是DDL语言,delete是DML语言

  • truncate只能删除表中的全部记录,delete可以指定删除记录

  • trancate会是否表空间,delete不会是否表空间

  • trancate不能回滚,delete可以回滚