数据库1,SQL基础语言

目录

概念

特点

关系型数据库与非关系型数据库

关系型数据库

非关系型数据库

相关术语

结构化查询语言SQL

分类

基本语法

DDL:数据定义语言

数据库操作

数据表操作

数据类型

数值型

字符串类型

                        

日期类型

创建表

 查询表

 修改表

约束

                非空约束(not null):

                唯一约束(unique):

                主键约束(primary key):

                  自增长约束(auto_increment):

                检查约束(check):

                默认约束(default):

                外键约束(foreign key):

修改约束

DML数据操作语言

插入数据

修改数据

删除数据


概念

        数据库,就是存放数据的仓库,数据库(DataBase,简称DB)是长期存储在计算机内部有结构的、大量的、共享的数据集合

特点

        1长期存储:持久存储,因为数据库存储数据的本质是将数据存储在.db的文件中

        2有结构:

                    类型:存放的数据是有类型的

                    关系:存储数据与数据之间的关系 -

        3 大量:大多数存储在数据库中的数据,实际上就是存储在磁盘的文件中

        4 共享:多个应用程序可以通过数据库实现数据的共享

关系型数据库与非关系型数据库

关系型数据库

        采用了关系模型来组织数据的存储,以行和列的形式存储数据并记录数据与数据之间的关系 将数据存储在表格中,可以通过建立表格与表格之间的关联来维护数据 与数据之间的关系。

非关系型数据库

        采用键值对的模型来存储数据,只完成数据的记录,不会记录数据与数据之间的关系。 在非关系型数据库中基于其特定的存储结构来解决一些大数据

相关术语

数据库(Database):存储数据的集合,提供数据存储服务 -

数据(Data): 实际上指的是描述事物的符号记录 

数据库管理系统(Database Management System,DBMS ):数据库管理系统,是位于用户与操作系统之间的一层数据管理软件 -

数据库系统管理员(Database Anministrator,DBA):负责数据库创建、使用及维护的专门人员 数据库系统(Database System,DBS):数据库系统管理员、数据库管理系统及数据库 组成整个单元

MySQL:MySQL这个数据库是关系型数据库是免费的,使用Navicat工具会比较方便,好操作。

记录/元组:表的一行称为一条记录(元组)

结构化查询语言SQL

简介:SQL(Structured Query Language)结构化查询语言,用于存取、查询、更新数据以及管 理关系型数据库系统

分类

                根据SQL指令完成的数据库操作的不同,可以将SQL指令分为四类 数据存在表中,表是存储在数据库中,mysql中可以有多个数据库 表:类似与Execl -

       1.  DDL(Data Definition Language)数据定义语言 - 用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改

       2.  DML(Data Manipulation Language)数据操作/操纵语言  用于完成对数据表中的数据的添加、删除、修改操作 

       3.  DQL(Data Query Language)数据查询语言 用于将数据表中的数据查询出来         

       4.  DCL(Data Control Language)数据控制语言 用于完成事务管理等控制性操作

基本语法

        SQL指令不区分大小写 但是在后期编写sql指令时,sql提供的关键字一般使用大写,自定义的名称用小写

        每条SQL表达式结束之后都以;结束

        SQL关键字之间以空格进行分隔

        SQL之间可以不限制换行(可以有空格的地方就可以有换行)

        MySQL注释:

                       单行注释:-- 注释内容 注意:在--后要加空格

                        单行注释:#注释内容

                        多行注释:/*注释内容*/

DDL:数据定义语言

作用:用于完成对数据库对象(数据库、数据表、视图、索引等)的创建、删除、修改

数据库操作

1.查询数据库:

                show databases;  显示当前MySQL中的数据库列表

SHOW DATABASES;

                       显示指定名称的数据库  

SHOW CREATE DATABASE zday0101;

2.创建数据库

 create database 库名;      直接创建

CREATE DATABASE zday0102;

create database if not exists 库名;      判断一下,如果没有就创建

CREATE DATABASE IF NOT EXISTS zday0102;

create database 库名 character set 字符集;      

字符集:数据存储在数据库中采用的编码格 式 utf8、gbk

CREATE DATABASE zday0103 CHARACTER SET 'utf8';

3.修改数据库字符集

        alter database 库名 character set 字符集;

默认编码格式根据软件工具,创建时加上

ALTER DATABASE zday0103 CHARACTER SET utf8;

                根据报错,可知此mysql数据库不支持gbk

4.删除数据库

       drop database 库名;         

DROP DATABASE zday0103;

       drop database if exists 库名;   判断一下,没有就不删了

