【数据库】01_sql语句

前言

workbench是mysql的界面端,mysql也有很多终端,在开始菜单都能看见。

sql的server是服务器,workbench只是可视化界面。

数据库介绍

定义:按照数据结构来组织、存储和管理数据的仓库。

是一个长期存储在计算机内的、有组织的、可共享的、同一管理的大数据的结合。

简而言之就是:服务器上,可以按照固定格式,把你需要存的一些数据存起来。

规范化方便管理、查找、修改,可以加密、共享。

数据库由来:规范化的本地存储、加密、安全、共享。

主要是方便管理,有自己的格式。

数据库分类

两类:关系、非关系。

关系型数据库:二维表,典型代表:mysql、oracle、SQLServer

name-age,一对一或一对多对应关系。

非关系型数据库:也叫nosql,是以为映射key-value,典型代表redis、mongodb

id是一个,但是value可以有很多内容。

可以最好学一下redis。

非关系型也就是,每个value都可能不是一个类别,甚至数量都不是一样的。

workbench基础

root用户,管理员权限。

给其他用户权限。

 自己起的连接名字、用户名、ip地址和端口号。

localhost是本地环网,localhost3306,127.0.0.1本地环网。

也就是127.0.0.1:3306

正常是先用root用户登录。就是直接进第一个。

schema数据库,sys系统自带的。

简单建表

右键schema的空白,直接建表。

语句:CREATE SCHEMA `数据库名字` ;

下方指示位置,如果是绿色,则表示操作成功。

右键数据库,点击set as default设置成粗体,也就是常用的数据库。

数据库是按照表来管理的。表有列名、类型、特殊标识、特殊说明。

右键table,create table。

其中,类型:BIT位、ENUM枚举、VARCHAR(45)、NVARCHAR(45)、BIGINT、FLOAT、DOUBLE、DATE、DATETIME、TIME、JSON特殊格式字符串、TEXT()能存多个聊天文件等。

char、varchar、nvarchar区别:

如果是char,如果不够45,后面就用0补齐到45。

VAR和NVAR不用补齐。N是编码方式,N有中文。

VAR一个字符一个字节,NVAR宽字节,一个字符占两个字节。

后面:PK、NN等,都是列的选项,规范列用的。

PK主键,一般只有一个,例如学号是唯一标识。

NN不能是空,必须有数。

UQ唯一索引,这一列不允许重复,但是其他的能重复,并不是主键。

B二进制

UN无符号数据类型

ZF如果当前为空,如果是18,就给你存成18.000

AI自动增长

G可以用表达式,来生成内容,略复杂,一般不用。

CREATE TABLE `a`.`b` (
  `name` VARCHAR(45) NOT NULL,
  `age` INT NULL,
  PRIMARY KEY (`name`));

这就是创建了表的代码表达形式。 

在a数据库里建立了一个b表,里面两项是name和age,PK是name。

此后会有三个图标:i、扳手、表格

i:查看表信息,创建日期大小等。

扳手:修改表的属性格式

表格:执行查看语句,直接查看这个表格。

如果直接界面修改,不能忘记apply,才能真正添加到表格当中。

用户权限

management——user and privilege,管理用户和全选的,add直接添加。

limit:如果是%表示任意网卡,如果是localhost,必须是服务器所在的主机才能登录。

如果想异地登录,必须是%。就可以通过ip地址访问了。

password:123456

administrative Roles,DBA数据库管理员,如果选上,就全部选上了。

如果不是DBA,例如仅有select的话,那么就没有修改的权限,因此会失败。

至此,创建了用户,我们要用用户来登录数据库。

store value填写密码,然后test connection来尝试连接,一般是successfully。

至此,完成了从root到自定义用户,登录同一数据库的操作。

如果修改被denied的话,就说明权限不够。

默认保存成为sql后缀文件。

闪电:执行页面里所有的sql语句,但是如果选中其中一行的话,就是当前行,闪电光标是当前行。闪电是以分号来判断一个语句的,如果此行没有,那么就会找到分号来执行。

修改权限

第一个create a new sql tab,打开一个新的页面,来输入语句。

我们的用户没有root权限去修改表格,因此要回到root界面去输入指令来获取权限。

#是注释。

临时授权:grant 权限名 on 表名 to 用户名;

例如:grant update on sql.table to xxx;

这其中,数据库.表名,是表名的正确显示形式

一定要切换root用户来实现这一操作。

取消临时授权:revoke 权限名 on 表名 from 用户名;

例如:revoke update on sql.table from xxx;

如果删掉了用户,那么连接失效,会一直让你输入密码。

命名规则

数据库不区分大小写,一般都是用小写

