MySQL Day3
1-学习内容总结
(1)DML语言:数据操作语言
(2)DDL语言:数据定义语音
(3)常见的数据类型
2-DML
2.1数据插入 insert
方式一:insert into 表名(列名,…) values(值1,…); 支持插入多行
方式二:insert into 表名 set 列名=值,列名=值,…;不支持插入多行,支持子查询
特点:
- 插入的值类型要与列类型匹配
- NULl值的插入以表的定义为准,非空不可以为NULL
- 方式一:字段与值都省略
- 方式二:字段与值都声明
- 表名中约定的列顺序可以进行调换
- 字段与值的个数必须一致
- 字段名称可以省略,默认顺序为表内字段顺序
2.2数据删除delete
sql92: update 表名 set 字段1=值1,字段2=值2 where 筛选条件
sql99:
update 表名1
left|right|inner join 表名2
on 连接条件
set 字段1=值1,字段2=值2
where 筛选条件
2.3数据删除 delete
方式一,使用delete:
- 删除单表中的记录
delete from 表 where 筛选条件 limit 条目数
- 级联删除
delete 表别名1, 表别名2 from 表1 别名 inner|right|left join 表2 别名 on 连接条件 where 筛选条件;
- truncate删除
truncate table 表名
2.4delete 与truncate的区别
- truncate删除没有返回值,delete有
- truncate删除后,标识顺序从1开始,delete标识顺序从断点开始
- truncate删除无法进行事务回滚,delete可以进行回滚
3-DDL 数据库定义语言
库、表的管理、修改、删除
库
3.1 库的管理
create database if not exists 库名
3.2 库的修改
alter database 库名 character set gbk; 修改字符集
3.3 库的删除
drop database if exists
表
3.4 创建
create table 表名(
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
列名 列的类型【(长度) 约束】,
…
列名 列的类型【(长度) 约束】
3.5 修改 add|drop|modify|change
修改列名:alter table 表名 change column 列名 【列类型 约束】
修改列的类型或者约束:alter table 表名 modify cloumn 列名 指定类型
添加新列:ALTER TABLE author ADD COLUMN 列名 指定类型
删除列:ALTER TABLE 表名 DROP COLUMN 列名
3.6 删除
DROP TABLE 表名
3.7 复制
仅复制表结构:CREATE TABLE 表名称 LIKE 存在的表名称;
复制表的结构+数据:CREATE TABLE copy2 SELECT * FROM author;
复制部分数据:CREATE TABLE copy3 SELECT … FROM 表名 WHERE 筛选条件
4-数据类型
整数、小数、字符、日期
4.1-整数型
- tinyint
- smallint
- mediumint
- int/integer
- bigint
特点:
- 如果不设置无符号还是有符号,默认是有符号,如果想设置无符号,需要添加unsigned关键字
- 如果插入的数值超出了整型的范围,会报out of range异常,并且插入临界值
- 如果不设置长度,会有默认的长度,长度代表了显示的最大宽度,如果不够会用0在左边填充,但必须搭配zerofill使用!
4.2-小数型
- 浮点型
- float(M,D)
- double(M,D)
- 定点型
- dec(M,D)
- decimal(M,D)
特点:
- M:整数部位+小数部位,D:小数部位,如果超过范围,则插入临界值
- M和D都可以省略,但对于定点数,M默认为10,D默认为0
5-字符型
char、varchar、binary、varbinary、enum、set、text、blob
- char:固定长度的字符,写法为char(M),最大长度不能超过M,其中M可以省略,默认为1
- varchar:可变长度的字符,写法为varchar(M),最大长度不能超过M,其中M不可以省略
6-日期型
year年
date日期
time时间
datetime 日期+时间 8
timestamp 日期+时间 4 比较容易受时区、语法模式、版本的影响,更能反映当前时区的真实时间