约束条件和数据库的用户管理

数据库的增删改查

约束条件和用户管理

约束条件:

主键

主键约束 primary key

用于标识表中的主键列的值,而且这个值是全表当中唯一的,而且值不能为null。

一个表只能有一个主键。

外键:用来建立表与表之间的关系。确保外键中的值与另一个表的主键值匹配。保证数据引用的完整性。

多表联查,不要超过三张。超过三张表,会降低查询效率。

非空约束:保证列中的值不含null值

唯一性约束:

唯一性约束:确保列中的所有值都是唯一的,类似主键,但是一个表可以有多个唯一约束。

自增约束:

自增约束:在列生成的每一行都会自动生成一个唯一标识符,通常和主键一起使用,每次插入新行时,自增列的值会自动增加。

扩展语句:

CREATE TABLE if not exists test01 (
#表示在创建表时自动检测表是否已经存在,如果不存在就创建。
id int(5) ZEROFILL PRIMARY KEY auto_increment,
#ZEROFILL,5位,不足5位会自动填充0。auto_increment 自动增长字段,每条记录自动递增1,自增长必须是主键,也不可以重复。如果添加失败,下一条记录也会自动增加。
name char(10),
score decimal(5,2),
address varchar(128)
);
INSERT into test01 (name,score,address) VALUES(null,"阿斯顿",87,"南京");
INSERT into test01 VALUES(null,"周星驰",87,"南京");

