Sql语句:

Structured Query Language, 结构化查询语言

分类:

DDL (数据定义语句)

  数据定义语言 - Data Definition Language

  用来定义数据库的对象,如数据表、视图、索引等

DML  (数据操纵语句)

  数据处理语言 - Data Manipulation Language

  在数据库表中更新,增加和删除记录

  如 update, insert, delete --- 增删改

DCL (数据控制语句)

  数据控制语言 – Data Control Language

  指用于设置用户权限和控制事务语句

  如grant,revoke,if…else,while,begin transaction

DQL (数据查询语句)

  数据查询语言 – Data Query Language

  select

创建数据库:

CREATE  DATABASE  db_name

[DEFAULT] CHARACTER SET charset_name

[DEFAULT] COLLATE collation_name

CHARACTER SET:指定数据库采用的字符集

COLLATE:指定数据库字符集的比较方式

CREATE DATABASE day06 CHARACTER SET utf8 COLLATE utf8_bin;

显示数据库语句:

SHOW DATABASES

显示数据库创建语句:

SHOW CREATE DATABASE db_name

数据库删除语句:

DROP DATABASE  db_name

修改数据库:

ALTER  DATABASE  db_name

[DEFAULT] CHARACTER SET charset_name

[DEFAULT] COLLATE collation_name

切换数据库 use db_name;

查看当前使用的数据库 select database();

创建表前,要先使用use db语句使用库。

创建表

CREATE TABLE table_name

(

field1  datatype,

field2  datatype,

field3  datatype

)character set 字符集 collate 校对规则

field:指定列名 datatype:指定列类型