DROP DATABASE IF EXISTS zday0103;

5.使用/切换数据库

use 库名;

如果要对库中的表进行操作,需要切库

USE zday0102;

数据表操作

数据类型

数据表中支持操作的数据类型

数值型

类型内存空间范围说明
tinyint1byte有符号 -128~127 无符号 0~255特小型整数
smallint2byte有符号 -32768 ~ 32767 无符号 0~65535小性整数
mediumint3bytete 有符号 -2^31 ~ 2^31 - 1 无符号 0~2^32-1中型整数
int/integer4byte整数
bigint8byte大型整数
float4byte单精度小数
double8byte双精度数字
decimal第一参数 +2用于记录精准数字,如 金额

decimal(m,d)

        m是数字的最大位数,他的范围是从1-65;

        d是小数点后的位数,他的范围是0-30,并且不能大于m。

        如果m被省略了,那么m的值默认为10, 如果d被省略了,那么d的值默认为0.

举例表示:

                1、decimal(5,2) 所指代的范围是-999.99~999.99 数字的最大位数是5位,小数点右侧是 2位,即有两位小数。

字符串类型

类型字符长度说明
char0~255字节定长字符串,最多可以存储255个字符 ;当我们指定数 据表字段为char(n) 此列中的数据最长为n个字符,如 果添加的数据少于n,则补'\u0000'至n长度
varchar0~65536 字节可变长度字符串,此类型的类最大长度为65535;当我 们指定数据表字段为varchar(n) 此列中的数据最长为 n个字符,如果添加的数据少于n,不会补齐长度
tinyblob0~255 字节存储二进制字符串
blob0~65535 字节存储二进制字符串
mediumblob0~1677215 字 节存储二进制字符串
longblob0~4294967295 字节存储二进制字符串
tinytext0~255 字节文本数据(字符串)
text0~65535 字节文本数据(字符串)
mediumtext0~1677215 字 节文本数据(字符串)
longtext0~4294967295 字节文本数据(字符串),大型文本记录,如小说书,笔记等

 char(长度),varchar(长度)

4.1版本前,长度为字节,之后是字符长度

                        

日期类型

        

类型格式说明

date

2022-11-00日期,只存储年月日
time11:12:13时间,只存储时分秒
year2021年份
datetime2021-09-13 11:12:13日期+时间,存储年月日时分秒
timestamp20210913111213日期+时间 (时间戳)

存储时得严格按照填写

创建表

数据表实际就是一个二维的表格,一个表格是由多列组成,表格中的每一列称之为表格的 一个字段

语法:

create table 表名( 字段名1 数据类型 约束1 约束2,

                             字段名2 数据类型 约束,

                             字段名3 数据类型

);

USE zday0101;#切到数据库之下

CREATE TABLE student (#创建一个student表
 s_id INT,
 s_name VARCHAR(50),
 s_age INT,
 s_sex VARCHAR(10)   #这个记得不要加,
);

 查询表

show tables;     查询当前库下所有表名

SHOW TABLES;

 

desc 表名;        查询表结构

DESC student;

 修改表

1.alter table 旧表名 rename to 新表名;        修改表名

ALTER TABLE student RENAME TO stu;

2.alter table 表名 character set 字符集;        修改字符集 

                数据表也是有字符集的,默认字符集和数据库一致

ALTER TABLE stu CHARACTER SET utf8;

3.alter table 表名 add 列名 类型;                  添加列(字段)

ALTER TABLE stu ADD s_length INT;

4.alter table 表名 change 旧列名 新列名 类型;

修改列(字段)的列表和类型

ALTER TABLE stu CHANGE s_name s_namee CHAR(50);

5.alter table 表名 modify 列名 类型;              只修改列(字段)类型

ALTER TABLE stu MODIFY s_sex CHAR(10);

6.alter table 表名 drop 列名;                          删除列(字段)


ALTER TABLE stu DROP s_length;

删除表

drop table 表名;                                删除数据表

DROP TABLE students;

drop table if exists 表名;                 当数据表存在时删除数据表


DROP TABLE IF EXISTS students;

约束

概念:在创建数据表的时候,指定的对数据表的列的数据限制性的要求(对表的列中的数据进行 限制)

作用:保证数据的有效性 ,保证数据的完整性 ,保证数据的正确性

分类:

                非空约束(not null):

                        限制此列的值必须提供,不能为null

                唯一约束(unique):

                        在表中的多条数据,此列的值不能重复

                主键约束(primary key):

                        非空+唯一,能够唯一标识数据表中的一条数据

                        一张表只能有一个主键

