一:建库建表语法,字段数据类型

1:建库建表语法

   create  (创建,关键字) database (数据库,关键字)

   IF NOT EXISTS  作用:如果需要创建的库已存在,将不会创建

   DEFAULT CHARSET 作用: 指定默认字符集

   CREATE DATABASE IF NOT EXISTS name DEFAULT CHARSET utf8;

    use 作用:通过数据库名指向数据库

    table :建表关键字

use  name;
create table if not exists test(
字段1 数据类型 (长度) 约束条件,
字段2 数据类型 (长度) 约束条件...
)DEFAULT CHARSET=utf8;

 2:常见字段类型有:

    1:整数型。

      int:标准整型。使用4个字节存储(常用)。

      bigint:大整型。使用8个字节进行存储。

     1.2:小数型。

      float:单精度。占用4个字节存储数据,精度范围大概为7位左右。

      double:双精度浮点型 16位精度 使用8个字节进行存储。

    2:字符串类型。

       char(n):固定长度,最多255个字符。

      varchar(n):可变长度,最多65535个字符。

      char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数。

      text可变长度,最多65535个字符

    3:日期和时间类型。

        date:3字节,日期,格式:2014-09-18

      time:3字节,时间,格式:08:42:30

      datetime:8字节,日期时间,格式:2014-09-18 08:42:30

  3:常用属性

    1.primary key:

         用于确保指定行的唯一性。指定为主键的列中,值不能重复,也不能为空。

    2.auto_increment :

      为新插入的行赋一个唯一的整数标识符 并且每个新插入行都会自动加上。

     3.default:

      为字段设置默认值,当字段的值为空时进行填充。

     4.null:

        为列指定null属性时,该列可以保持为空。

     5.not null:

     如果将一个列定义为not null,将不允许向该列插入null值。

     6.unique:

      被赋予unique属性的列将确保所有值都有不同的值,只是null值可以重复。

案例:

# 创建数据库 db3 设置字符集 utf8
CREATE DATABASE IF NOT EXISTS db3 DEFAULT CHARSET utf8;
# 指定创建表的数据库
use db3;
# 创建student表 写字段 数据类型 约束 设置字符集utf8

CREATE TABLE student(
id INT PRIMARY KEY NOT NULL AUTO_INCREMENT, # 主键id 唯一并且设置自增
NAME VARCHAR(20) NOT NULL, # 姓名
birthday DATE NOT NULL, #出生年月
age int, # 年龄
intro text , #简介 文本
money float null
default'0', # 钱 默认为0
sfz varchar(20) not null unique # 身份证 约束 不为空且唯一
)DEFAULT CHARSET=utf8;

 


二:增删改查语法

  1.添加表数据:

        insert into 表名(列名1,列名2...)values(列1数据,列2数据...); 

     案例:

      

  2.删除表数据:

      2.1 按条件删除指定数据:

      delete from 表名 where 选择条件 ;

     2.2 销毁整张表:

     drop table 表名;

    案例:

      

   3.修改表数据:

      update 表名 set 列名=列值,列2名=列2值...where 选择条件;

     案例:

      

   4.修改表结构: 

     4.1 添加列:

        alter table 表名 add 列名 数据类型;

      4.2  删除列:

      alter table 表名 drop column 列名;

    案例:

    

    5.表查询: 

     5.1 查询表所有数据:

       select * from 表名;

     5.2 指定查询:

select 列名1 as [列别名],列名2...  from 表名  as  [表别名]
where 字段='值' [查询条件] group by [分组条件]
having [控制打印] order by [排序 默认升序 尾端加desc 为降序]

    案例:

   


三 :表关联查询

  1.两表查询:

     1.1 内连接:

          关键字 inner join   on  作用: 获取两个表的公共部分

SELECT * FROM [表名]  [别名]  INNER JOIN [表名] [别名] ON 表1.字段=表二.字段;

              案例 :

     1.2  左连接:

        关键字 left join on  作用: 获取左表全部内容 和 两个表的公共部分    

