从5月17日至6月11日,学习MySQL基础学习,现在来总结一下这段时间的学习情况,一方面是把纸质笔记转化为电子笔记,另一方面是巩固一下所学的知识。
1、数据库常用概念
1)字段,元组,行(记录),列,域,主键,外键,数据完整性,实体完整性,引用完整性,域完整性
2、结构化查询语句SQL简介
1)结构化查询语言用于存取数据及查询,更新和管理关系数据库系统
2)分类:
a、数据定义语言(DDL):CREATE,ALTER,DROP
b、数据操纵语言(DML):INSERT,DELETE,UPDATE,SELECT
c、数据控制语言(DCL):GRANT,REVOKE,DENY
3、MySQL简介
1)特点:
a、开源性
b、占用资源少
c、适用于多种编程语言
d、支持客户端访问
2)MySQL下载安装及环境配置
在这里我就不想多说什么了,不同的版本对应的环境配置有略有不同,在网上都能找到环境配置的资源
4、数据库管理
1)创建数据库
CREATE DATABASE databasename
2)删除数据库
DROP DATABASE databasename
5、MySQL常用数据类型
6、创建数据表
1)数据表的设计及ER图
数据库设计的基本步骤
a、需求分析
b、概要设计
c、详细设计
d、代码编写
2)三种范式
a、第一范式:每一列都具有原子性
b、第二范式:每一个标只表示一件事情
c、第三范式:要求表中不存在沉余字段
3)使用命令窗口创建数据表
CREATE TABLE table_name
(col_name1 col_type [not null],
col_name2 col_type [not null],
...
)
7、为列添加约束
1)主键约束作用:保证实体完整性 PRIMARY KEY
2)外键约束作用:保证引用完整性 REFERENCES
3)检查约束作用:保证域完整性 CHECK(...)
4)默认约束作用:保证域完整性 DEFAULT...
5)自增列作用:保证实体完整性 AUTO_INCREMENT
8、查看数据表
1)查看表的基本结构
语法:DESCRIBE/DESC table_name
2)查看表的详细结构
语法:SHOW CREATE TABLE table_name
9、修改数据表
1)修改表名
语法:ALTER TABLE old_name RENAME TO new_name
2)修改字段名
语法:ALTER TABLE table_name CHANGE old_name new_name new_type
3)修改字段数据类型
语法:ALTER TABLE table_name MODIFY col_name new_type
4)添加和删除字段
a、添加字段
语法:ALTER table_name ADD new_col_name new_type
b、删除字段
语法:ALTER TABLE table|_name DROP col_name
5)为列补增约束
a、添加主键
语法:ALTER TABLE table_name ADD CONSTRAINT con_name PRIMARY KEY (col_name)
b、添加外键
语法:ALTER TABLE f_table ADD CONSTRAINT con_name FOREIGN KEY(f|_col)REFERENCES m_table(m_col)
c、添加检查约束
语法:ALTER TABLE table_name ADD CONSTRAINT con_name CHECK(exp)
d、添加默认值
语法:ALTER TABLE table_name ALTER col_name SET DEFAULT value
e、添加自增列
语法:ALTER TABLE table_name MODIFY COLUMN col_name...AUTO_INCREMENT
10、删除数据表
1)删除无关联数据表
语法:DROP TABLE [IF EXISTS] table_name1,table_name2...
2)删除有关联数据表
a、先解除关联关系
ALTER TABLE f_table_|name DROP FOREIGN KEY con_name
b、删除表
DROP TABLE table1,table2....
11、插入数据
1)所有列都插入值
语法:INSTERT [INTO] table_name VALUES(V1,V2,...)
特点:列值同数,列值同序
2)为特定列插入值
语法:INSTERT [INTO] table_name(col1,col2,...)VALUES(v1,v2,...)
特点:指定顺序,列值对应
3)一次性插入多条记录
语法:INSTERT [INTO] table_name[(col1,col2,...)] VALUES(v11,v12,...)(v21,v22,...)(v31,v32,...)
12、修改数据
1)修改全部数据
语法:UPDATE table_name SET{col_name=expression}[...n]
2)修改特定数据
语法:UPDATE table_name SET SET{col_name=expression}[...n] WHERE condition_expression
13、删除数据
1)使用DELETE命令删除数据
语法:DELETE [FROM] table_name [WHERE condition_expression]
2)使用TRUNCATE TABLE删除数据
语法: TRUNCATE TABLE table_name
14、查询基础
1)查询和提取数据的过程
2)SELECT语句
语法:SELECT col1,col2,...coln FROM table1,table2,...tablen [WHERE conditions]
[GROUP BY group_by_list] [HAVING conditions] [ORDER BY order_list [ASC|DESC]]
15、简单查询
1)查询表的全部行和列
语法:SELECT * FROM table
2)查询表的部分列
语法:SELET col1,col2 FROM table
3)别名的使用
语法:SELECT col AS 'expression' FROM table
4)DISTINCT关键字
作用:消除结果集中的重复行
SELECT DISTINCT col FROM table
5)LIMIT关键字
作用:指定结果集中数据的显示范围
SELECT * FROM table LIMIT n,s
16、条件查询
1)普通条件查询
语法:SELECT col_list FROM table_name [WHERE condition_expression]
2)模糊查询
语法:SELECT * FROM table_name WHERE expression
3)查询空值的运算符
语法:SELECT * FROM table_name WHERE expression IS [NOT] NULL
17、对查询结果排序
1)对指定列排序
语法:SELECT col_list FROM table_name ORDER BY order_by_list [ASC | DESC]
2)多列排序
语法:SELECT * FROM col1 ASC/DESC,col2 ASC/DESC
18、汇总和分组函数
1)聚合函数:对多余数据做汇总
a、sum() 求和
b、avg() 求平均值
c、min() 最小值
d、max()最大值
e、count() 统计结果集中全部记录行的数量
2)结果集中分组
使用 GROUP BY 进行分组
3)筛选分组结果
在使用GROUP BY子句时,可用HAVING子句为分组统计进一步设置统计条件,HAVING字句与GROUP BY子句的关系相当于WHERE子句与SELECT子句之间的关系,与WHERE子句的区别是,在HAVING子句中是以聚合函数的统计结果为筛选条件
4)SELECT语句的执行顺序
a、FROM子句指定数据源
b、WHERE子句基于指定的条件对记录进行筛选
c、GROUP BY 子句将数据划分为多个分组
d、使用聚合函数进行计算
e、使用HAVING子句筛选分组
f、使用ORDER BY子句对结果集进行排序
19、连接查询
1)FROM子句进行多表查询
SELECT col1,col2,...FROM table_name1,table_name2,...WHERE table_name1.col1 = table_name2.col2...
2)内连接
a、特点:相连接的两张表地位平等,如果一张表中在另一张表中不存在对应数据,则不做连接
b、FRPM子句后面直接出现多个表名,这种连接方式属于内连接,是隐式内连接
c、显示内连接:SELECT col_list FROM table1 [INNER] JOIN table2 ON table1.col=table2.col
3)外连接
a、外连接分为左外连接和右外连接
b、外链接的特点:连接的两个表地位不一样,其中一张表是基础表;基础表中的每一条数据都必须出现,即使另一张表中没有数据与之匹配,也要用NULL补齐;左外连接时,左表是基础表,右外连接时,右表是基础表;语句中先出现的表为’左表‘,后出现的表为’右表‘
c、外连接格式:SELECT col_list FROM table1 LEFT/RIGHT [OUTER] JOIN table2 ON table1.col = table2.col
20、子查询
1)使用IN关键字的子查询
SELECT * FROM table_name1 WHERE col_list IN (SELECT col1 FROM table_name2 WHERE col2)
2)使用EXISTS关键字的子查询
SELECT * FROM table_name1 WHERE col_list EXISTS (SELECT * FROM table_name2 WHERE col2)
3)联合查询
a、语法:SELECT statement UNION [ALL] select_statement [UNION [ALL] select_statement] [...]
b、作用与特点:可以把多余查询语句所产生的结果集纵向联合为一体;有ALL关键字可以显示全部数据(即重复的也显示出来);列的数量与类型都要兼容
21、时间和日期函数
1)函数的概念:按指定格式输入参数,返回正确结果的运行单元
2)返回当前日期
CURDATE()
CURRENT_DATE()
CURRTNT()+0 可以将当前日期值转换为数值型
3)返回当前时间
CURTIME()
CURRENT_TIME()
CURTIME() +0
4)返回当前时间和日期
CURRENT_TIMESTAMP()
LOCALTIME()
NOW()
SYSDATE()
5)获取月份、星期、天数、年份、季度、小时、分钟、秒钟
MONTH(date)
MONTHNAME(date)
DAYNAME(date)
DAYOFWEEK(date)
WEEKDAY(date)
DAYOFYEAR(date)
DAYOFMONTH(date)
YEAR(date)
QUARTER(date)
HOUR(time)
MINUTE(time)
SECOND(time)
22、数字函数
1)绝对值函数
ABS(x)
2)符号函数
SIGN(x)
3)获得0-1之间的随机数函数
RAND()
RAND(x)
4)获取整数的函数
CEIL(x)/CEILING(x)
FLOOR(x)
5)四舍五入函数
ROUND(x)
ROUND(x,y)
6)求余数函数
MOD(x,y)
7)幂运算函数
POW(x,y)/POWER(x,y)
8)角度弧度互换函数
RADIANS(x)
DEGREES(x)
9)圆周率函数
PI()
10)三角函数
SIN(x)...
23、字符串函数
1)计算字符数和字符串长度的函数
CHAR_LENGTH(s)
LENGTH(s)
2)合并字符串函数
CONCAT(s1,s2,...) 有一个为NULL,全部为NULL
CONCAT_WS(x,s1,s2,...)
3)替换字符串函数
INSERT(s1,x,len,s2)
REPLACE(s,s1,s2)
4)截取字符串函数
LEFT(s,n)
RIGHT(s,n)
5)重复生成字符串函数
REPEAT(s,n)
6)大小写转换函数
LOWER(x)/LCASE(x)
UPPER(x)/UCASE(x)
7)填充字符串的函数
LPAD(s1,len,s2)
RPAD(s1,len,s2)
8)删除空格函数
LTRIM(s)
TTRIM(s)
TRIM(s)
9)删除指定字符串
TRIM(s1,FROM,s)
10)获取子字符串
SUBSTRING(s,n,len)
MID(s,n,len)
11)返回指定位置字符串函数
ELT(n,s1,s2,...)
12)返回指定位置字符串函数
FIELD(s,s1,s2...)
24、系统函数
1)获取MySQL版本号的函数
VERSION()
2)查看当前用户的连接数
CONNECTION_ID()
3)查看当前所用数据库函数
DATABASE()
SCHEMA()
4)获取用户名的函数
USER()
CURRENT_USER()
SYSTEM_USER()
SESSION_USER()