CREATE TABLE `class` (`stu_id` int(11) unsigned zerofill NOT NULL AUTO_INCREMENT,`address` varchar(128) DEFAULT '地址不详',`crad_id` int NOT NULL,PRIMARY KEY (`stu_id`),KEY `crad_id` (`crad_id`),CONSTRAINT `class_ibfk_1` FOREIGN KEY (`crad_id`) REFERENCES `student` (`crad_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;

删除外键:

mysql> show CREATE TABLE class2;CONSTRAINT `class2_ibfk_1` FOREIGN KEY (`crad_id`) REFERENCES `student2` (`crad_id`)ALTER TABLE class2 DROP FOREIGN key class2_ibfk_1;

外键就是和主表进行关联的列,不需要设置为从表的主键,但是不能为空,必须和主表的数据类型保持一致。

外键的值和主键的值要相同。

先插入主表的数据,再插入从表的数据

删除表的外键不是直接删除外键的列名,而是删除外键的索引,show create table 表名; 查看表的详细信息。

删除主键不需要加上主键的列名,如果有extra的额外属性,比如说自增长,要先移除属性,然后才能删除主键。

删除主键的方式:alter进行修改

复制表:

CREATE TABLE stu_012 like stu01;    #只复制表
INSERT INTO stu_012 SELECT * from stu01;    #只复制表中数据
CREATE TABLE stu_02 (SELECT * from stu01);      #既复制表,又复制表中数据

临时表:

临时表创建完成之后,在库里面是看不到的,但是依然可以增删改查,但是重新连接之后,临时表就消失了。

清空表:

drop 删除表

如何删除表内的数据,但是保留表和表内结构:

delete  from  表名;    #是一行一行的清空表数据,速度比较慢,如果有自增长字段,delete清空之后会继续按照原来的序号继续递增
truncate  table  表名;    #也是清空表,保留表结构,但是清空之后原有的记录全部抹去,自增长也将从头开始,速度比较快。

数据库的用户管理:

root都是相同的,host:可以登录的主机,localhost指的是本地登录 %:任意主机(IP地址)。

权限上:localhost > %的权限

创建用户:

root@local host 安装完mysql之后就有了,不需要额外设置。其他的都需要人工创建。

其他的用户也不设置成localhost ,都是设置主机名。

create user 'zxc'@'192.168.60.92' identified by '123456';       #创建用户名和密码

identified by '123456' 就是创建密码

删除用户:

mysql> drop user 'zxc'@'192.168.60.92';

设置用户权限:

grant all privileges on *.* to 'zxc'@'192.168.60.92' ;  #给创建的用户赋权

all 给与所有权限 远程登录,数据库的操作权限(增删改查)

*.* *:表示库 *:库里的表

information_schema:这个库的作用包含了mysql服务器中所有其他数据库,表,列。索引权限等详细的元数据的信息,可以查询数据库的结构和元信息

performance_schema:包含mysql的服务性能和资源的利用情况。查询语句的执行时间和锁定等信息。

usage 允许改用户连接到数据库服务器。

mysql> grant insert,update,alter,delete on xy102.* to 'qwe'@'192.168.60.922';       #设置用户的增删改查权限
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;        #刷新权限
Query OK, 0 rows affected (0.00 sec)

取消权限:

mysql> revoke insert,update,alter,delete on xy102.* from 'qwe'@'192.168.600.92';        #删除用户的增删改查权限
Query OK, 0 rows affected (0.00 sec)
mysql> flush privileges;        #刷新权限
Query OK, 0 rows affected (0.00 sec)

mysq的免密登录

[root@mysql1 ~]# vim /etc/my.cnf
18 server-id = 119 skip-grant-tables       #加入这一行20 sql_mode = STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION

补充

insert插入数据时,时间类型

date

datetime

timestamp

CREATE TABLE stu06 (
id int(5) primary key,
name char(10) ,
date_time date not null ,
date_times datetime,
date_timee timestamp 
);

实验:

增删改查日测题(上机实操) 1、创建库,库名 country

2、创建表,表名 province和city 要求如下:

1)、province包含字段: ct_id为区号,最多四位 主键; ct_name 城市名 最长5位,不能为空,不能重复 ct_scale 城市规模,可重复,不能为空。

CREATE TABLE province (
ct_id int(4) ZEROFILL PRIMARY KEY ,
ct_name char(5) not null UNIQUE key,
ct_scale char(10) not NULL
);
desc province;

2)、city包含字段 c_id 主键 c_street 不能为空,不能重复。 c_subway int 不能重复 可以为空 c_weather 字符串 可以空 默认值:晴

CREATE TABLE city (
c_id int(4) ZEROFILL PRIMARY KEY ,
c_street char(20) not null UNIQUE key,
c_subway int(10) UNIQUE key,
c_weather char(5) DEFAULT '晴',
ct_id int(4) ZEROFILL,
FOREIGN key (ct_id) REFERENCES province (ct_id)         #通过修改表city,创建外键关联province的主键,ct_id。
);
desc city;

分别插入5条数据,任选。不限制

展示表1的前两行,展示表2的2-4行

SELECT * from province limit 0,2;
SELECT * from city limit 1,3;

有重复数据,去重查询。

SELECT DISTINCT c_weather from city;

修改表city,将c_weather的默认值改为:不详

alter TABLE city MODIFY c_weather char(5) DEFAULT '不详';

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/47240.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微信小游戏 彩色试管 倒水游戏 逻辑 (四)

最近开始研究微信小游戏,有兴趣的 可以关注一下 公众号, 记录一些心路历程和源代码。 定义了一个名为 WaterFlow class,该类继承自 cc.Graphics,用于在 Cocos Creator 中创建和显示水流的动画效果。下面是对代码的详细解释&#x…

FPGA FIR fdatool filter designer MATLAB

位数问题 fdatool 先确定输入信号的位宽,比如17位在fdatool中,选set quantization parameters 选input/output 设置input word length 为17bit(not confirmed) fir compiler implementation 注意: 当设置输入位宽为16位时,ip核…

Linux系统部署MySQL数据库

1.Linux插入光盘,使用df-h获取光盘信息,默认/dev/sr0文件为光盘文件 使用命令 mount -o ro /dev/sr0 /media进行手动挂载 mount -o ro /dev/sr0 /media 2.进入cd /etc/yum.repos.d目录 编辑配置yum库,编辑vim yum.repos [BaseOS] nameba…

Flutter 状态管理新境界:多Provider并行驱动UI

前言 在上一篇文章中,我们讨论了如何使用 Provider 在 Flutter 中进行状态管理。 本篇文章我们来讨论如何使用多个 Provider。 在 Flutter 中,使用 Provider 管理多个不同的状态时,你可以为每个状态创建一个单独的 ChangeNotifierProvider…

node+MySQL+Express实现账户登录,注册,重置之登录篇

nodeMySQLExpress实现账户登录 实现技术开发工具项目结构效果图app.js代码db.jsrouter下的account.jsdb下的account.jslogin.html数据库结构 实现技术 node.js,MySQL5.7(8.0以上版本会报错),layui(前端框架),Express notify(消息通知layui插件) 开发工…

如何使用在线工具将手机相册中的图片转换为JPG格式

我们经常在手机相册中保存大量的图片,无论是家庭聚会的照片还是旅行的瞬间,每一幅图像都承载着珍贵的记忆。然而,有时候我们会遇到图片格式不兼容的问题,尤其是在需要将图片分享到特定平台或编辑时。 例如,某些社交平台…

Java语音转文字及文字转语音教学 (离线版)

1. 语音转文字 1.1 maven导入以下包 <!-- 获取音频信息 --> <dependency><groupId>org</groupId><artifactId>jaudiotagger</artifactId><version>2.0.3</version> </dependency><!-- 语音识别 --> <dependen…

C++知识要点总结笔记

文章目录 前言一、c基础1.指针和引用指针和引用的区别函数指针 2.数据类型整型 short int long 和 long long无符号类型强制类型转换 3.关键字conststaticconst和static的区别define 和 typedef 的区别define 和 inline 的区别const和define的区别constexprvolatileextern前置与…

Linux服务器LVM分区扩展

1、检查服务器当前分配磁盘 查看服务器物理磁盘分配情况&#xff0c;可见服务器当前配置磁盘SDA共250G&#xff0c;已划分区sda1:4G&#xff0c;sda2:146G&#xff1b;其中sda2分区分为两个lvm分区&#xff08;centos-root和centos-swap&#xff09;; 查看磁盘分区挂载情况&am…

【实战】安装Webtours

首先&#xff0c;安装jdk。过程如下图。 添加环境变量&#xff0c;如下图。 安装activeperl&#xff0c;如下图。 复制Webtours文件夹到计算机中&#xff0c;之后双击webtours文件夹中的xigui32.exe&#xff0c;启动webtours的应用服务器。 之后&#xff0c;可以在任务栏右下角…

CSA笔记2-文件管理命令

tree 以树状图显示多级目录 示例&#xff1a; [rootlocalhost ~]# tree haha/ haha/ └── 111 └── 222 2 directories, 0 files [rootlocalhost ~]# tree -L 1 haha/haha/ └── 111 echo > >> < << 示例&#xff1a; [rootxxx ~]#…

Linux限速工具:FlowMaster - IP级网络流量控制脚本

目录 前言&#xff1a; Github加速器&#xff1a; 简介 功能 安装方法 使用方法 数值单位 基本命令 选项 示例 启动 FlowMaster 重启 FlowMaster 停止 FlowMaster 查看状态 查看 Iptables 设置 许可证 贡献 联系我们 前言&#xff1a; 在市面上看了好多关于网…

MySQL执行状态查看与分析

当mysql出现性能问题时&#xff0c;一般会查看mysql的执行状态&#xff0c;执行命令&#xff1a; show processlist 各列的含义 列名含义id一个标识&#xff0c;你要kill一个语句的时候使用&#xff0c;例如 mysql> kill 207user显示当前用户&#xff0c;如果不是root&…

比Snipaste还好用的截图工具?

千鹿设计助手&#xff1a;千鹿设计助手官网 - 设计师效率神器 最近新出的一款截图工具千鹿设计助手&#xff0c;比Snipaste功能多一些。在Snipaste功能基础上&#xff0c;还支持长截图&#xff0c;截动图&#xff0c;还实时保留截图记录、支持OCR识别、文本识别、图片智能处理…

【CSS in Depth 2 精译_018】3.1.2 逻辑属性 + 3.1.3 用好逻辑属性的简写形式

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第一章 层叠、优先级与继承&#xff08;已完结&#xff09; 1.1 层叠1.2 继承1.3 特殊值1.4 简写属性1.5 CSS 渐进式增强技术1.6 本章小结 第二章 相对单位&#xff08;已完结&#xff09; 2.1 相对…

Prometheus 云原生 - Prometheus 数据模型、Metrics 指标类型、Exporter 相关

目录 开始 Prometheus 数据类型 简单理解 时序样本 格式 和 命名要求 Metrics 指标类型 Counter 计数器 Gauge Histogram Summary Exporter 相关 概述 Exporter 类型 Exporter 规范 开始 Prometheus 数据类型 简单理解 a&#xff09;安装好 Prometheus 后会暴露…

乘积量化pq:将高维向量压缩 97%

向量相似性搜索在处理大规模数据集时&#xff0c;往往面临着内存消耗的挑战。例如&#xff0c;即使是一个包含100万个密集向量的小数据集&#xff0c;其索引也可能需要数GB的内存。随着数据集规模的增长&#xff0c;尤其是高维数据&#xff0c;内存使用量会迅速增加&#xff0c…

2024年大数据高频面试题(中篇)

文章目录 Kafka为什么要用消息队列为什么选择了kafkakafka的组件与作用(架构)kafka为什么要分区Kafka生产者分区策略kafka的数据可靠性怎么保证ack应答机制(可问:造成数据重复和丢失的相关问题)副本数据同步策略ISRkafka的副本机制kafka的消费分区分配策略Range分区分配策略…

SAP ABAP性能优化分析工具

SAP系统提供了许多性能调优的工具&#xff0c;重点介绍下最常用几种SM50, ST05, SAT等工具&#xff1a; 1.工具概况 1.1 SM50 / SM66 - 工作进程监视器 通过这两个T-code, 可以查看当前SAP AS实例上面的工作进程&#xff0c;当某一工作进程长时间处于running的状态时&#…

每日OJ_牛客_删除公共字符(暴力+哈希)

目录 牛客_删除公共字符 法一代码&#xff08;暴力&#xff09; 法二代码&#xff08;哈希&#xff09; 牛客_删除公共字符 删除公共字符__牛客网 法一代码&#xff08;暴力&#xff09; 暴力查找方式&#xff0c;如判断第一个串的字符是否在第二个串中&#xff0c;在再挪动…