MYSQL增删改查添加外键
给商品表(从表)添加一个外键
ALTER TABLE product ADD CONSTRAINT FK_cno FOREIGN KEY(cno) REFERENCES category(cid 从表);
sql语句的执行顺序是:from-->WHERE-->GROUP BY -->HAVING --- >ORDER BY --> SELECT;
sql语句的编写顺序是:select -> FROM -> WHERE -> GROUP BY -> HAVING -> ORDER BY;
转换代码:convert(字段名 using gbk)
命令启动:services.msc 找到MySQL启动
dos窗口启动cmd MySQL -u root{默认账户} -p 显示输入密码没有密码直接回车
创建数据库:create database 名字;
查看数据库:show databases;
创建表:CREATE TABLE s(id INT(50),NAME VARCHAR(50),sex CHAR(2),birthday DATETIME);
date(精确到年月日)datetime(精确到年月日时分秒)
删除表:drop table customer;
ALTER TABLE kehu RENAME customer; -- 修改表名
ALTER TABLE customer ADD age INT(20); -- 增加表字段
ALTER TABLE customer DROP sex; -- 删除表字段
ALTER TABLE customer CHANGE 字段名 xinming VARCHAR(50); -- 修改表字段
插入数据(录入数据):
INSERT INTO customer(id,NAME,sex,birthday)VALUE(888,'李四','男','1997-12-9');
数据类型varchar(字符串) int(整数) char(字符) date datetime 就只有这几种
补充 tinyint -(整数,但是只有255位 -127 to 128(有符号)0 to 255(无符号) )一般用于年龄
表约束:
主键(primary key):物理上存储的顺序
非空(not null):此字段不允许填写空值
惟一(unique):此字段的值不允许重复
默认值(default):当不填写此值时会使用默认值,如果填写时以填写为准
外键(foreign key):维护两个表之间的关联关系
UNSIGNED
无符号的
声明该数据列不允许负数
ZEROFILL
0填充的
不足位数的用0来填充,如 int(3),5则为 005
AUTO_INCREMENT
自动增长的,每添加一条数据,自动在上一个记录数上加1
通常用于设置主键,且为整数类型
可定义起始值和步长
-- 查询表数据
· SELECT sid,sname FROM student;
单字段查询(执行效率高)
SELECT * FROM student;
全表查询
用*是全表查询(执行效率低),
条件查询:
-- 需求一:查询学号为111的学 生信息
SELECT * FROM student WHERE sid = 111
;
-- 需求二:查询一个叫老王的同学
SELECT * FROM student WHERE sname = '老王';
-- 需求三:查询出姓王的同学(模糊查询)
SELECT * FROM student WHERE sname LIKE '王%';
distinct (在select后面的*前面加,表示去重复)
--删除表数据
-- 删除表数据
DELETE FROM s WHERE sid = 222;
-- 修改表数据
UPDATE s SET sname = '七七' WHERE sid = 777;
--别名
别名可以运用到列上,也可以运用在表上
也可以用在函数上
SELECT sid AS '学号',sname AS '姓名',sbirthday AS '出生日期' FROM 表名;
改别名数据库:student AS s;
--条件查询:
比较运算符:
等于: =
大于: >
大于等于: >=
小于: <
小于等于: <=
不等于: != 或 <>
--逻辑运算符:
and --和
(要符合所有条件才会筛选出来)
or --或者(符合其中任意一项就可以出来)
not --非(no)
--模糊查询:
like
%表示任意多个任意字符
_表示一个任意字符
--范围查询:
in
表示在一个非连续的范围内
between ... and ...表示在一个连续的范围内
--空判断:
注意:null与''是不同的
判空is null
判非空is not null
(筛选出有空出或者没空出的格子)
-- order by表示排序,默认是正序排,列名的后面加上desc之后是倒叙排列
SELECT * FROM student ORDER BY sscore;
-- 需求将学生表里面的学生成绩倒序排列
SELECT * FROM student ORDER BY sscore DESC;
-- 聚合函数
1,统计--count
2,平均--avg
3,最大值--max
4,最小值--mIN
5,求和--sum
--精确小数的函数 round(小数点后几位)
--double(20,2)表示小数类型,20表示20位数字长度,2表示精确到小数点后两位
--分页查询(limit)
假设每页m条数据,现在要看n页那么
select * from 表名 limit (n-1)×m,m;
--分组(group by)
统计出男生女生多少人----------select xingbie count(sid) from 表名 group by xingbie
-- 主外键的作用:
不是为了进行多表查询,没有主外键照样可以连接起来多表查询
那么主外键的作用是:主键为了保证数据的唯一性
,外键为了保证数据的完整性(主表的数据被从表引用,那么主表里面相关联的数据不能随意更改或删除)
--
连接查询:
1,等值查询
SELECT * FROM A,B WHERE A.CID = B.CID;
2,内连接查询
SELECT * FROM A INNER JOIN B ON a.cid = B.cid
外连接查询:左外连接和右外连接
3,左外链接
SELECT * FROM A LEFT JOIN B ON a.cid = B.cid
内连接查询和左外连接查询的区别:
-- 内连接查询出分类名称里面的商品
-- 内连接:没有关联的数据不显示
SELECT * FROM category c INNER JOIN product p ON c.cid = p.cno
-- 左外连接查询出分类名称里面的商品
--左外连接:没有关联的数据也会显示,右表没有值的数据用null表示.
SELECT * FROM category c LEFT JOIN product p ON c.cid = p.cno
事务的定义:(begin)-起始 (commit)-结束,提交 (rollback)- 回滚(撤销)
把一连串的操作放在一起,要么全部成功,要么全部失败。
事务的四个特性:原子性、一致性、隔离性、持久性
事务的作用:保证数据的一致性!
为什么要这样做:银行转账,有一方转出,另一方由于机械故障未收到钱,那么转出方肯定不干。
存储过程:
就是为了可重复的执行操作数据库的 sql 语句的集合.
存储过程是一次编译,就会被缓存起来,下次使用就直接命中缓存中已经编译好的
sql,
存储过程作用:
1,不需要重复编译
2,减少网络交互
3,减少网络访问流量
自关联 意思就是说同一个表分成几个别,这些表都取别名,然后自己向关联,关联相同点。
- 要查询出广东省里面的市和区(使用左外连接)
SELECT * FROM areas a LEFT JOIN areas b ON a.aid = b.pid LEFT JOIN areas c ON c.`pid` = b.`aid`
WHERE a.aname = '广东省'
MYSQL增删改查添加外键的更多相关文章
- python全栈开发day62-两表操作增删改查,外键,if else模板语法
一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...
- python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建
一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...
- MySQL—增删改查,分组,连表,limit,union,alter,排序,去重
MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...
- mysql增删改查相关操作
mysql增删改查相关操作 以前用mysql用的少,对于数据库相关的操作不熟悉,现在开始要接触数据库了,记录一下相关的基础操作吧. 1.数据库的授权操作 # mysql -u root -p Ente ...
- MySQL增删改查的常用语句汇总
MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...
- mysql增删改查练习
Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...
- Django学习之mysql增删改查
上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...
- PHP MySql增删改查
mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...
- 基于gin的golang web开发:mysql增删改查
Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...
随机推荐
- 16.XML语法、CDATA、约束(DTD、Schema)讲解
xml主要用来描述数据,比如配置文件,网络之间传输数据等,并且在android中也经常用xml来布局,,接下来便来学习xml常用的东西 1.XML语法 xml语法分为: 1.1 文档声明 必须位于文档 ...
- Java web部分-面试题
1.Tomcat的优化经验 答:去掉对web.xml的监视,把jsp提前编辑成Servlet. 有富余物理内存的情况,加大tomcat使用的jvm的内存 2.Servlet的生命周期 答:servle ...
- Django基础知识点
HTTP协议: 请求方式: 有8种分别是GET POST DELTE PUT OPTIONS HEAD 状态码: 2xx 200 OK 3xx 重定向 4xx 请求的错误 5xx 服 ...
- C++ 线程安全的单例模式总结
什么是线程安全? 在拥有共享数据的多条线程并行执行的程序中,线程安全的代码会通过同步机制保证各个线程都可以正常且正确的执行,不会出现数据污染等意外情况. 如何保证线程安全? 给共享的资源加把锁,保证每 ...
- 试试 IEnumerable 的 10 个小例子
IEnumerable 接口是 C# 开发过程中非常重要的接口,对于其特性和用法的了解是十分必要的.本文将通过10个小例子,来熟悉一下其简单的用法. 全是源码 以下便是这10个小例子,响应的说明均标记 ...
- Asp.net MVC 集成AD域认证
1.首先WebApi 应用下Web.config要配置域认证服务器节点,如下 <!--LDAP地址 用于项目AD系统账号密码验证--> <!--0:关闭域认证:1:开启域认证--&g ...
- 在.net core web项目中生成图片验证码
第1步:添加SkiaSharp包引用 Install-Package SkiaSharp 第2步:编写生成图片验证码的代码 using SkiaSharp; //在类文件头部添加引用 public I ...
- Keras(三)backend 兼容 Regressor 回归 Classifier 分类 原理及实例
backend 兼容 backend,即基于什么来做运算 Keras 可以基于两个Backend,一个是 Theano,一个是 Tensorflow 查看当前backend import keras ...
- 题解 yzoj1663: 愤怒的牛(二分) yzoj1662: 曲线(三分)
话说二分和三分的题还没有整理过,就趁这两题来整理下笔记 先讲讲关于二分,对于二分的具体边界长期以来对我来说都是个玄学问题,都是边调边拍改对的.思路大体是确定左边界l,和有边界r,判断满足条件缩小范围. ...
- Python Flask打造一个视频网站实战视频教程
下载链接:https://www.yinxiangit.com/607.html 目录: 本套课程从零基础讲解flask开发网站.涉及到的知识点包括:Python和pycharm的安装.urls和视图 ...