对表和库(DML,DDL)的基本操作以及联合查询

联合查询,DML,DDL(对表和库的操作大全)

这次把上次没有提到的联合查询补充一下,然后主要来讲DML和DDL,就是主要讲一下对表和库的基本操作,例如增删改这些,有针对不同情况的不同方法和例子,复习和速查用起来应该比较方便,继续往下看吧~

联合查询

将多条查询语句的结果合并成一个结果
用于信息来源于多个表且这些表没有直接的连接关系
语法:
查询语句1
union
查询语句2
union

特点:
eg:
1. 要求多条查询语句的查询列数
2. 要求多条查询语句的每一列的类型和顺序最好一致
3. union会自动去重,用 union on 可以包含重复项

select * from employees where like '%a%' 
union
select * from employees where department_id > 90;

等价于

select * from employees where like '%a%' 
or where department_id > 90;

DML语言

数据操作语言:

  1. 插入 insert
  2. 修改: update
  3. 删除: delete

1.1 插入方式1:

语法:insert into 表名(列名,…)
values(值1,…)

特点:

  1. 插入值的类型和列类型务必一致
INSERT INTO beauty(id,NAME,sex,borndate,phone,photo,boyfriend_id)
VALUES(13,'椎名林檎','女','1975-10-12','13256498798',NULL,NULL);
  1. 不可以为null的值必须乖乖填好,可以为null的话写列名填值或者不写列名不写值二选一
INSERT INTO beauty(id,NAME,sex,borndate,phone)
VALUES(14,'仓桥','女','1970-11-12','13256495238');
  1. 列的顺序可以调换
INSERT INTO beauty(NAME,id,phone,sex)
VALUES('桥本环奈',15,'1999-5-6','女');
  1. 列数和值数必须相等
  2. 可以省略写列名,意思是默认所有列都要写,且顺序不可以调换,可以为null的写null
INSERT INTO beauty
VALUES(16,'斋藤飞鸟','女','1998-10-23','13256498798',NULL,NULL);

1.2 插入方式2:

语法:insert into 表名
set 列名1 = 值1,列名2 = 值2,…

eg:

INSERT INTO beauty
SET id = 17,NAME = '安娜苏',phone = '78456611233';

两种方式差别

  1. 方式1可以写多行值value(…),(…)…,方式二不行
  2. 方式1支持子查询,而2不支持

eg:这个也算一种有趣的插入方法

insert into beauty (id,name,phone)
select 26,'东方朋子','1532456';

2.1.修改单表记录

语法:
update 表名
set 列 = 新值,列 = 新值,…
where 筛选条件;

2.2.修改多表记录

语法:
update 表1,表2,…
连接条件
set 列名 = 值
where 筛选条件

3.1单行删除

语法:
delete from 表名 where 筛选条件

3.2多行删除

语法2:
delete 表1的别名,表2的别名
from 表1 别名
where 连接条件
and 筛选条件

3.1单表删除

语法1:
truncate table 表名;** truncate不能加where**
语法2:
delete from 表名

  • 若有自增长列,用delete删,会从删除处开始,truncate从1开始
  • truncate删除无返回值,delete有
  • truncate删除不能回滚

DDL语言(库和表的管理)

库的管理:

1. 库的创建

语法:
create database [if not exists]库名;

2. 库的修改(更改字符集utf-8,…)

语法:
alter database 库名 character set 新的字符集;

2. 库的删除

语法:
drop database [if exists]库名;

4. 创建表()

语法1:
create table 表名(
列名 类型 [(长度),约束],

);

语法2:(可以跨表)
create table 表名
select…
from …

  • varchar(长度) 字符型
  • desc 表名 //查看表

4. 修改表

4.1 修改列名

语法:
alter table 表名 change column 旧列名 新列名 【列值类型】

4.2 修改列类型或约束

语法:
alter table 表名 modify column 列名 列值新类型

4.3 添加新列

语法:
alter table 表名 add column 列名 【列值类型】

4.4 删除列

语法:
alter table 表名 drop column 列名

4.1 修改表名

语法:
alter table 旧表名 rename to 新表名

5.1 表的删除

语法:
drop table if exists 旧表名;
create table 表名();

对照下库的删除

语法:
drop database if exists 旧库名;
create database 新库名;

6.1表的结构复制

create table 复制库 like 原库;

6.2表的结构内容全复制

create table 复制库
select * from 原库;

6.3表的部分数据

create table 复制库
select …
from 原库
where …;

6.4表的部分字段复制

create table 复制库
select …
from 原库
where 0;

发布了46 篇原创文章 · 获赞 12 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yuanfangyoushan/article/details/90146050