SELECT * FROM [表名] [别名] LEFT JOIN [表名] [别名] ON 表1.字段= 表2.字段;

        案例:

   

      1.3  右连接:

        关键字 right join on  作用: 获取右表全部内容和两个表公共部分

  

 SELECT * FROM [表名] [别名] RIGHT JOIN [表名] [别名] ON 表1.字段 = 表2.字段 ;

      案例:

      1.4 :全连接:

          相等于 左连接 union 右链接 ,

           union 获取两个表的数据并且去重 ,union all 表示获取两个表全部

 SELECT * FROM [表名] [别名] LEFT JOIN  [表名] [别名] ON 表1.字段 = 表2.字段
UNION
SELECT * FROM [表名] [别名] RIGHT JOIN [表名] [别名] ON 表1.字段 = 表2.字段;

      案例:

  

  2.多表查询:

       作用: 一次性查询多个表的数据

      案例: 三表查询

           ps:需要添再加表只需要在后面再使用左连接关键字添加加表4就好

#三表关联查询 ,第一个表关联中间表的结果,然后关联第二个表
SELECT * FROM [表名] [别名] INNER JOIN [表名] [别名] ON 表1.字段=表2.字段
LEFT JOIN [表名] [别名] ON 表2.字段= 表3.字段

     


四:子查询

    1.列子查询(单例,多例):

             性质:子查询 指一个查询语句 嵌套在 另一个查询语句内部的查询

SELECT * FROM [表名] WHERE [表字段] = (SELECT [字段] FROM [表名] WHERE  [表字段] = [值] );

         案例:(多例就是查询条件放大)

    

     2.表子查询:

          在执行查询语句时,首先会执行子查询中的语句,然后将返回的结果做为外层查询的过滤条件,在子查询中通常可以使用  IN   EXISTS  ANY   ALL操作符。

SELECT * FROM [表一] WHERE ([字段1],[字段2]...) IN (SELECT [字段1],[字段2]... FROM [表二]);

  案例代码:

# 建表
CREATE DATABASE IF NOT EXISTS info DEFAULT CHARSET utf8;
USE info; # 建表
CREATE TABLE IF NOT EXISTS emp(
emp_id INT PRIMARY KEY AUTO_INCREMENT,
emp_name VARCHAR(20),
salary INT, dept_id INT , manager_id INT
); #插入数据
INSERT INTO emp(emp_name,salary,dept_id,manager_id)
VALUES("tom",15000,1,NULL),("lucy",14000,5,NULL),
("张建国",4000,1,1),("李华",600,1,1),("王强",6000,2,2),
("周杰",5000,2,2),("曹光思",7000,5,3),("刘毅真",8000,5,3),
("王岩",5000,5,3); #子查询,单值
# 将查询语句返回的结果做为另一个查询语句的条件
SELECT * FROM emp WHERE salary >(SELECT salary FROM emp WHERE emp_name="王强"); SELECT * FROM emp WHERE dept_id = (SELECT dept_id FROM emp WHERE emp_name = "张建国")
AND salary > (SELECT salary FROM emp WHERE emp_name = "王岩") # 子查询 多值
# in 条件 in (匹配括号中的值) 匹配成功打印
SELECT * FROM emp WHERE dept_id IN(SELECT dept_id FROM emp WHERE emp_name LIKE "王%"); # 将返回的结果表 作为查询表使用
SELECT * FROM (SELECT * FROM emp WHERE dept_id >2 AND salary > 5000) e WHERE emp_id > 1;