CREATE TABLE `student` (

`sid` int(11) NOT NULL AUTO_INCREMENT,

`sname` varchar(10) DEFAULT NULL,

`sex` int(11) DEFAULT NULL,

`age` int(11) DEFAULT NULL,

PRIMARY KEY (`sid`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;

MySQL常用数据类型:

字符串型

VARCHAR、CHAR

大数据类型

BLOB二进制、TEXT

数值型

TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE

逻辑性

BIT

日期型

DATE、TIME、DATETIME默认是null、TIMESTAMP默认是当前时间

定义主键约束

primary key:不允许为空,不允许重复

删除主键:alter table tablename drop primary key ;

 主键自动增长 :auto_increment

定义唯一约束

unique

例如:name varchar(20) unique

定义非空约束

not null

例如:salary double not null

查看表:

查看所有的表:

Show tables;

查看表的创建过程

Show create table 表名;

查看表结构

desc student;

修改表:

添加列:ADD

ALTER TABLE 表名ADD  列名 列类型 列约束;

修改列:MODIFY

ALTER TABLE 表名 MODIFY  列名 列类型 列约束;

修改列名:CHANGE

ALTER TABLE 表名 CHANGE 列名 新列名 列类型 列约束;

删除列:DROP

ALTER TABLE 表名 DROP 列名;

修改表的名称:rename table 表名 to 新表名;

修改表的字符集:alter table 表名character set utf8;

数据库CRUD语句

INSERT

语句向表中插入数据:

INSERT INTO  table (column , column...) VALUES(value , value...);

DELETE

使用 delete语句删除表中数据:一条一条的删除表中数据

delete from tbl_name   [WHERE 条件]

使用truncate删除表中记录 :先删除再重新建表,适合数据多的时候

1、drop table 表名称                    删表

2、truncate table 表名称                 清空表数据, 计数值重置
   3、delete from 表名称 where 列名称 = 值      保留标识计数值

UPDATE

update语句修改表中数据

UPDATE 表名 SET 列名1=expr1 , 列名2=expr2 ...   [WHERE where_definition]

基本select语句

SELECT [DISTINCT] [*][ 列名1,列名2] FROM 表名 [where 条件];

DISTINCT可选,指显示结果时,是否剔除重复数据

as: as可以省略

SELECT 列名 as 别名 from 表名;

在select语句中可使用表达式对查询的列进行运算

例子:Select price*0.7 as 折后价 from product

在where子句中经常使用的运算符

比较运算符

>   <   <=   >=   =    <>

大于、小于、大于(小于)等于、不等于

between .. and...

显示在某一区间的值

in(set)

显示在in列表中的值,例:in(100,200)

like ‘张pattern’

模糊查询,% 代表零个或多个任意字符,_ 代表一个字符,例first_name like ‘_a%’;

Is null

判断是否为空,不为空:is not null

逻辑运算符

and

多个条件同时成立

or

多个条件任一成立

not

不成立,例:where not(salary>100);

order by:

使用order by 子句排序查询结果

SELECT column1, column2. column3..

FROM  table;

order by column asc|desc

Asc 升序、Desc 降序

ORDER BY 子句应位于SELECT语句的结尾。

聚集函数:

Count()总数

Sum()函数和

AVG()函数平均值

Max/min()函数最大/最小值

注意:Where条件后面不能接聚合函数

使用group by 子句对列进行分组

使用having 子句 对分组结果进行过滤

Having和where均可实现过滤,但在having可以使用聚集函数,having通常跟在group by后

外键约束:

定义外键约束

foreign key

foreign key(ordersid) references orders(id) 建表时指定

KEY `product_fk_0001` (`cid`), # 建表时,给外键起名
CONSTRAINT `product_fk_0001` FOREIGN KEY (`cid`) REFERENCES `category` (`cid`) # 添加外键约束

给product中的这个cno 添加一个外键约束
alter table product add foreign key(cno)  references  category(cid);

建表原则:

 一对多:
    - 建表原则: 在多的一方增加一个外键,指向一的一方
多对多:
    - 建表原则: 将多对多转成一对多的关系,创建一张中间表
一对一: 不常用, 拆表操作
    - 建表原则:  将两张表合并成一张表
      - 将两张表的主键建立起关系
      - 将一对一的关系当作一对多的关系去处理

主键约束: 默认就是不能为空, 唯一
-  外键都是指向另外一张表的主键
-  主键一张表只能有一个
唯一约束:  列面的内容, 必须是唯一, 不能出现重复情况, 为空
- 唯一约束不可以作为其它表的外键
- 可以有多个唯一约束

多表查询:

- 交叉连接查询  笛卡尔积
select * from a,b查询结果中存在大量无意义的数据

- 内连接查询
写法一:

select * from a inner join b on a.id=b.id;

写法二隐式内连接:

select * from a,b where a.id = b.id
- 左外连接
left outer join    on
- 右外连接

rigth outer join    on

分页查询:

第一个参数是索引 
第二个参数显示的个数
select * from product limit 0,3;
select * from product limit 3,3;

子查询:
-- 单行子查询(> < >= <= = <>)
-- 多行子查询(in  not in any all)    >any  >all
-- 多列子查询(实际使用较少)   in
-- Select接子查询
-- from后面接子查询
-- where 接子查询
-- having后面接子查询

01 mysql的更多相关文章

  1. 01 mysql 基础一 (进阶)

    mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...

  2. 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权

    数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...

  3. 01 MySQL之数据库基本操作

    01-介绍 数据库(DataBase,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合. 02-基本操作 2.1 创建数据库 # 查看当前所有的数据库 show databas ...

  4. 01 Mysql数据库初识

    一.数据库概述 1.什么是数据库? 什么是数据库呢? 先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“ ...

  5. mysql笔记01 MySQL架构与历史、Schema与数据类型优化

    MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...

  6. 01 MySQL锁概述

    锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有 ...

  7. 01 mysql的安装(windows)

    在安装mysql之前,一般是先下载mysql,推荐大家去Oracle的官网下载,而且尽量使用免安装的版本(即压缩版,解压之后就可以使用的版本,不是.exe的安装版本),因为安装版的mysql在安装过程 ...

  8. 01: MySql简介

    MySQL其他篇 目录: 参考网站 1.1 数据库介绍 1.2 视图 1.3 触发器 1.4 事物 1.1 数据库介绍返回顶部 1.什么是数据库? 1. 数据库(Database)是按照数据结构来组织 ...

  9. 01 MySQL入门了解

      MySql的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码root|123321 alex|123123 上面文件内容的 ...

随机推荐

  1. Uboot中汇编指令

    LDR(load register)指令将内存内容加载入通用寄存器 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成,也就是ldr/str指令.比如想把数据从内存中某处读取到 ...

  2. markdown语法模板

    (GitHub-Flavored) Markdown Editor Basic useful feature list: Ctrl+S / Cmd+S to save the file Ctrl+Sh ...

  3. Yii2.0 数据库查询 [ 2.0 版本 ]

    下面介绍一下 Yii2.0 对数据库 查询的一些简单的操作 User::find()->all(); 此方法返回所有数据: User::findOne($id); 此方法返回 主键 id=1 的 ...

  4. java①

    1.MyEclipse Eclipse Idea 等 都是 开发java的IDE工具! 2.面试题: JDK: java开发工具包!(Java Development TooKit)! 是整个java ...

  5. OO第三次课程总结分析

    OO第三次课程总结分析 规格化设计发展历史 在网上找了好久也没找到合适的信息,稍稍参考了同学的博客.大致如下:最初的的软件并没有形式化方法,随着软件工程的兴起,为了便于工程间的协调管理,人们提出采用工 ...

  6. javascript进阶笔记(3)

    本篇文章我们来学习和讨论一下js中的闭包.闭包是纯函数式编程的一个特性,因为它们能够大大简化复杂的操作.在js中,闭包的重要性不言而喻! 简单的说,闭包(closure)是 一个函数在创建时 允许 该 ...

  7. TCP/IP协议 计算机间的通讯,传输、socket 传输通道

    #! /usr/bin/env python3 # -*- coding:utf-8 -*- #TCP/IP简介 #为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现 ...

  8. DevExpress WinForms v18.2新版亮点(六)

    行业领先的.NET界面控件2018年第二次重大更新——DevExpress v18.2日前正式发布,本站将以连载的形式为大家介绍各版本新增内容.本文将介绍了DevExpress WinForms v1 ...

  9. ssh 免密登陆

    A 要免密码登录要B 那么需要在A电脑上使用命令 ssh-keygen -t rsa 在~/.ssh/ 目录下生成id_rsa.pub 这个文件,然后将这个文件的内容拷到B电脑de ~/.ssh/au ...

  10. tensorflow-softmax

    之前在softmax多分类中讲到多用交叉熵作为损失函数,这里顺便写个例子,tensorlflow练手. # encoding:utf-8 import tensorflow as tf import ...