CREATE TABLE god(
 g_id INT PRIMARY KEY,#主键
 g_name VARCHAR(50) NOT NULL #非空约束

)

CREATE TABLE god(
 g_id INT,
 g_name VARCHAR(50)NOT NULL,
 PRIMARY KEY(g_id)#两种主键写法都可以
);

 

#语法:alter table 表名 drop primary key;#删除表主键约束


#语法:alter table 表名 modify 字段名 数据类型 primary key;#创建表之后添加主键约束

联合主键:     

                 

CREATE TABLE god(
 g_id INT,
 g_name VARCHAR(50)NOT NULL,
 PRIMARY KEY(g_id,g_name)
);

        注意:在实际企业项目的数据库设计中,联合主键使用频率并不高;当一个张数据表中没 有明确的字段可以作为主键时,我们可以额外添加一个ID字段作为主键。

                  自增长约束(auto_increment):

                                每次+1,从1起

                当有些数据表中没有合适的列作为主键时,我们可以额外定义一个与记录本身无关的列 (ID)作为主键,此列数据无具体的含义主要用于标识一条记录,在mysql中我们可以将此 列定义为int,同时设置为 自动增长 ,当我们向数据表中新增一条记录时,无需提供ID列的 值,它会自动生成

CREATE TABLE god(
 g_id INT PRIMARY KEY auto_increment,
 g_name VARCHAR(50)NOT NULL

);

                检查约束(check):

                        保证列中的值满足某一条件

CREATE TABLE god(
 g_id INT PRIMARY KEY auto_increment,
 g_name VARCHAR(50)NOT NULL,
 g_age INT NOT NULL
	check(g_age >= 0 and g_age <= 200)
);

                默认约束(default):

                        保存数据时,未指定值则采用默认值

CREATE TABLE god(
 g_id INT PRIMARY KEY auto_increment,
 g_name VARCHAR(50)NOT NULL,
 g_age INT DEFAULT 500,
 g_elem CHAR(10) DEFAULT'水'
);

                外键约束(foreign key):

                        建立不同表之间的关联关系

修改约束

可以使用修改列的方式,删除,添加或修改约束

alter table 表名 modify 字段名 数据类型 [约束];

没有约束为删除约束,有约束为添加或修改约束

ALTER TABLE god MODIFY g_elem CHAR(10) NOT NULL;

DML数据操作语言

插入数据

insert into 表名(列名1, 列名2....) values(值1,值2....);

 

# 向数据表中指定的列添加数据(不允许为空的列必须提供数据)
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel)
values('20210101','张三','男',21,'13030303300');
# 数据表名后的字段名列表顺序可以不与表中一致,但是values中值的顺序必须与表名后字
段名顺序对应
insert into stus(stu_num,stu_name,stu_age,stu_tel,stu_gender)
values('20210103','王五',20,'13030303302','女');
# 当要向表中的所有列添加数据时,数据表名后面的字段列表可以省略,
#但是values中的值的顺序要与数据表定义的字段保持一致;
insert into stus values('20210105','孙琦','男',21,'13030303304','666666');
# 不过在项目开发中,即使要向所有列添加数据,也建议将列名的列表显式写出来(增强SQL
的稳定性)
insert into stus(stu_num,stu_name,stu_gender,stu_age,stu_tel,stu_qq)
values('20210105','孙琦','男',21,'13030303304','666666');

修改数据

update 表名 set 列名1=值1,列名2=值2 [where 条件];

 

# 将学号为20210105的学生姓名修改为“孙七”(只修改一列)
update stus set stu_name='孙七' where stu_num='20210105';
# 将学号为20210103的学生 性别修改为“男”,同时将QQ修改为 777777(修改多列)
update stus set stu_gender='男',stu_qq='777777' where stu_num='20210103';
# 根据主键修改其他所有列
update stus set stu_name='韩梅
梅',stu_gender='女',stu_age=18,stu_tel='13131313311' ,stu_qq='999999' where
stu_num='20210102';
# 如果update语句没有where子句,则表示修改当前表中所有行(记录)
update stus set stu_name='Tom';

删除数据

delete from 表名 where [条件];

 

# 删除学号为20210102的学生信息
delete from stus where stu_num='20210102';
# 删除年龄大于20岁的学生信息(如果满足where子句的记录有多条,则删除多条记录)
delete from stus where stu_age>20;
# 如果删除语句没有where子句,则表示删除当前数据表中的所有记录(敏感操作)
delete from stus;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值