当前位置: 首页 > 编程日记 > 正文

c潭州课堂25班:Ph201805201 MySQL第二课 (课堂笔记)

mysql> create table tb_2(
-> id int,
-> name varchar(10) not null
-> );

插入数据 insert into tb_2 value(1,'xiaobai');   在非空时,NOT NULL 必须有值,

2,在已有的表中设置一个字段的非空约束

mysql> alter table tb_2
-> modify id int not null;

取消非空约束

mysql> alter table tb_2
-> modify id int:

mysql> create table t3
-> (id int unique key,
-> name varchar(10);

unique key  字段不可重复,否则报错,

2, 在已有的表中添加唯一约束

方法1

mysql> alter table t3
-> add unique key(name);

方法2

alter table t3
-> modify name varchar(10) unique key;

alter table t3 modify id int unique key;

删除唯一

mysql> alter table t3
-> drop key name;

主键的作用: 可以唯一标识一条数据,每张表里只能 有一个主键,

主键特性:  非空且唯一,当表里没有主键时,第一个非空且唯一的列,被当成主键,

创建定有主键的表

create table t4(
-> id int primary key,
-> name varchar(10));

在已有的表中设定主键

方法1

> alter table t4
-> add primary key(id);

方法2

> alter table t4

>modify id int primary key;

删除主键

mysql> alter table t4
-> drop primary key;



auto_increment  自动编号,要与键一起使用,一般与主键一起使用,一个表里只有一个自增长,

默认情况下起始值为 1,每次的增量为 1,

新建个有自增长的表

create table tb5(
-> id int primary key auto_increment,
-> name varchar(10)

->)auto_increment = 100;     设 auto_increment 从100开始

插入 name  的值,

insert into tb5 (name) values('a'),('b'), ('c');

这里的 ID 字段自增长,

给已有表添加自增长:

alter table tb5
-> modify id int auto_increment;

删除:

alter table tb5
-> modify id int;

default 初始值设置,插入数据时,如果没有给该字段赋值,则会给以默认值,

新建个表

create table tb6(
-> id int primary key auto_increment,
-> name varchar(10),
-> age int not null default 18
-> );

插入 name 值 ,这里 id 自增长,age 不传值则默认18

insert tb6 (name) values('a'),('b'),('c');

insert into tb6 set name='qq',age=20;

删除默认约束

alter table tb6
-> modify age int;

给已有的表添加默认约束

alter table tb6 modify age int default 20;

fofeign key 保持数据一致性完整性,实现一对一,一对多,多对多的关系,

外键必须关联到键上,一般是关联另一个表的主键,

因为一个表只存一类信息,所以用键来做参照,可以减少数据冗余,

建 a 表

create table a(
-> a_id int primary key auto_increment,    唯一性,自增长,
-> a_name varchar(20) not null        非空
-> );  

insert into a values(1,'a1'),(2,'a2');      插入数据

建个 b 表

create table b(
-> b_id int primary key,
-> b_name varchar(20) not null,
-> fy_id int not null,
-> constraint AB_id foreign key(fy_id) references a(a_id)
-> );

b 表中 fy_id 的字段只能添加 a 表中的 a_id 中已有的数据,

此时 ,a 表 a_id 的数据不能被修改和删除,

删除外键

alter table b drop foreign key AB_id;

添加外键

alter table `b`
-> add constraint AB_id foreign key(fy_id) references a(a_id);

 

通常一个学校可以有很多学生,而一个学生只属于一个学校,

学校与学生的关系就是一对多的关系,通过外键关联实现,

创建学院表

create table tanzhou(
-> t_id int primary key auto_increment,     学院 id
-> t_name varchar(10) not null          学院名
-> );

创建学生表

create table stu(
-> s_id int primary key auto_increment,    学生 id
-> s_name varchar(10),            学生名
-> tz_id int not null,              所属学院 id
-> foreign key(tz_id) references tanzhou(t_id)
-> );

创建学生详情表

create table stu_d(
-> id int primary key,
-> age int ,
-> address varchar(20) comment '家庭住址',
-> home_num varchar(20),
-> foreign key (id) references stu(s_id)
-> );


创建一张课程表

create table k_c_b(
-> kid int primary key not null,
-> kname varchar(10),
-> ke_shii int
-> );


创建选课表

create table x_k_b(
-> xid int primary key not null,
-> kid int unique key,
-> sid int,

->primary key(kid, sid),     这行为联合组键,意义在同一学生不能选两次一样的课程,
-> foreign key(kid) references k_c_b(kid),        引课程表
-> foreign key(sid) references stu(s_id)    引学生表 
-> );

补充

数据类型

tinyint     1 字节     -128 --》》127

smallint    2字节     -12768--》12768

int     4字节      -2147483643--》2147483643

bigint    8字节

float    4字节

double    8字节

double(5,2)    表示 5位数,2位小数, 如:999.99

char

char(3)  3个字节

varchar

varchar(20)   从0到20个字节

tmestamp

创建个员工表

主键,自增

create table ygb(
id int primary key auto_increment,
age int,
sex char(5),
xin_shui DOUBLE(7,2)
);

desc ygb;

添加字段

alter table ygb ADD 入值时间 tinyint 

alter table ygb ADD 入值时间2 DATE NOT NULL ;


一次多个字段
alter table ygb ADD a int,
ADD b INT ,
add c INT ;

删除字段
alter table ygb DROP a;
alter table ygb DROP b,
DROP c;


改字段  默认值为 18 放在 id 的后边
alter table ygb modify age SMALLINT DEFAULT 18 after id;


改字段名
alter table ygb change name 姓名 VARCHAR (20);

改表名

rename table ygb to 员工表;

插入数据
insert into ygb (id,name,age,sex,xin_shui)
values(1,'aa',18,'boy',17000.00)

查询
select * from ygb;

insert into ygb (name,sex,xin_shui)
values('ab','boy',17000.00);

  id 自增,gae 默认值,

这样写要对应着字段写全

insert into ygb VALUES (10,'bb',20,'g',5000);

插入多组

insert into ygb (name,sex,xin_shui)
values('ac','boy',17000.00),
('ad','g',3000),
('af','b',3000);


set 插入
insert into ygb set name = 'cc'


改:
update ygb set xin_shui=xin_shui+2000 where id=10;
在原有基础上加,如果不加条件,将对所有添加


删除
delete from ygb where id=11 or id=12;

删除字段  alter table 表名 drop 字段名;:

删表:留下空表,

delete from ygb ;    一条条删

truncate table ygb;  整个删除,重建 个空表






建一成绩表

create table c_j_b(
id int primary key auto_increment,
name varchar(20),
js DOUBLE,
django DOUBLE,
python DOUBLE );


insert into  c_j_b(name,js,django,python)
values('aa',70,80,90),
('ab',78,91,81),
('ac',80,82,79),
('af',88,82,89),
('bb',78,76,79),
('cc',88,77,65);

select name from c_j_b;

select name,js from c_j_b;

重复只出现一次  distinct

select distinct js from c_j_b;

这只是显示,并没有改库,

elect name,js+10,django+10,python+10 from c_j_b;

 

select name as 姓名,js as js成绩,django as django成绩,

python as python成绩 from c_j_b;_j_b;

select name js from c_j_b where js>80;

查 70 到 90 内的 between

select name, js from c_j_b where js between 70 and 90;

查 in里边的是否有

select name ,js from c_j_b where js in (78,90,70);

模糊匹配  like'a%'   like'a__'

select name ,js from c_j_b where name like'a%';

select name from c_j_b where js is null;\

排序

select  name,JS from c_j_b ORDER BY JS;


 select  name,JS from c_j_b ORDER BY JS desc;



select name,JS+django+python as 总成绩 from c_j_b;
+------+-----------+
| name | 总成绩 |
+------+-----------+
| aa | 240 |
| ab | 250 |
| ac | 241 |
| af | 259 |
| bb | 233 |
| cc | 230 |
| jj | NULL |
+------+-----------+

总成绩排序,从低到高,

select name,JS+django+python as 总成绩 from c_j_b order by 总成绩 desc;
+------+-----------+
| name | 总成绩 |
+------+-----------+
| af | 259 |
| ab | 250 |
| ac | 241 |
| aa | 240 |
| bb | 233 |
| cc | 230 |
| jj | NULL |
+------+-----------+


分组 group by
select name from c_j_b group by name;


分组后
  
     分组后 js 的和,      按名字分组

select name sum(js) from c_j_b group by name;

把分组后,js 的总分大于150的打印,group by 后不可用 where ,要用 havin,

select name sum(js) from c_j_b group by name having sum(js) >150;

group by 前用 where, 其后用 having,

说明,如果 字段中有 null,此时他与谁计算都 分得到个 null,

所以  ifnull(js,0),  如果 js 里有null 那就让他 = 0.

显示

select * from c_j_b; limit 3;

select * from c_j_b; limit 1:4;

转载于:https://www.cnblogs.com/gdwz922/p/9241551.html

相关文章:

vanpopup 高度_解决VantUI popup 弹窗不弹出或无蒙层的问题

背景####组件PopupTime.vue把vant官网的popup时间选择器抽成组件:popup1show: true 即弹窗显示:title"popupTitle.popupName"v-model"currentDate"type"datetime"cancel"onCancel" confirm"onConfirm" class&quo…

区块链技术入门,都涉及哪些编程语言?

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 关于区块链的技能掌握,提到最多的就是Go语言和C、Java,但是很多人产生了歧义,认为只有这几种语言才可以&#x…

centos安装配置nginx,ssl生产和配置教程

【一】nginx安装nginx安装带ssl扩展: cd /usr/local/src #进入用户目录 wget http://nginx.org/download/nginx-1.15.0.tar.gz #下载最新版本nginx tar -zxvf nginx-1.15.0.tar.gz #解压 cd nginx-1.15.0 #进入目录 ./configure --prefix/opt/nginx --with-http_stu…

如何将github上的 lib fork之后通过podfile 改变更新源到自己fork的地址

解决办法: http://stackoverflow.com/questions/20936885/cocoapods-and-github-forks 就是fork完后,提交更改到自己的github上 然后修改podfile的pod导入方式 pod lib,:github>your fork lib.git,:commit >your commitid转载于:https://www.cnblogs.com/code…

证书 vivo_iQOO 5 Pro获泰尔实验室首张流畅性能体验五星证书

近日,中国泰尔实验室向vivo旗下的iQOO 5 Pro(V2025A)型号手机颁发了流畅性能体验五星证书。据中国泰尔实验室官方表示,这是“泰尔证书-流畅性能体验”测评方案推出后的首张证书。“泰尔证书-流畅性能体验”测评方案据悉,“泰尔证书-流畅性能体…

GUI编程之tkinter

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 0. 前言 本文内容为使用Python3的tkinter模块,开发GUI。在阅读本文前,请确保你已经或可能满足以下条件: 电脑中…

js插件 webp_(转)让浏览器支持Webp

转载自:https://segmentfault.com/a/1190000005898538?utm_sourcetuicool&utm_mediumreferral转换工具判断浏览器支持webP方法一:functioncheckWebp() {try{return (document.createElement(canvas).toDataURL(image/webp).indexOf(data:image/webp…

一些大佬博客里的个签

觉得很励志~遇到了就复制下来激励自己。 1.宜静默,宜从容,宜谨严,宜俭约。 //读了两遍感觉心都静下来了。 2.别打扰我,我还能写一套程序。 3.时间并不会因为你的迷茫和迟疑而停留,就在你看这篇文章的同时&#xff0c…

以太坊搭建私有链

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1.关于私有链 在以太坊上部署智能合约、发起交易需要花费以太币。而私链和公有链没有关系,不用同步大量的数据,也不用花钱购…

C++回溯法走迷宫

1 #include <iostream> 2 #include <iomanip> 3 #include <cstdlib> 4 using namespace std;5 6 #define MaxSize 100 7 int maze[10][10] //定义一个迷宫&#xff0c;0表示通道&#xff0c;1表示墙 8 {9 { 1,1,1,1,1,1,1,1,1,1 },10 { 1,0,…

js放大镜特效

原理分析&#xff1a;当鼠标在小图片上移动时&#xff0c;通过捕捉鼠标在小图片上的位置&#xff0c;定位大图片的相应位置。&#xff08;同时&#xff0c;当鼠标在小图片上移动时&#xff0c;右侧大图片往相反的方向移动。&#xff09; 放大镜特效设计&#xff1a; ①页面元素…

5页面返回上个页面定位_5个步骤,画好页面流程图

对于任何产品设计来说&#xff0c;构建流程都是一个绕不开的环节。其奠定了后续的产品框架&#xff0c;是用户体验的基石。本文将从定义和方法出发&#xff0c;结合实际案例&#xff0c;深入浅出地阐述流程图的作用以及画法。最近在做一个关于阅读笔记的原型&#xff0c;业务流…

EOS智能合约:system系统合约源码分析

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 eosio.system 概览 笔者使用的IDE是VScode&#xff0c;首先来看eosio.system的源码结构。如下图所示。 本文分析的源码来自于eosio.contracts。 …

文字超过省略_从楚篆到楚玺的文字结构

从古文字研究的角度来说&#xff0c;楚玺文字也是楚文字系统中重要的组成部分。古文字发展演变的一般规律&#xff0c;如简化、繁化、异化、分化、类化等在印章上也有反映。在楚系简帛书没有大量出土发现和研究出版前&#xff0c;楚玺研究的文字参照物不多&#xff0c;主要是依…

caffe prototxt分析

测试用prototxt name: "CIFAR10_quick"layer {name: "data" type: "MemoryData" top: "data" top: "label" memory_data_param {batch_size: 1 #样本个数 channels: 3 height: 32 width: 32 }}layer {name: "conv1…

Mysql与Oracle区别

Mysql与Oracle区别 文章分类:数据库 周五去一家公司去面试&#xff0c;那公司经理问了关于Mysql与Oracle的区别问题&#xff0c;以前没有总结&#xff0c;回答也不是很好&#xff0c;只是凭感觉&#xff0c;先总结如下&#xff1a; 1. Oracle是大型数据库而Mysql是中小型数据库…

区块链 + 大数据:EOS存储

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 谈到区块链的存储&#xff0c;我们很容易联想到它的链式存储结构&#xff0c;然而区块链从比特币发展到今日当红的EOS&#xff0c;技术形态已经演化…

全网最全的Windows下Anaconda2 / Anaconda3里Python语言实现定时发送微信消息给好友或群里(图文详解)...

不多说&#xff0c;直接上干货&#xff01; 缘由&#xff1a; &#xff08;1&#xff09;最近看到情侣零点送祝福&#xff0c;感觉还是很浪漫的事情&#xff0c;相信有很多人熬夜为了给爱的人送上零点祝福&#xff0c;但是有时等着等着就睡着了或者时间并不是卡的那么准就有点强…

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo

更新了xcode后使用goland运行项目时提示 Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo 更具提示打开xcode 点击agree安装即可&#xff01; 转载于:https://www.cnblogs.com/mafeng/p/6196494.html

arc diff 指定版本号_Phabricator客户端安装

前提需要配置好服务器端客户端安装mac环境下&#xff0c;指定一个目录$ mkdir somewhere/$ cd somewhere/somewhere/ $ git clone https://github.com/phacility/libphutil.gitsomewhere/ $ git clone https://github.com/phacility/arcanist.git配置环境变量&#xff0c;在.ba…

EOSIO 转帐详解

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 EOS和EOS的不同之处 在EOS网络中存在两种货币&#xff0c;一种是EOS&#xff0c;还有一种是EOS网络中的代币。说到这里大家似乎有点疑惑&#xff0…

各种函数调用约定及浮点数传参

32位下_stdcall, _fastcall, _cdecl #include <windows.h>int _stdcall Func1(int a, int b, int c, int d) {return abcd; } int _fastcall Func2(int a, int b, int c, int d) {return abcd; } int _cdecl Func3(int a, int b, int c, int d) {return a b c d; }…

cookie、session总结

前几天在调试第三方支付接口时碰到一个session失效问题&#xff0c;用了几天时间才搞明白&#xff0c;现在回想一下&#xff0c;主要还是由于cookie和session这一块的一些基本概念没有搞清楚&#xff0c;现总结一下。 浏览器使用HTTP协议作为应用层协议&#xff0c;而HTTP协议是…

glibc降级后怎么恢复 linux_Linux(CentOS)GLIBC出错补救方式

出于各种原因&#xff0c;我玩坏了我的系统.........主要出错原因是更改 /usr/lib64 下的 libc.so.6 等文件引起&#xff0c;具体错误及补救方式附上&#xff0c;希望可以帮到心里失火后来人&#xff1a;首先&#xff0c;不要随便重新启动&#xff01;&#xff01;&#xff01;…

将Eclipse代码导入到AndroidStudio的两种方式

实现步骤 1. 从Eclipse中导出Gradle build files 在Eclipse菜单中 File --> Export-->Generate Gradle build files接下来会到达警告界面&#xff0c;这里会提示AndroidStudio可以直接导入ADT的工程&#xff0c;先过&#xff0c;后面有直接导入的讲解。选中你的项目工程&…

微软浏览器适配问题前端_「图」微软新贡献:修复Chromium浏览器的奇怪触控板手势问题...

去年微软宣布计划成为Chromium项目的重要贡献者之一&#xff0c;希望为包括Edge和Chrome在内所有基于Chromium的浏览器带来更多改进和功能。在增强鼠标滚动和搜索功能之外&#xff0c;微软现在将部分精力放在部分Windows 10设备(例如Surface Pro系列和Surface Book系列)上奇怪的…

ruby gems列表

1 https://github.com/shageman/cobradeps 转载于:https://www.cnblogs.com/or2-/p/9268352.html

简明区块链原理

链客&#xff0c;专为开发者而生&#xff0c;有问必答&#xff01; 此文章来自区块链技术社区&#xff0c;未经允许拒绝转载。 “区块链”应有特质&#xff1a; 使用了具有 “哈希链” (下文有解释) 形式的数据结构保存基础数据 有多个结点参与系统运行&#xff08;分布式…

Bash shell

一、认识bash shell 1、登录取得的shell就记录在/etc/passwd这个文件内 可以使用cat /etc/passwd查看 2、bash shell 功能 a. 命令记忆能力&#xff08;history&#xff09;&#xff0c;默认1000个&#xff0c;存在~/.bash_history文件 b. 命令与文件补全功能&#xff08;Tab键…

快过高铁!构建云分布式应用还能这样操作?!

先跟跟大家说一个中国历史上杰出的军事家、政治家&#xff0c;长长的胡子&#xff0c;红的发黑的脸&#xff0c;骑着一匹红色的马。没错&#xff01;他就是三国跑的最快的男人——曹操&#xff08;说曹操曹操到&#xff09;&#xff01; 不说笑了。 关羽&#xff0c;字云长&…