连接数据库
host :主机 -h
username :用户名 -u
password :密码 -p
port:端口 -P
例:
//连接本地 -h 可以省略,如果连接3306端口可以省略
mysql -h127.0.0.1 -P3306 -uroot -proot;
创建表
create table [if not exists] 表名(
字段名 数据类型 [null | not null] [auto_increment] [primary key] [comment]
字段名 数据类型 [default]
)engine = 存储引擎
例:
set names gbk;
create table if not exists stu(
id int auto_increment primary key comment `主键`,
name varchar(20) not null,
address varchar(100) default `地址不详`
) engine = innodb;
- 查看创建表
show create table 表名;
- 查看表结构
desc 表名;
- 删除表
drop table [if exists] 表1 ,表2...;
- 修改表
alter table 表名;
1.添加字段
//[位置] 有两个关键字 first 或者 after 表名
alter table 表名 add [column] 字段名 数据类型 [位置];
2.删除字段
alter table 表名 drop [column] 字段名;
3.修改字段
//既改字段名 又改字段类型
alter table 表名 change 原字段名 新字段名 数据类型;
//仅改字段类型
alter table 表名 modify 字段名 数据类型;
- 插入数据
//1.数据库中没有字符串概念 不能出现双引号
//2.字段顺序可以任意调整 但是values中必须要和字段对应
//3.可以插入部分字段 但是非空字段必须插入
//4.自动增长字段可以不插入
//5.如果插入所有字段,并且值和表的字段一一对应,那么字段可以省略
//5.如果省略字段,那么自动增长值可以插入null
//6.如果想插入某个字段的默认值,值可以使用defaule关键字
//7.一次性插入多条数据时,values后面跟多个()用逗号隔开
insert into 表名 [(字段名 , 字段名...)] values (值1,值2...),(值1,值2...);
- 更新数据
//1.修改多个字段时,set 字段=值,字段=值
//2.如果不加where时,会更新所有数据
update 表名 set 字段 = 值 [where 条件];
- 删除数据
delete from 表名 [where 条件];
- 清空表
//1.delete from 表名;是一条条遍历,一条条删除,新插入的数据自动增长字段继续累加
//2. truncate是删除表,重新重建表,新插入的数据自动增长字段从1开始
truncate table 表名 ;
- 查询数据
//星号代表所有列
select 列名 from 表名;
- 复制表
//从表名2复制数据到表1 不复制表信息(例如主键)
create table 表名1 select 列名 from 表名2;
//按照表2的表信息创建表1,不复制数据
create table 表名1 like 表名2;
- 数据类型
整型 | 字节 |
---|---|
tinyint [unsigned] | 1 |
smallint [unsigned] | 2 |
mediumint [unsigned] | 3 |
int [unsigned] | 4 |
bigint [unsigned] | 8 |
create table stu (
id int(5),
age int(5) zerofill #如果age没超过5位,填充前导0
);
浮点型 | 字节 |
---|---|
float [unsigned] | 4 |
double [unsigned] | 8 |
浮点数在数据库内保存的近似值
浮点数声明:float(M,D) ,double(M,D)
M:总位数
D:小数位数
定点型 | 字节 |
---|---|
decimal [unsigned] | 不知道(拆分为两个数存储) |
定点数会将小数拆分为两个数存储
浮点数声明:decimal(M,D)
M:总位数
D:小数位数
字符型 | 描述 |
---|---|
char(长度) | 定长 |
varchar(长度) | 变长 |
tinytext | 大段文本 |
text | 大段文本 |
mediumtext | 大段文本 |
longtext | 大段文本 |
char(长度),varchar(长度) 定长和变长都不能超过后面的长度
枚举型 | 描述 |
---|---|
enum | 只能插入列举的值 |
create table stu(
name varchar(20),
sex enum('男','女')
);
- 时间
时间类型型 | 描述 |
---|---|
datetime | 占用8字节 范围: 1~9999 年 格式: 年-月-日 时:分:秒
|
date | 占用3字节 |
time | 时间, 占用3字节 格式: 天 时:分:秒 或时:分:秒 范围: -838:59:59 ~ 838:59:59
|
timestamp | 时间戳,占用4字节 范围: 1970-1-1 0:0:0 ~ 2038-1-19 11:14:07
|
year | 年份,占用1字节 |
- 列表属性
关键字 | 描述 |
---|---|
null / not null | |
default | |
auto_increment | 1.从1开始增长,自动增长都是无符号整数 2.auto_increment的必须是主键,但是主键不一定自动增长 |
primary key | 1.主键不允许重复,不能为null 2.一个表还能有一个主键,主键可以由多个字段组成 |
unique [key] | 1.不能重复可以为空 2.一个表可以有多个唯一键 |
comment | 注释 |
主键添加方式:
1.方法1
create table stu (
id int primary key,
name varchar(20)
);
方法2
create table stu (
id int ,
name varchar(20),
primary key(id)//这里可以添加多个字段形成组合主键盘
);
方法3
alter table stu add primary key(id);
主键的作用:
1.保证数据完整性
2.加快查询速度
唯一键添加方式:
1.方法1
create table stu (
id int primary key,
name varchar(20) unique
);
方法2
alter table stu add unique (name);
唯一键和主键的区别:
1.主键不能为空,唯一键可以为空
2.主键只能有一个,唯一键可以有多个
唯一键的删除
alter table 表名 drop index 唯一键名;
网友评论