01 mysql
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的更多相关文章
- 01 mysql 基础一 (进阶)
mysql基础一 1.认识mysql与创建用户 01 Mysql简介 Mysql是最流行的关系型数据库管理系统之一,由瑞典MySQLAB公司开发,目前属于Oracle公司. MySQL是一种关联数据库 ...
- 数据库01 /Mysql初识、基本指令、数据库密码相关、创建用户及授权
数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 目录 数据库01 /Mysql初识.基本指令.数据库密码相关.创建用户及授权 1. 数据库概述 2. 数据库管理系统/DBMS ...
- 01 MySQL之数据库基本操作
01-介绍 数据库(DataBase,DB)是一个长期存储在计算机内的.有组织的.有共享的.统一管理的数据集合. 02-基本操作 2.1 创建数据库 # 查看当前所有的数据库 show databas ...
- 01 Mysql数据库初识
一.数据库概述 1.什么是数据库? 什么是数据库呢? 先来看看百度怎么说的 数据库,简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据运行新增.截取.更新.删除等操作. 所谓“ ...
- mysql笔记01 MySQL架构与历史、Schema与数据类型优化
MySQL架构与历史 1. MySQL架构推荐参考:http://www.cnblogs.com/baochuan/archive/2012/03/15/2397536.html 2. MySQL会解 ...
- 01 MySQL锁概述
锁是计算机协调多个进程或线程并发访问某一资源的机制.在数据库中,除传统的计算资源(如CPU.RAM.I/O 等)的争用以外,数据也是一种供许多用户共享的资源.如何保证数据并发访问的一致性.有效性是所有 ...
- 01 mysql的安装(windows)
在安装mysql之前,一般是先下载mysql,推荐大家去Oracle的官网下载,而且尽量使用免安装的版本(即压缩版,解压之后就可以使用的版本,不是.exe的安装版本),因为安装版的mysql在安装过程 ...
- 01: MySql简介
MySQL其他篇 目录: 参考网站 1.1 数据库介绍 1.2 视图 1.3 触发器 1.4 事物 1.1 数据库介绍返回顶部 1.什么是数据库? 1. 数据库(Database)是按照数据结构来组织 ...
- 01 MySQL入门了解
MySql的前戏 在学习Mysql之前,我们先来想一下一开始做的登录注册案例,当时我们把用户的信息保存到一个文件中: #用户名 |密码root|123321 alex|123123 上面文件内容的 ...
随机推荐
- linux网络操作 netstat命令
关闭与启动网卡 ifdown 网卡设备名 #禁用该网卡设备 ifup网卡设备名 #启用该网卡设备 查看网络状态 netstat 命令 -t 列出tcp协议端口 -u 列出udp协议端口 -n 不 ...
- Win10系列:VC++ Direct3D图形绘制1
通过前面的介绍,相信读者已经了解了如何新建一个用于开发Direct3D应用程序的项目模版,以及这个项目模版中用于绘制立体图形的主要函数.在本小节中,将通过一个具体的示例来介绍如何使用Visual St ...
- datetime.strptime格式转换报错ValueError
今天遇到一个报错:ValueError: time data '2018-10-10(Wednesday) AM0:50' does not match format '%Y-%m-%d(%A) %p ...
- .net core Asp.net Mvc Ef 网站搭建 vs2017 1)
1)开发环境搭建 首先下载安装vs2017 地址 :https://www.visualstudio.com/zh-hans/downloads/ 安装勾选几项如下图 ,注意点在单个组件时.net ...
- 基于WMI的信息查询和编辑,按微软的说明一般都是
晕!这个不是很简单的东西吗? //---------WMI---------- type Rec_Wmi = record ComputerName: string; Namespace: strin ...
- sqlserver指定排序字段
在sqlserver中可以指定排序的字段,需要将哪个字段值排在最前面或最后面,都是可以的.见如下代码: SELECT * FROM public_comment order by case [User ...
- EF-一对一关系
针对关系型数据库来说,需要明了每个对象之间的关系. 它们之间的关系有: 1.一对一(1:1):一个学生只能拥有一张身份证,一张身份证只能属于一个学生: 2.一对多(1:N):一个学生可以拥有几本书,而 ...
- 读书笔记 C# yield return与yield break执行顺序的浅析
yield return可一次返回一个元素,并保留当前在代码中的位置,下次调用当前迭代器函数时,将从该位置从新执行.也就是说执行了yield return的时候,迭代器函数就返回了一个元素给forea ...
- XML(二)
XML XML介绍 1.什么是xml? 概念:XML(EXtensible Markup Language)XML 指可扩展标记语言(EXtensible Markup Language) 可扩展:我 ...
- 查看linux 内核版本信息
uname -r2.6.32-696.el6.x86_64uname -ix86_64