MySQL(一)基础
1、数据库定义语言(DDL
1.1、库
①创建数据库
create database database_name
创建时,设置编码格式,utf8编码 可以使用中文
create database databse_name character set utf8 collate utf8_general_ci;
②删除数据库
drop database database_name
1.2、表
①创建表
create table 表名
(
列名 数据类型[约束条件],
列名 数据类型[约束条件],
列名 数据类型[约束条件]
[,表级约束调条件]
)
举例:
create table emp(
id int primary key COMMENT '编号' ,
workno VARCHAR(10) comment '工号',
name VARCHAR(10) comment '姓名',
gender CHAR(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(20) comment '工作地址',
enteydata date comment '入职时间'
)character set utf8 collate utf8_general_ci comment '员工表';
②列级约束条件(六种)
- 主键 Primary key
- 外键 foreign key
- 唯一 unique
- 检查 check(MySQL不支持)
- 默认 default
- 非空/空值 not null/ null
③表级约束条件(四种)
- 主键
- 外键
- 唯一
- 检查
④数据类型
| 分类 | 类型 | 大小byte | 范围 |
|---|---|---|---|
| 数值 | tinyint | 1 | |
| samllint | 2 | ||
| mediumint | 3 | ||
| int/interger | 4 | ||
| bigint | 8 | ||
| float | 4 | ||
| double | |||
| decimal | 依赖于M(精度)和D(标度)的值 | ||
| 字符串 | char | 0-255 | 定长字符串 |
| varchar | 0-65535 | 变长字符串 | |
| tinyblob | 0-255 | 不超过255的二进制数据 | |
| tinytext | 0-255 | 短文本字符串 | |
| blob | 0-65535 | 二进制形式的长文本数据 | |
| text | 0-65535 | 长文本数据 | |
| mediumblob | 很大 | ||
| nediumtext | 很大 | ||
| longblob | 超大 | ||
| longtext | 超大 |
| 分类 | 类型 | 大小 | 范围 | 格式 | 描述 |
|---|---|---|---|---|---|
| 日期类型 | date | 3 | 1000-01-01至9999-12-31 | YYYY-MM-DD | 日期值 |
| time | 3 | HH:MM:SS | 时间值、持续时间 | ||
| year | 1 | YYYY | 年份 | ||
| datetime | 8 | 1000至9999 | YYYY-MM-DD HH:MM:SS | 日期和时间 | |
| timestamp | 4 | 1970至2038 | YYYY-MM-DD HH:MM:SS | 日期和时间、时间戳 |
⑤查询
查询数据库当前所有的表
show tables;
查询表结构
desc tablename;
查询指定表的建表语句
show create table 表命
⑥修改表
添加字段 add
alter table emp add nickname varchar(20) comment '昵称';
修改字段 modify
ALTER TABLE 表名 modify 字段名 数据类型(长度);
修改字段名和字段类型 change
ALTER TABLE 表名 change 旧字段名 新字段名 数据类型(长度) [comment] [约束];
alter table emp change nickname username varchar(30) comment '用户名';
删除字段名drop
ALTER TABLE 表名[DROP COLUMN 列名[restrict cascade]]
alter table emp drop username;
修改表名 rename
alter table emp rename to employee;
⑦删除表
直接删除
DROP TABLE if exists 表名;
删除表后,重新创建该表,只留下空表无数据
truncate table 表名;