表名一般以:t_xxx来写,列名:f_xxx来写,最好不要使用特殊字符。

t就是table,f就是flow(不确定)。

设置默认的数据库,就是set default,命令:use 表名;use sql;

创建数据表

create table 表名 (列名 类型 约束,列名 类型 约束...);

建表约束:

  1. PK主键约束primary key:值唯一,不允许重复,不可以为空,而且只有一个主键,主键就是索引。table可以没有主键。用户id
  2. UQ唯一unique:值唯一,不允许重复,但是可以为空,不是同一列才能重复。例如用户名
  3. 默认值default,如果不填,那么就全是同一个值。
  4. NN非空not null
  5. AI自增auto increment
  6. 外键约束foreign key
create table studentInfo(
	number int primary key,
    name varchar(45) unique,
    sex enum('男','女'),
    age int default 18
);

创建完之后不会立刻出现,要refresh数据库才行。

表格按键,可以用select * from 表名,来使用。也就是用这个方式来查看表。

与c++不同,是小括号,而不是大括号,列名+类型+关键字(可有可无)

注:小括号、单引号。

删除数据表

drop table 表名;

drop丢弃,一般数据库用这个,表示delete

删的时候立刻消失,不用refresh

直接选中执行,即使是重复语句,因为这并不是像c++一样从上到下,我们需要什么就执行什么就好了。

use newtable;
create table sss();
select * from sss;
drop table sss;

修改表

alter table 表名 加具体修改的内容;

具体包括:增加一列、修改列属性、删除列

增加一列:alter table 表名 add column 列名 类型 约束;

alter table Tablename add column school int;

修改列属性:alter table 表名 modify 列名 类型 约束;

alter table Tablename modify school varchar(45);

删除列:alter table Tablename drop 列名;

也就是:add、drop、modify三种方式修改

alter table studentinfo add column school int;
alter table studentinfo modify school varchar(45);
alter table studentinfo drop school;

查询语句

select 列名(*) from 表名;

*表示所有。

select name from Tablename;

select name name的别名, age age的别名 from Tablename;

即,你要查询的内容,变成了以别名为索引的特定列。

这只是临时的名字。

插入数据

insert into 表名 values(值);插入所有列。

insert into 表名(列名1,列名2...) values(值); 插入一些列。

修改数据

修改就是更新,update 表名 set 列名=值;(正常使用场景需要使用条件)

如果这么用:update Tablename set age=18;这是让所有人变成18。

但是没这么干的...安全模式,不允许你这么干。

edit——preference——sql editor,点safe,然后重启,就会有错误提示了。

条件修改:

update Tablename set age=18 where name='张三';

where是条件,什么=什么。注意单引号是字符串varchar。

删除数据

delete from 表名;

一般只是删除一行,不可能都删除。

查询条件

一般是复杂的查询条件:

  1. 相等:where 列名 = 值;
  2. 不相等:where 列名 != 值; 只有mysql支持!=不等号。其余的是:where 列名<>值;
  3. 或者:or连接两个条件
  4. 并且:and连接
  5. 介于之间:between and
  6. 范围内:in
  7. 不在范围内:not in

模糊查询

where 列名 like 模糊表达式;

模糊表达式:

  • %:匹配任意0到到多个字符,姓张的所有人。甚至就叫一个单字张,也能搜出来。
  • _:匹配任意1个字符,例如张_,就只能搜索出张三,而不能搜出张大仙。
  • _张_就是这人是三个字的名字中间是张,%张%就是无所谓了,有张就行。
# 查询语句
select * from studentinfo;
select name from studentinfo;
select name 名字, age 年龄 from studentinfo;# 起别名,但是只是临时的

# 插入数据
insert into studentinfo value(4,'王五','男',20);# 按照顺序
insert into studentinfo(number,name,sex) value(5,'小花','女');# 指定列

# 修改数据
update studentinfo set age=88 where name='张三';
# 删除数据
delete from studentinfo where name ='小花';

# 等于
select * from studentinfo where age >= 18;
select * from studentinfo where age < 18;

# 不等于
select * from studentinfo where age != 18;
select * from studentinfo where age <> 18;

# 或者
select * from studentinfo where sex = '女' or age = 20;
# 并且
select * from studentinfo where sex = '男' and age = 19;

# 两者之间
select * from studentinfo where number between 1 and 3;
# 范围内
select * from studentinfo where number in (1,3,5);
# 不在范围内
select * from studentinfo where number not in (1,3,5);

select * from studentinfo where name like '张%';
select * from studentinfo where name like '张_';
select * from studentinfo where name like '%张%';
select * from studentinfo where name like '_张_';
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值