1.数据定义(DDL)
一条数据的存储过程
创建库-->定字段-->创建表(业务表)-->插数据
#DDL关键字 # create # alter # drop
一,库管理
1.创建库
必须指定库名,可以指定字符集(character set 字符集)排序方式(collate 排序方式)
字符集:编码格式,常见:UTF-8(5系列默认,3个字节,不全面)
utfmb4(8系统默认的,4个字节,全面 )
排序规则:utf8mb4_0900_ai_ci : UTF-8的不区分大小写(默认)
utf8mb4_0900_ai_cs : 区分大小写
#方式一 create database 数据库名; #方式二 推荐 create database if not exists 数据库名; #方式三 create database 数据库名 character set 字符集 create database 数据库名 collate 排序规则 #方式四 create database 数据库名 character set 字符集 collate 排序规则 #查看当前默认字符集和排序规则 show variables like 'character_set_database' show variables like 'collation_datavase'
2.查看和使用库
#1.查看当前所有库 show databases; #2.查看当前使用的库 select database(); #3.查看指定库下的所有表 show tables from 数据库名; #4.查看创建库的信息 show create database 数据库名; #5.切换库、选中库 use 数据库名;
3.修改库
数据库不能改名,创建一个新的库,将所有表复制到新库中,再删除旧的库。
#修改编码字符集 alter database 数据库名 character set 字符集 #修改排序方式 alter database 数据库名 collate 排序方式 #一起修改 alter database 数据库名 character set 字符集 collate 排序方式
4.删除库
三思,三思,三思!!!!
#直接删除库 drop database 数据库名; #判断存在才删除数据库 drop database if exists 数据库名;
5.练习题
二,表管理
1.创建表语法
表名 列名 类型 必须得写
create table [if not exists] 表名 ( 列名 类型 [列可选约束(对数据进行限制的语法)] [comment'列可选注释'], 列名 类型 [xxxxx] )[表的约束][comment'列可选注释'];
CREATE DATABASE IF NOT EXISTS book_libs CHARACTER SET utf8 COLLATE utf8_croatian_ci; use book_libs; CREATE TABLE if not EXISTS books( book_name VARCHAR(20) COMMENT '我是图书的名称', book_price double(4,1) COMMENT '我是图书的价格', book_num int COMMENT '我是图书的名称' )CHARACTER SET utf8 COMMENT '我是表的注解';
2.数据类型
无符号==无负号 ,默认有符号
create table stu( #unsigbed 跟在数据类型后,表示无符号 从0开始 stu_age tinyint unsigbed );
选择标准,首先装得下你要存储的数据,第二是要存储占用的字节小的
不确定的情况下,选择较大范围的,避免值超范围导致的异常
整数类型:
浮点类型:
精度在底层不精准,会丢失精度
create table stu( #M 表示位数 整数+小数 #D 表示小数位数 #当数据位数不满足存入的精度时,存入后会进行四舍五入 stu_height float(M,D) );
定点数:货币,商品价格,精准
字符串:
char类型性能好,
varcahr可以识别空格
#char(M) 为固定长度,eg:不会为空 name char(5) # == 'a____' 后面会自动填充4个空格,占满空间
text:大文本类型,不需要指定长度(不占有一行最大限制空间)
开发经验:
短文本 | 固定长度用char | eg:性别,手机号 |
---|---|---|
短文本 | 非固定长度varchar | 姓名,地址 |
大文本 | 建议存储到文本文件,使用varchar记录文件地址,不使用text,直接存储大文本,性能较差 |
时间类型:
datetime 和 timestamp 类型自动初始化和更新
#1.插入默认当前时间和修改自动更新当前时间 ts timestamp default current_timestamp on update current_timestamp dt datetime default current_timestamp on update current_timestamp #2.插入默认当前时间 ts timestamp default current_timestamp dt datetime default current_timestamp
CREATE TABLE t2( na_me VARCHAR(12), time1 datetime default current_timestamp on update current_timestamp COMMENT '插入会自动维护时间,修改也会自动维护时间', time2 TIMESTAMP default current_timestamp COMMENT '插入会自动维护时间' );
3.修改表
1.修改表中的列
关键字 : alter
#增加一列【可以指定x字段前或后】 alter table 表名 add 字段名 字段类型 [first/ after 字段名]; #修改列名 alter table 表名 change 原字段名 新字段名 新字段类型 [first/ after 字段名]; #修改列类型 alter table 表名 modify 字段名 新字段类型 [first/ after 字段名]; #删除一列 alter table 表名 drop 字段名;
2.修改表名
alter table 表名 rename [to] 新表明
4.删除表
无法回滚!!!无法找回!!!
#删除表 drop table [if not exists] 数据表1[,数据2,数据3...] #清空表数据 truncate table 表名
5.查看表信息
desc 表名;
习题总结
显示表结构:
describe 表名; desc 表名;