美文网首页
mysql基础

mysql基础

作者: 阿狸小朋友 | 来源:发表于2023-06-15 11:14 被阅读0次

连接数据库

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 唯一键名;

相关文章

网友评论

      本文标题:mysql基础

      本文链接:https://www.haomeiwen.com/subject/bkhnbctx.html