MySQL基础(四)

DDL(数据定义语言)

库和表的管理

创建: create
修改: alter
删除: drop

一、库的管理

1、库的创建

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

二、表的管理

1.表的创建 ★

语法:

create table 表名(
    列名 列的类型【(长度) 约束】,
    列名 列的类型【(长度) 约束】,
    列名 列的类型【(长度) 约束】,
    ...
    列名 列的类型【(长度) 约束】
)

2.表的修改

语法

      ALTER table 表名 add | drop | modify | change column 列名 【列类型 约束】;

3.表的删除

 DROP TABLE IF EXISTS 表名;

通用的写法:

DROP DATABASE IF EXISTS 旧库名;
CREATE DATABASE 新库名;
DROP TABLE IF EXISTS 旧表名;
CREATE TABLE  表名();

4.表的复制

仅仅复制表的结构

CREATE TABLE 复制表名 LIKE 要复制的表;

复制表的结构+数据

CREATE TABLE 复制表名
SELECT * FROM 要复制的表;

只复制部分数据

CREATE TABLE copy3
SELECT id,au_name
FROM author 
WHERE nation='中国';

仅仅复制某些字段

CREATE TABLE copy4 
SELECT id,au_name
FROM author
WHERE 0;

联合查询

union 联合、合并:将多条查询语句的结果合并成一个结果。

语法:
           查询语句1
           union
          查询语句2
           union
          ...

应用场景:
要查询的结果来自于多个表,且多个表没有直接的连接关系,但查询的信息一致时。

特点:★

  1. 要求多条查询语句的查询列数是一致的!
  2. 要求多条查询语句的查询的每一列的类型和顺序最好一致
  3. UNION 关键字默认去重,如果使用 UNION ALL 可以包含重复项

DML(数据操纵语言)

插入:insert
修改:update
删除:delete

一、插入语句

方式一:经典的插入

语法:

   insert into 表名(列名,...) values(值1,...);

方式二:

语法:

   insert into 表名

  set 列名=值,列名=值,....

两种方式比较:

方式一支持插入多行,方式二不支持;

方式一支持子查询,方式二不支持。

二、修改语句

1.修改单表的记录★

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

2.修改多表的记录【补充】

语法:
sql92语法:
update 表1 别名,表2 别名
set 列=值,...
where 连接条件
and 筛选条件;

sql99语法:
update 表1 别名
inner | left | right join 表2 别名
on 连接条件
set 列=值,...
where 筛选条件;

三、删除语句

方式一:delete
语法:

1、单表的删除【★】
delete from 表名 where 筛选条件

2、多表的删除【补充】

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

sql99语法:

delete 表1的别名,表2的别名
from 表1 别名
inner | left | right join 表2 别名 on 连接条件
where 筛选条件;

方式二:truncate
语法:truncate table 表名;

delete 对比 truncate【面试题★】

  1. delete 可以加 where 条件,truncate 不能加。
  2. truncate 删除,效率高一丢丢。
  3. 假如要删除的表中有自增长列,如果用 delete 删除后,再插入数据,自增长列的值从断点开始,而 truncate 删除后,再插入数据,自增长列的值从1开始。
  4. truncate 删除没有返回值,delete 删除有返回值。
  5. truncate 删除不能回滚,delete 删除可以回滚。

常见的数据类型

一、整型

分类tinyint smallint mediumint int/integerbigint
字节数12348

 

 

 

  • 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加 unsigned 关键字。特点:
  • 如果插入的数值超出了整型的范围,会报 out of range 异常,并且插入临界值。
  • 如果不设置长度,会有默认的长度,长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配 zerofill 使用!

二、小数

分类:

浮点型float(M,D)double(M,D)
定点型dec(M,D)decimal(M,D)

 

 

 

特点:

M:整数部位+小数部位。
D:小数部位。
如果超过范围,则插入临界值。

M和D都可以省略。
如果是decimal,则M默认为10,D默认为0。
如果是float和double,则会根据插入的数值的精度来决定精度。

③定点型的精确度较高,如果要求插入数值的精度较高如货币运算等则考虑使用

三、字符型

较短的文本:

char
varchar

其他:

binary varbinary 用于保存较短的二进制
enum 用于保存枚举
set 用于保存集合


较长的文本:
text
blob
(较大的二进制)

分类:

 写法M的意思特点空间的耗费效率
charchar(M)最大的字符数

可以省略,默认为1

定长字符

比较耗费
varcharvarchar(M)最大的字符数不可以省略,变长字符比较节省

 

 

 

 

 

 

四、日期型

分类:
date 只保存日期
time 只保存时间
year 只保存年

datetime    保存日期+时间
timestamp 保存日期+时间


特点:

 字节数范围时区等影响
datetime81000~9999不受
timestamp41970~2038

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值