初识数据库总结

数据库的概念

1、数据库的概念:长期存储在计算机内的、有组织的、可共享、同意管理的大量数据的集合。持久化的存储。 2、Mysql数据库:是数据库的一个产品,瑞典的【MySQL AB】公司开发,被【Oracle】收购。 3、关系型数据库:以表的形式来存储数据,表与表之间,数据和数据之间是由一定的关联关系。 4、非关系型数据库:数据的存储比较单一。

查看当前已有的库: show databases; 切换库:use 库名; 创建数据库: create database hello; create schema haha;

安装好mysql之后,mysql是一个数据库管理系统,在mysql系统中,有很多的数据库,刚刚我们创建的库,hello,haha是真实用来保存数据的数据库,每一个数据库中又可以有N多的表,每张表中就保存了N多条数据。

SQL语句:不同的数据库产品,SQL语句大部分是通用的,会有一些小不同。

Mysql的权限: create:可以创建数据库 select:可以查询数据 delete:可以删除数据 update:可以更新数据 insert:可以插入数据

SQL语句的分类

SQL语句的分类: 1、DCL:数据控制语言,用来定义访问权限或安全级别。 2、DDL:数据定义语言,定义数据库对象:库、表、列等。功能:创建、删除、修改库和表结构。 3、DML:数据操作语言,用来进行数据的增删改。 4、DQL:数据查询语言,用来查询记录,重点。 5、TCL:事务控制语言。

``:着重符

DCL:(了解) 创建一个在任意ip地址上登录的账号: create user '用户名'@'%' identified by '密码'; 修改密码: set password for 用户名@'%' = '密码'; 给用户授权: grant all on 用户名.user to '用户名'@'%'; grant select,update,delete,insert on 用户名.user to '用户名'@'%'; 撤销授权: revoke all on jsoft.user from 'jsoft'@'%'; 查看权限: show grants for 'jsoft'@'%'; 删除用户: drop user 'jsoft'@'%';

DDL:主要是用在定义或改变表的结构。 创建表的基本语法: create table 表名( 字段名1(列名) 类型(宽度) 【约束条件】, 字段名2(列名) 类型(宽度) 【约束条件】, ..... );

Mysql数据类型

整型: tinyint:1字节,-128~127, smallint:2字节,正负3万多。 mediumint:3字节, int:4字节,正负21亿 bigint:8字节, 在mysql中,默认的整型都是有符号的,我们可以加上unsigned,定义成无符号的整型。比如:unsigned tinyint的取值范围0~255。 宽度可以配合zerofill,比如:int(4) unsigned zerofill,0001,0002,0010,1000

浮点型: float(m,d):4字节,单精度浮点型,m总长度,d小数位数。 double(m,d):8字节,双精度浮点型,同上 decimal(m,d):存储为字符串的浮点数,对应我们java的BigDecimal。 例:float(5,3)。 插入123.45678,最后插入的结果是99.999 插入12.34567,最后插入的结果12.346

字符串型: char(n):固定长度的字符串。255个字符。 varchar(n):可变长度的字符串。6万多个字符。

文本型: tinytext:可变长度。255个字节。 text:可变长度。6万多个字节。 mediumtext:可变长度。16MB左右。 longtext:可变长度。4GB左右。

char和varchar的区别?

1,char是定长的,varchar是可变长的。

2,char的存储空间固定,varchar的存储空间根据内容长度变化。

3,char的查询效率略高于varchar。

varchar和text的区别:

1、varchar操作字符,text可以操作字符,也可以操作字节。

2、varchar可以设置默认值,text不可以。

时间日期: date:日期,2023-10-26 time:时间,11:20:20 datetime:日期时间。 timestamp:时间戳。毫秒数 year:年份。

建表约束 Mysql约束类型: NOT NULL:非空约束 UNIQUE:唯一约束,取值不能重复 PRIMARY KEY:逐渐约束(主关键字),自带非空、唯一、索引。 DEFAULT:默认值 FOREIGN KEY:外键约束

sql实例

创建一张表:

 CREATE TABLE hello.author (
 aut_id int, aut_name varchar(50) not null,
 gender char(1) default '男', country varchar(50),
 brithday datetime,
 primary key(aut_id,aut_name) ) 


CREATE table hello.book( 
id int primary key auto_increment,
 name varchar(50) not null, bar_code varchar(30) not null, 
 aut_id int not null, unique(bar_code) )

创建表的时候添加外键

 CREATE table hello.book( 
id int primary key auto_increment, 
name varchar(50) not null, bar_code varchar(30) not null unique,
 aut_id int not null, 
foreign key(aut_id) references author(aut_id) 
)

查看表结构: desc book;

修改表结构: 添加列: ALTER table author add(hobby varchar(20),address varchar(50)

修改列数据类型: ALTER table author modify address varchar(100);

修改列名和数据类型: ALTER table author change address addr varchar(60);

删除列: ALTER table author drop address;

修改表名: ALTER table author rename authros;

删除表: DROP table if exists book;

DML:数据操作语言(重要) 对数据进行增删改,不包含查询。

插入数据: INSERT INTO author(aut_id, aut_name,gender,country,birthday,hobby) values (1,"罗曼罗兰","女","美国","1970-01-01","旅游");

INSERT INTO `author`
values 
(3,"海伦凯勒","女","德国","1970-01-01","读书");

1、在数据库中所有的字符串类型,必须使用引号,建议使用单引号。

2、(列名1,列名2,列名3)可省略,表是按照表中的顺序插入。但不建议采用这种写法,降低代码的可读性。

批量插入: INSERT INTO author values (4,"贝多芬","男","德国","1970-01-01","钢琴"), (5,"爱迪生","男","美国","1970-01-01","灯泡")

修改记录: 修改某列的全部的值: UPDATE author SET country = "中国";

修改某一行的某一个字段的值: UPDATE author SET country = "美国" where aut_id = 2;

修改一条记录的多个字段的值: UPDATE author SET aut_name = "吴军",hobby = "写作" where aut_id = 4;

where是一个很关键的关键字,我们可以用where来进行丰富的筛选,他有点像if语句,可以使用各种各样的运算符:=,!=,<>,>,<,>=,<=,between...and...,in(...),not in(...),is null,is not null,not,or,and

UPDATE `author` SET hobby = "eat" where aut_id BETWEEN 2 AND 3;
UPDATE `author` SET country = "外国" where aut_id in(3,5);

删除记录: DELETE from author where aut_id = 5;

删除所有: TRUNCATE author; delete和truncate、drop区别?

 1、truncate严格意义上来说应该是DDL语句,delete是DML语句。

2、delete和truncate是只删除数据,drop是删除表。

3、truncate速度快,效率高,可以理解为先把表删了,又重新创建了表。

4、表被truncate之后,表和索引所占空间会回复到初始大小,delete操作不会减少表和索引所占空间。

5、truncate和delete不会使表结构及其列的索引、约束发生改变。

6、truncate立即生效,不能回滚。delete可以回滚。

7、truncate会重置自增列,delete不会重置,会出现自增列断档。

DQL: 查询表中的所有记录: select * from 表名;(*代表所有字段,所有列)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

橙橙橙留香

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

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

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

打赏作者

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

抵扣说明:

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

余额充值