数据库基本指令

创建数据库

CREATE DATABASE [IF NOT EXISTS] db_name [create_specification] [create_specification] [...]

create_specification:(默认属性)
[DEFAULT] CHARACTER SET charset_name
[DEFAULT] COLLATE collation_name

[] 是可选项

CHARACTER SET: 指定数据库采用的字符集

COLLATE: 指定数据库字符集的校验规则

样例:创建test数据库

create database if not exists test charset utf8 collate utf8_general_ci;

显示所有数据库

show databases;

显示数据库详细信息

显示当初创建数据库时的详细信息,如创建时的参数之类。

show create database 数据库名;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YovMRVKe-1679576059052)(C:/Users/Z-zp/AppData/Roaming/Typora/typora-user-images/image-20230319153307654.png)]

/*!40100 default… */ 不是注释,表示当前mysql版本大于4.01版本,就执行这句话

show create database 数据库名\G;

加个\G可以显示更详细的信息。

修改数据库

对数据库的修改主要指的是修改数据库的字符集,校验规则

alter database 数据库名称  属性...

样例:修改数据库字符集为gbk

alter database test charset gbk;

删除数据库

drop database [if exists] 数据库名称;

查看MySQL连接状态

用来查询有哪些用户连接了MySQL

show processlist;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fcCu1qlO-1679576024158)(C:/Users/Z-zp/AppData/Roaming/Typora/typora-user-images/image-20230319160037150.png)]

db:该用户当前所处数据库。(NULL,没有进入数据库)


创建表

CREATE TABLE table_name (
列属性名称 属性类型,
列属性名称 属性类型,
.....   .....
) character set 字符集 collate 校验规则 engine 存储引擎;

character set 字符集,如果没有指定字符集,则以所在数据库的字符集为准

collate 校验规则,如果没有指定校验规则,则以所在数据库的校验规则为准

样例:创建学生表

create table student(
sno int,
sname varchar(20),
sex bool
)

char和varchar区别:

char固定字符串长度(1个字节),相当于字符数组。

varchar顾名思义,可变的字符串长度,相当于string。

查看当前数据库中的所有表

show tables;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FsIMcQp2-1679576024159)(C:/Users/Z-zp/AppData/Roaming/Typora/typora-user-images/image-20230319161254823.png)]

查看表结构

desc 表名;

向表中插入一条记录(insert)

insert into student values(1, '张三', 1);

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lFDsznyP-1679576024159)(C:/Users/Z-zp/AppData/Roaming/Typora/typora-user-images/image-20230319162139163.png)]

方法一:

insert into 表名 values(属性1的值,属性2的值, ...);

没有指定表的属性字段,需要按照表属性的实际顺序赋值。

样例:

insert into student values(1, '张三', 1);

方法二:

insert into student(属性1, 属性2, ...) values(属性1的值, 属性2的值, ...);

显示指定表的属性,按照指定的顺序赋值即可。

样例:

insert into student(sname, sno, sex) values('王五', 3, 1);

表属性的实际顺序是sno、sname、sex

但是我显示指定了表的属性,因此按照我指定的顺序赋值即可。

向表中插入多条记录

以方法二为例:

insert into student(sno, sname, sex)
values(1, '张三', 1),(2, '李四', 1), (3, '王五', 1);

方法一类似。

修改表

//添加属性字段
ALTER TABLE 表名 ADD 属性字段 属性类型 [DEFAULT expr][,column datatype]...;

//修改属性字段
ALTER TABLE 表名 MODIfy (column datatype [DEFAULT expr][,column datatype]...);

//删除属性字段
ALTER TABLE 表名 DROP (column);

样例一:添加年龄(在姓名后面)

alter table student add age int comment '年龄' after sname;

comment关键字表示注释,后面紧跟着的就是注释内容。

after:在某字段后面插入。

无法使用before在某个字段前插入属性字段

注意:虽然我们可以在任意一个属性字段后面插入一个新的属性字段。

但是一般不建议这样做,可能导致上层服务器原先访问数据库的代码逻辑出现问题。

要添加新字段,最好就在末尾添加新字段。

样例二:modify修改sname字段的属性(or 大小等):

alter table student modify sname varchar(60);

样例三:change修改sname字段的名称为xingming

alter table student change xingming sname varchar(60);

change即使只修改列名,也得带上列属性(可修改)

可以理解为change就是重新设置列,只是设置后列名变了,列属性还是留用原来的那个。

样例四:change修改sname属性类型,但属性名不要变:

alter table student change sname sname varchar(20);

change是重新设置列,因此即使只是修改属性类型,但是属性名也得填写两次,意味着重新设置,但还是和原来的名字相同。

modify和change的区别:

  • modify:修改列属性,但不能修改列名
  • change:重新设置列,包括列属性和列名。

**总结:**需要修改列名的时候,用change。只需要修改列属性的时候,由于change还要写两遍一样的列名,比较冗余,因此使用modify。

但属性也不是说改就能改的,比如sname的属性是varchar,如果要改成int,会报错,无法修改,因为表中已经填写的sname数据,是varchar类型,不能转成int。


删除表

drop table student;

删除表中所有数据(不删除表和表属性)

delete from student;

总结:

虽然知道了怎么修改表结构,但实际上最好不要轻易动表的结构,而是在项目架构的时候,就考率好要怎么设计数据库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿波呲der

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值