MySQL学习笔记
来源:互联网 发布:wincc无法访问数据库 编辑:程序博客网 时间:2024/06/03 08:49
MySQL学习笔记
学习时间 :2017.09.28—2017.10.01
整理时间:2017.10.02—2017.10.03
学习资源:职坐标网上课程《MYSQL数据库基础》
创建数据库:CREATE DATABASE database_name
删除数据库:DROP DATABASE database_name
创建数据表:
CREATE TABLE table_name
(
/*
至少定义一个字段,包括字段名,字段类型,是否为空可选
定义字段语句之间用’,’隔开
*/
col_name1 col_type [NOT NULL],
col_name2 col_type [NOT NULL],
col_name3 col_type [NOT NULL]
)
主键约束:
col_name col_type [NOT NULL]PRIMARY KEY
外键约束:
col_name col_type [NOT NULL]REFERENCES another_table_name(col_name_from_another_table_name)
检查约束:
col_name col_type [NOT NULL]CHECK(condition_expression)
默认约束
col_name col_type [NOT NULL]DEFAULT value
自增列
col_name col_type [NOT NULL]AUTO_INCREMENT
查看表的基本结构
DESCRIBE/DESC table_name
查看表的详细结构
SHOW CREATE TABLE table_name
修改表名
ALTER TABLE old_table_nameRENAME TO new_table_name
修改字段名
ALTER TABLE table_name CHANGE old_col_namenew_col_name new_col_type
修改字段类型
ALTER TABLE table_nameMODIFY col_name new_type
添加字段
ALTER TABLE table_name ADDnew_col_name new_col_type
删除字段
ALTER TABLE table_name DROPcol_name
添加主键约束
ALTER TABLE table_name ADDCONSTRAINT con_name PRIMARY KEY(col_name)
添加外键约束
/*
con_name为约束名,可写成:约束类型_表名_字段(type_table_col),其中约束类型可简写成PK——主键约束,FK——外键约束,CK——检查约束。
*/
ALTER TABLE table_name ADDCONSTRAINT con_name FOREIGN KEY(col_name) REFERENCES referenced_table_name(referenced_col_name)
添加检查约束
ALTER TABLE table_name ADDCONSTRAION con_name CHECK(condition_expression)
添加默认值
ALTER TABLE table_name ALTERcol_name SET DEFAULT value
添加自增
ALTER TABLE table_nameMODIFY COLUMN col_name col_type [Not NULL] AUTO_INCREMENT [NOT NULL] [PRIMARYKEY]
删除数据表
/*
如果table_list不存在关联,可以直接删除
table_list存在关联,即存在引用关系,先删除外键所在的表,再删除被引用的表
如果只删除被引用的表,要先解除关联关系,再删除被引用的表
*/
DROP Table [IF EXISTS]table_list
为所有的列插入值(插入记录)
/*
特点:列值同数,列值同序
有默认值,可用default
*/
INSERT [INTO] table_nameVALUES(value_list1),(value_list2),……,(value_listN)
为指定列插入值
/*
特点:列值同数,列值对应
若没指定,但有默认值,则添加默认值
*/
INSERT [INTO]table_name(col_list) VALUES(value_list1),(value_list2),……,(value_listN)
修改数据
/*修改特定条件的数据,若没指定条件,则修改全部数据*/
UPDATE table_name SETcol_name = expression [WHERE condition_expression]
删除数据
/*删除特定条件的数据,若没指定条件,则删除全部数据*/
DELETE [FROM] table_name[WHERE condition_expression]
/*删除全部数据*/
TRUNCATE TABLE table_name
查询列
/*
查询全部记录中col_list出现的字段,若查询全部列用’*’代替con_list
DISTINCT关键字可选,表示取消查询结果集中重复的数据
LIMIT关键字可选,表示指定结果集中数据的显示范围
有LIMIT i,l,表示从结果集第i条开始显示l条数据
有LIMIT l,表示从结果集第0条开始显示l条数据
*/
SELECT [DISTINCT] col_listFROM table [LIMIT]
普通条件查询
SELECT col_list FROMtable_name WHERE condition_expression
模糊查询
/*
表示查询col(不)在m到n范围内的数据
*/
SELECT col_list FROMtable_name WHERE col [NOT] BETWEEN m AND n
/* wildcard—通配符
查询col(不)符合某些特性的数据
*/
SELECT col_list FROMtable_name WHERE col [NOT] LIKE wildcard
/*
查询col(非)空的数据
*/
SELECT col_list FROMtable_name WHERE col IS [NOT] NULL
对查询结果集排序
/*
ASC是升序,默认
DESC是降序
先出现的col优先级高
*/
SELECT col_list FROMtable_name ORDER BY col1 [ASC|DESC], col2 [ASC|DESC],……,colN [ASC|DESC]
对查询结果分组
/*
对查询结果以col进行分组
col_list可以包含字段或聚合函数
*/
SELECT col_list FROMtable_name GROUP BY col
对查询结果分组筛选
/*
对查询结果以col进行分组
col_list可以包含字段或聚合函数
HAVING要写在GROUP BY之后
condition_expression要以聚合函数统计的结果作为条件
*/
SELECT col_list FROMtable_name GROUP BY col HAVING condition_expression
查询语句执行顺序
/*
首先在table_name中查找符合where_condition_expression的col_list,
对查询的结果集以group_by_col分组
对分组结果以having_condition_expression筛选
对筛选结果集按order_by_col [ASC|DESC]排序
*/
SELECT col_list [AS alias]FROM table_name
WHERE where_condition_expression
GROUP BY group_by_col
HAVING having_condition_expression
ORDER BY order_by_col[ASC|DESC]
内连接
/*
横向连接多个查询结果集
两张表的地位平等
如果一张表中在另一张表中没有不存在对应数据,则不做连接
col_list中col来自不同的表,它来自表的顺序与table_list中table的顺序相同
condition_expression应是不同表中相同col的关系
*/
/*
隐式内链接
*/
SELECT col_list FROMtable_list WHERE condition_expression
/*
显示内连接
/
SELECT col_list FROM table1
[INNER] JOIN table2 ONcondition_expression
[INNER] JOIN table3 ONcondition_expression
……
外连接
/*
横向连接多个查询结果集
连接的两张表地位不平等,其中一张表是基础表,基础表中每条数据必须出现,即使另一张表中没有数据与之匹配,要用NULL补齐
在语句中先出现的表是左表,后出现的表是右表
左外连接时左表时基础表,有外连接时右表是基础表
col_list中col来自不同的表,它来自表的顺序与table_list中table的顺序相同
condition_expression应是不同表中相同col的关系
*/
SELECT col_list FROM table1
LEFT|RIGHT [OUTER] JOINtable2 ON condition_expression
LEFT|RIGHT [OUTER] JOINtable3 ON condition_expression
……
子查询
/*
使用IN关键字
(SELECT语句)为子查询
父查询以子查询返回的结果集作为条件
*/
SELECT col_list FROMtable_name WHERE col IN (SELECT语句)
/*
使用EXISTS关键字
(SELECT语句)为子查询
如果子查询有结果才返回父查询的结果集
*/
SELECT col_list FROMtable_name WHERE col EXISTS (SELECT语句)
联合查询
/*
纵向连接多个查询结果集
列的数量和类型要兼容
有ALL表示数据重复部分多次显示
没ALL表示数据只出现一次
*/
SELECT col_list1 FROMtable_name1
UNION [ALL]
SELECT col_list2 FROMtable_name2
比较运算符
等于:=
不等于:<>
大于:>
小于:<
大于等于:>=
小于等于:<=
逻辑运算符
并且:AND
或者:OR
非:NOT
通配符
_:表示一个字符
%:表示任意长度的字符
[]:表示指定范内
[^]:不在括号中
聚合函数
求和:SUN(col)
求平均:AVG(col)
求最小:MIN(col)
求最大:MAX(col)
计数:COUNT(col)
日期与时间函数
返回当前日期:
SELECT CURFATE()|SELECTCURRENT_DATE()
SELECTCRDATE()+0/*将年月日拼接成数字*/
返回当前时间
SELECT CURTIME()|SELECTCURRENT_TIME()
SELECT CURTIME()+0/*将时分秒拼接成数字*/
返回当前日期时间
SELECTCURRENT_TIMESTAMP()|SELECT LOCALTIME()|SELECT NOW()|SYSDATE()
返回月份
SELECT MONTH(date)/*返回月份数字*/
SELECT MONTHNAME(date)/*返回月份英文名称*/
获取星期
SELECT DAYOFNAME(date)/*返回星期几英文名称*/
SELECT DAYOFWEEK(date)/*返回一周中第几天,星期日是第1天*/
SELECT WEEKDAY(date)/*返回一周中第几天,星期一是第0天*/
SELECT WEEK(date) /*返回一年中第几周,第一周是0*/
SELECT WEEKOFYEAR(date) /*返回一年中第几周,第一周是1*/
获取天数
SELECT DAYOFYEAR(date)/*一年中第几天,1月1日是第一天*/
SELECT DAYOFMONTH(date)/*一月中第几天,1日是第一天*/
获取年份
SELECT YEAR(date)
获取季度
SELECT QUARTER(date)
获取小时
SELECT HOUR(time)
获取分钟
SELECT MINUTE(time)
获取秒数
SELECT SECOND(time)
数学函数
绝对值函数
SELECT ABS(x)
符号函数
SELECT SIGN(x)
获取随机数数函数
/*
生成(0,1)的随机数
X为随机数种子,x固定生成的随机数固定
*/
SELECT RAND()|RAND(x)
获取整数函数
SELECT CEIL(x)|CEILING(x)/*取不小于x的整数中最小的一个*/
SELECT FLOOR(x) /*取不大于x的整数中最大的一个*/
四舍五入函数
SELECT ROUND(x)/*保留整数*/
SELECT ROUND(x,y)/*对x保留小数点后y位*/
SELECT TRUNCATE(x,y)/*对x的小数点后y位舍去*/
求余函数
SELECT MOD(x,y)/*求x除以y的余数*/
求幂运算函数
SELECT POW(x,y)|POWER(x,y)/*求x的y次方*/
SELECT EXP(x) /*求e的x次方*/
SELECT SQRT(x) /*求x的算数平方根,若x小于0,输出NULL*/
角度弧度互换函数
SELECT RADIANS(x)/*角度转弧度*/
SELECT DEGREES(x)/* 弧度转角度*/
圆周率函数
SELECT PI()/*返回π值*/
三角函数
SELECT SIN(x)
SELECT ASIN(x)
SELECT COS(x)
SELECT ACOS(x)
SELECT TAN(x)
SELECT ATAN(x)
SELECT COT(x)
字符串函数
计算字符串字符数函数
SELECT CHAR_LENGTH(str)
计算字符串字节函数
SELECT LENGTH(str)
合并字符串函数
SELECT CONCAT(str_list)/*如果存在NULL参数,返回结果为NULL*/
SELECT CONCAT(x,str_list)/*x为连接符/
替换字符串函数
SELECT INSERT(str,i,len,s)/*str从第i个字符开始len个字符替换成s*/
SELECT REPLACE(str,s1,s2)/*str中全部的s1都替换成s2*/
截取字符串函数
SELECT LEFT(str,len)|RIGHT(str,len)/截取str左边(右边)开始数len个长度的字符串*/
重复生成字符串函数
SELECT REPEAT(str,n)/*n个str连接一起*/
大小写转换函数
SELECT LOWER(str)|LCASE(str)/*str全部字符转成小写*/
SELECT UPPER(str)|UCASE(str)/*str全部字符转成大写*/
填充字符串函数
SELECT LPAD(str,len,s)/*str左边填充s到该字符串长度为len*/
SELECT RPAD(str,len,s)/*str右边填充s到该字符串长度为len*/
删除空格函数
SELECT LTRIM(str)|RTRIM(str)/*删除str左边(右边)空格*/
SELECT TRIM(str)/*删除两边空格*/
删除指定字符串函数
SELECT TRIM(s FROM str)/*从str中删除s*/
获取子字符串函数
SELECT SUBSTRING(str,i,len)|MID(str,i,len)/*从str的第i个字符开始截取长度为len的字符串*/
返回指定位置字符串函数
SELECT ELT(i,str_list)/*返回str_list中第i个字符串*/
返回指定字符串位置函数
SELECT FIELD(str,str_list)/*从str_list中返回str的位置,若没找到返回0*/
系统函数
获取MySQL版本号
SELECT VERSION()
查看当前用户连接数
SELECT CONNECTION_ID()
查看当前所用数据库
SELECT DATABASE()
SELECT SCHEMA()
获取用户名
SELECT USER()
SELECT CURRENT_USER()
SELECT SYSTEM_USER()
SELECT SESSION_USER()
关系型数据库常用概念
/*
关系型数据库以表格形式表示数据
字段(域)
行(记录)
列
冗余:可以不存在的数据但真实存在
完整性:数据的正确性
失去数据完整性:数据输入有误
主键:某一字段,主键的值不能重复,也不能为空
外键:表的某列数据来源于另一张表的某列
失去实体完整性:主键重复或主键为空
失去引用完整性:引用不存在数据
失去域完整性:数据输入在类型或范围或格式输入有误
*/
- 【MySQL】MySQL学习笔记
- 【mysql】mysql学习笔记
- Mysql学习笔记 --- mysql数据类型
- MySQL学习笔记--MySQL编程
- JBoss-MySql学习笔记
- mysql学习笔记
- Mysql学习笔记(1)
- Mysql学习笔记
- MySQL学习笔记
- Tomcat Mysql 。。。学习笔记
- mysql学习笔记
- mysql DB(学习笔记)
- MySQL 学习笔记一
- MySQL学习笔记
- mysql学习笔记
- mysql学习笔记
- MySQL学习笔记
- MySql学习笔记
- 4152: [AMPPZ2014]The Captain
- Linux socket编程(一) 对套接字操作的封装
- Linux 常用命令
- 关于webpack项目的一些文件用途解析
- Android Studio Error:Execution failed for task ‘:app:mergeDebugResources’
- MySQL学习笔记
- 传化智联如何拿下第248张第三方支付牌照
- npm设置代理
- happens-before揭秘
- LeetCode Weekly Contest 52 Longest Univalue Path(链表dfs)
- 【内附彩蛋】十一出去浪,请带上我的祝福
- Python 官方推荐的一款打包工具
- WPF读写config配置文件及XML数据的学习
- ios系统下不能自动播放视频