给商品表(从表)添加一个外键

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增删改查添加外键的更多相关文章

  1. python全栈开发day62-两表操作增删改查,外键,if else模板语法

    一.今日内容总结: day62 内容回顾: 1. django有关所有命令: pip install django==1.11.14 django-admin startproject 项目名称 cd ...

  2. python学习之老男孩python全栈第九期_数据库day001知识点总结 —— MySQL操作数据库以及数据表、基本数据类型、基本增删改查、外键定义以及创建

    一. 学习SQL语句规则以及外键 1. 操作文件夹 create database db2; 创建文件夹 create database db2 default charset utf8; 创建文件夹 ...

  3. MySQL—增删改查,分组,连表,limit,union,alter,排序,去重

    MySQL增删改查 在表格的增删改查中,查的内容是最多的,包括group by ,join,limit,union,alter,排序都是服务于查的 #sql语句数据行操作补充 #增加: #insert ...

  4. mysql增删改查相关操作

    mysql增删改查相关操作 以前用mysql用的少,对于数据库相关的操作不熟悉,现在开始要接触数据库了,记录一下相关的基础操作吧. 1.数据库的授权操作 # mysql -u root -p Ente ...

  5. MySQL增删改查的常用语句汇总

    MySQL增删改查的常用语句汇总 以下是总结的mysql的常用语句,欢迎指正和补充~ 一.创建库,删除库,使用库 1.创建数据库:create database 库名; 2.删除数据库:drop da ...

  6. mysql增删改查练习

    Mysql增删改查sql语句练习 关于数据库的一些操作: 进入mysql 命令行: mysql -uroot –p 查看所有数据库: show databases; 创建数据库: create dat ...

  7. Django学习之mysql增删改查

    上节介绍了如何使用命令行操作mysql增删改查,现在介绍如何使用python管理mysql 使用pip 下载完mysql后,mysql会以pymysql模块的形式存储在pycharm的包文件里.我们通 ...

  8. PHP MySql增删改查

    mysql_connect()连接数据库 mysql_select_db选择数据库 mysql_fetch_assoc()获取结果集 mysql_query()执行sql语句 实例如下: <?p ...

  9. 基于gin的golang web开发:mysql增删改查

    Go语言访问mysql数据库需要用到标准库database/sql和mysql的驱动.标准库的Api使用比较繁琐这里再引入另一个库github.com/jmoiron/sqlx. go get git ...

随机推荐

  1. 用java自制简易线程池(不依赖concurrent包)

    很久之前人们为了继续享用并行化带来的好处而不想使用进程,于是创造出了比进程更轻量级的线程.以linux为例,创建一个进程需要申请新的自己的内存空间,从父进程拷贝一些数据,所以开销是比较大的,线程(或称 ...

  2. iOS 视图渲染数据转CVPixelBuffer

    近两年一直从事视频行业的开发, 加班也比较严重, 好久没有写文章了, 最近稍微有些时间, 前来写点文章, 记录一些开发中遇到的问题, 和解决方法! 做视频会议项目, 当然是离不开音视频啦, 也常常和W ...

  3. Leetcode之深度优先搜索(DFS)专题-301. 删除无效的括号(Remove Invalid Parentheses)

    Leetcode之深度优先搜索(DFS)专题-301. 删除无效的括号(Remove Invalid Parentheses) 删除最小数量的无效括号,使得输入的字符串有效,返回所有可能的结果. 说明 ...

  4. 2019-07-26-hexo博客图片问题

    本人的解决方案 *** 将hexo的主页配置文件中的_config.yml里的post_asset_folder设置为true. 在git bash里运行npm install hexo-asset- ...

  5. tensorflow学习笔记——自编码器及多层感知器

    1,自编码器简介 传统机器学习任务很大程度上依赖于好的特征工程,比如对数值型,日期时间型,种类型等特征的提取.特征工程往往是非常耗时耗力的,在图像,语音和视频中提取到有效的特征就更难了,工程师必须在这 ...

  6. HDU-6356 Glad You Came 线段树 ST表

    HDU-6356 题意:有m次操作,每次操作通过给定的随机函数生成 l , r , v,使得在 l 到 r 区间内,所有的a[i]变为max(a[i] , v). 最后输出n个a[i]* i的异或和. ...

  7. CodeForces - 1150 D Three Religions

    题目传送门 题解: id[ i ][ j ] 代表的是在第j个位置之后的第i个字符的位置在哪里. dp[ i ][ j ][ k ] 代表的是 第一个串匹配到第i个位置, 第二个串匹配到第j个位置, ...

  8. Codeforces Round #409 C. Voltage Keepsake(二分+思维)

    题目链接:http://codeforces.com/contest/801/problem/C 题意:给出一个充电器每秒钟充p个点,还有n个电器要同时使用a[i]表示第i个电器每秒钟用多少点,b[i ...

  9. C++临时变量的回顾思考以及librdkafka设置回调函数注意点

    1 生命周期 如果仅仅是临时变量,并没有调用new来在堆上创建空间,那么注意 : 生命周期仅在该作用域中,即声明该临时变量的{}中: 2 使用(librdkafka C++回调使用) 在创建临时变量后 ...

  10. 快速构建第一个Flink工程

    本文简述通过maven和gradle快速构建的Flink工程.建议安装好Flink以后构建自己的Flink项目,安装与示例运行请查看:Flink快速入门--安装与示例运行. 在安装好Flink以后,只 ...