MySQL基础学习笔记

    从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常用数据类型

MySQL基础学习笔记_第1张图片

    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()

你可能感兴趣的:(MySQL基础学习)