SQL基础语法_周志城的更多相关文章

  1. SQL基础语法_张三

    1.1 建库表语法 1.2 字段数据类型 大致可以分为三类:数值.日期/时间和字符串 (字符)类型. 2. 增删查改 3. 关联查询 4. 子查询

  2. ASP.NET实现二维码 ASP.Net上传文件 SQL基础语法 C# 动态创建数据库三(MySQL) Net Core 实现谷歌翻译ApI 免费版 C#发布和调试WebService ajax调用WebService实现数据库操作 C# 实体类转json数据过滤掉字段为null的字段

    ASP.NET实现二维码 using System;using System.Collections.Generic;using System.Drawing;using System.Linq;us ...

  3. SQL基础语法笔记教程整理

    PS:本文适用SQL Server2008语法. 一.关系型数据库和SQL 实际上准确的讲,SQL是一门语言,而不是一个数据库. 什么是SQL呢?简而言之,SQL就是维护和使用关系型数据库中的的数据的 ...

  4. SQL 基础语法笔记教程整理

    最近从图书馆借了本介绍 SQL 的书,打算复习一下基本语法,记录一下笔记,整理一下思路,以备日后复习之用. PS:本文适用 SQL Server2008 语法. 首先,附一个发现的 MySQL 读书笔 ...

  5. Spring mybatis源码篇章-动态SQL基础语法以及原理

    通过阅读源码对实现机制进行了解有利于陶冶情操,承接前文Spring mybatis源码篇章-Mybatis的XML文件加载 前话 前文通过Spring中配置mapperLocations属性来进行对m ...

  6. SQL基础语法(二)

    SQL SELECT 语句 本章讲解 SELECT 和 SELECT * 语句. SQL SELECT 语句 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). SQL ...

  7. SQL基础语法提纲

    一.SQL需知5点 1.SQL是Structured Query Language的缩写,是用来访问关系型数据库的,非过程化的,高级编程语言. 2.SQL具有语法高度综合统一,高度的非过程化,对集合进 ...

  8. 05_Java基础语法_第5天(方法)_讲义

    今日内容介绍 1.方法基础知识 2.方法高级内容 3.方法案例 01方法的概述 * A: 为什么要有方法 * 提高代码的复用性 * B: 什么是方法 * 完成特定功能的代码块. 02方法的定义格式 * ...

  9. sql 基础语法使用

    SQL的一些基础查询语法    基础.限定.模糊查询     关键字都是大写. 使用 BETWEENN AND 的时候小的数字或者日期放到  AND(并且)  的面前,大的一个放到AND 后面. 示例 ...

随机推荐

  1. DNS域名解析之正向解析

    DNS域名解析之正向解析 1.DNS介绍 2.DNS正向解析实验 1.DNS定义:DNS是"域名系统"的英文缩写.它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地 ...

  2. k8s之PV、PVC

    目录 一.PVC和PV 1.1 PV概念 1.2 PVC概念 1.3 PV与PVC之间的关系 1.4 两种PV的提供方式 二.基于nfs创建静态PV资源和PVC资源 2.1 配置nfs存储(192.1 ...

  3. 如何综合运用对称加密技术、非对称加密技术(公钥密码体制)和Hash函数 保证信息的保密性、完整性、可用性和不可否认性?

    一.几个问题 在提出问题之前,先创建一个使用场景,发送方(甲方)要给接收方(乙方)发送投标书.大家知道,投标书都包括发送方的标的,这个标的是不能被竞标者知晓,更不能被竞标者修改的.在传输的投标书时,提 ...

  4. java中最简单的计算执行时长的方式

    日常在做一些性能测试的时候会通过执行时间来判断执行时长,java中最简单的方式如下: //开始时间 long startL= new Date().getTime(); //这里需要导入 java.u ...

  5. PHP+mysql真题

    PHP+mysql真题 来自<PHP程序员面试笔试宝典>,涵盖了近三年了各大型企业常考的PHP面试题,针对面试题提取出来各种面试知识也涵盖在了本书. [真题215] 按要求写出SQL实现. ...

  6. Solution -「Gym 102759F」Interval Graph

    \(\mathcal{Description}\)   Link.   给定 \(n\) 个区间,第 \(i\) 个为 \([l_i,r_i]\),有权值 \(w_i\).设一无向图 \(G=(V=\ ...

  7. Solution -「UOJ #87」mx 的仙人掌

    \(\mathcal{Description}\)   Link.   给出含 \(n\) 个结点 \(m\) 条边的仙人掌图.\(q\) 次询问,每次询问给出一个点集 \(S\),求 \(S\) 内 ...

  8. 【Azure 应用服务】部署Jar到App Service for Linux,因启动命令路径配置错误而引起:( Application Error 问题

    问题描述 App Service for Linux 资源创建完成后,通过FTP方式把 .jar包(logdemo.jar)包上传到 /site/wwwroot/ 文件夹后,在App Service的 ...

  9. Session是什么?它与Cookie有什么区别?

    你好,是我琉忆. 今天我们讲一讲Session与Cookie的区别 1.Session对象 上一节简单介绍了Cookie,接下来简单介绍Session.Session和Cookie都是会话管理技术的一 ...

  10. NPM保资源管理工具

    一.简介 什么是NPM NPM全称Node Package Manager,是Node.js包管理工具,是全球最大的模块生态系统,里面所有的模块都是开源免费的:也是Node.js的包管理工具,相当于前 ...