mysql数据库与mysql函数库 | ||||
标题 | 副标题 | 解释 | 例子 | |
数据库(DataBase DB) | 什么是数据库 | 存储一定结构的数据的仓库 | ||
数据库的分类 | a.关系型数据库:mysql, sqlserver,
orcale等 b.非关系型数据库:mongoDB等(通过对象建立联系) | |||
命令行模式 | 开始-运行-cmd
(window窗口+R) 2. cd 文件夹名称 进入文件夹 3. 盘符: f: 选择盘符 | |||
MYSQL配置文件( my.ini)中的参数 | [mysqld] port=3306 端口号 basedir="F:/PSD1510/mysql/" 数据库安装位置 datadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/" 数据库存放位置 服务器端的默认编码 mysql数据库的默认引擎 | |||
mysql 的登录和退出 | 登录: mysql -h主机名称
-u用户名 -p密码 -P端口号 -D数据库名称 例如: mysql -uroot -proot mysql -hlocalhost -uroot -proot 退出: exit; quit; \q; | |||
修改提示符(prompt) | a. prompt
提示符名称 b. mysql -uroot -proot --prompt=\h\u\D\d \h 主机名称 \u 用户名称 \D 英文时间日期 \d 数据库名称 | |||
恢复修饰符 | prompt mysql> | |||
注释 | # 注释内容 -- 注释内容 | |||
SQL语句:结构化查询语句 | (1)DDL数据定义语言,创建数据库,创建表 创建视图,存储过程等 创建(CREATE) 修改(ALTER) 删除(DROP) (2)DML数据操作语言,用来操作数据,对数据 进行插入(INSERT),修改(UPDATE), 删除(DELETE) (3)DQL数据查询语言,对数据进行查询(SELECT) (4)DCL数据控制语言,GRANT,REVOKE分配和取消权限 | |||
SQL语句语法规范 | (1)系统命令使用大写,名称使用小写 (2)SQL语句以分号或 \g 分隔符结束 修改指定结束分隔符用 delimiter 结束符号名称 (3)SQL语句支持折行,但完整的名称,函数,引号不能拆开写 (4)名称不能与关键字和保留字冲突,一旦冲突用反引号`名称`解决 | |||
数据库的默认写法 | SELECT VERSION();
数据库版本 SELECT USER(); 当前数据库的用户 SELECT NOW(); 当前系统时间日期 | |||
创建库与指令 | 查看mysql中的所有数据库 | (1)
查看mysql中的所有数据库 SHOW DATABASES; | ||
创建数据库(DDL) | (2)
创建数据库 CREATE DATABASE [IF NOT EXISTS] 数据库名称 [[DEFAULT] CHARACTER SET [=]'编码方式'] 例如:CREATE DATABASE psd1510; CREATE DATABASE psd1510 DEFAULT CHARACTER SET 'utf8'; CREATE DATABASE IF NOT EXISTS psd1510 DEFAULT CHARACTER SET 'utf8'; | |||
查看创建的数据库命令 | (3)查看创建的数据库命令 SHOW CREATE DATABASE 数据库名称; | |||
修改数据库编码 | (4)修改数据库编码 ALTER DATABASE
数据库名称 [DEFAULT] CHARACTER SET [=]'编码形式'; | |||
删除数据库 | 删除数据库 DROP DATABASE [IF EXISTS]
数据库名称; | |||
打开选定的数据库 | 打开选定的数据库 USE 数据库名称; | |||
显示当前选定的数据库 | 显示当前选定的数据库 SELECT DATABASE(); | |||
表的相关指令 | 查看当前数据库中的表 | 11创建表(DDL) (1)查看当前数据库中的表 SHOW TABLES; | ||
创建表 | (2)创建表 CREATE TABLE [IF NOT EXISTS] 表名称( 列名称(字段名称) 数据类型[字段属性或完整约束条件], .... )[ENGINE=InnoDB 数据库引擎 DEFAULT CHARSET=编码形式]; | |||
查看表结构 | DESC
表名称; DESCRIBE 表名称; SHOW COLUMNS FROM 表名称; | |||
查看创建表的命令 | (4)查看创建表的命令 SHOW CREATE TABLE 表名称; 一个字段,表一定是先用结构,后添加数据 | |||
数据管理 | 数据添加(DML) | INSERT [INTO] 表名
(字段1,字段2...) VALUE[S](值1,值2...); | ||
数据查询(DQL) | SELECT * FROM
表名; SELECT 字段1,字段2... FROM 表名; | |||
mysql数据类型 | (1)整型 | TINYINT[UNSIGNED|ZEROFILL]: 无符号位范围:0~255 (大小1字节 2^8) 有符号位范围:-128~127 SMALLINT[UNSIGNED|ZEROFILL]: 无符号位范围:0~65535 (大小2字节 2^16) 有符号位范围:-32768~32767 MEDIUMINT[UNSIGNED|ZEROFILL]: 无符号位范围:0~16777215 (大小3字节 2^24) 有符号位范围:-8388608~8388607 INT[UNSIGNED|ZEROFILL]: 无符号位范围:0~4294967295 (大小4字节 2^32) 有符号位范围:-2147483648~2147483647 BIGINT[UNSIGNED|ZEROFILL]:(大小8字节 2^64) 说明: 字段属性: a. UNSIGNED:无符号位,正数 b. ZEROFILL:填补0,结合显示长度使用, 当显示长度小于指定长度用0填补, 自动添加UNSIGNED | unsigned[ansaide]:无符号位 | |
(2).浮点型 | FLOAT[(M,D)][UNSIGNED|ZEROFILL]: 单精度浮点范围: -3.40E38~3.40E38 DOUBLE[(M,D)]//(debo)[UNSIGNED|ZEROFILL]: 双精度浮点范围: -1.79E308~1.79E308 DECIMAL[(M,D)]//(deseme)[UNSIGNED|ZEROFILL]: DECIMAL没误差存储 说明: M代表小数点之前的总位数, D小数点后的中位数 M最大65个,D最大30 默认值 M 10个 ,D 0个 | |||
(3)字符型 | CHAR[(M)]:定长范围
0~255字节(一个字母占1字节) VARCHAR[(M)]:变长 0~65535字节 VARCHAR的长度范围受下面条件影响 a. VARCHAR的长度范围至多65535字节 b.编码影响 gbk:至多占2字节 65532/2 utf8:至多占3字节 65532/3=21844字节 c.表中所有字段中VARCHAR长度 65535 TINYTEXT:至多255字节 TEXT:至多65535字节 MEDUIMTEXT:至多16777215字节 LONGTEXT:至多4294967295字节 说明: VARCHAR 省空间但效率低 TEXT效率最大 | |||
(4)枚举类型 | enum: 例如
enum('man','woman','scret')
说明:最大能存 65535个值 | |||
二.帮助 | \h 命令 ? 命令 help 命令 | |||
三.完整约束条件1 | [NOT NULL][DEFAULT] [[PRIMARY] KEY] [UNIQUE [KEY]] [AUTO_INCREMENT] | 1.NOT NULL:不能为空 2.DEFAULT:默认值 3.[PRIMARY]KEY:一个表中必须 有一个主键(唯一标识), 自动添加NOT NULL, 不重复 4.UNIQUE [KEY]:一个表中只能 有一个主键但可以有多个不重复 5. AUTO_INCREMENT:每次自动增加1, 必须和 PRIMARY KEY结合使用 | ||
四.表结构操作(DDL) | (1)添加表一个字段 | (1)添加表一个字段 ALTER TABLE 表名 ADD 字段名称 数据类型 [字段属性][FIRST|AFTER 字段名称] | ||
(2)添加表的多个字段 | ALTER TABLE 表名 ADD 字段名称 数据类型 [字段属性][FIRST|AFTER 字段名称], ADD 字段名称 数据类型 [字段属性][FIRST|AFTER 字段名称], ... | |||
(3)删除表中的字段 | (3)删除表中的字段 ALTER TABLE 表名 DROP 字段名称, DROP 字段名称, ... | |||
(4)修改数据类型 | )修改数据类型 ALTER TABLE 表名 MODIFY 字段名称 数据类型 [字段属性][FIRST|AFTER 字段名称] | |||
(5)修改字段名称 | (5)修改字段名称 ALTER TABLE 表名 CHANGE 旧字段名 新字段名 数据类型 [字段属性][FIRST|AFTER
字段名称] | |||
(6) 修改默认值 | (6) 修改默认值 ALTER TABLE 表名 ALTER 字段名 SET DEFAULT 值 | |||
(7) 删除默认值 | (7) 删除默认值 ALTER TABLE 表名 ALTER 字段名 DROP DEFAULT | |||
(8) 添加主键(PRIMARY KEY) | (8) 添加主键(PRIMARY KEY) ALTER TABLE 表名 ADD PRIMARY KEY(字段名) | |||
(9) 删除主键 | (9) 删除主键 ALTER TABLE 表名 DROP PRIMARY KEY | |||
(10)添加唯一性 | 10)添加唯一性 a.ALTER TABLE 表名 ADD UNIQUE KEY|INDEX(字段名) b.ALTER TABLE 表名 ADD [CONSTRAINT 约束名称] UNIQUE KEY|INDEX(字段名) 说明:如果没定义约束名称,将字段作为约束名称 | |||
(11)删除唯一性 | ALTER TABLE 表名 DROP KEY|INDEX 约束名称 | |||
(12)表重命名 | (12)表重命名 a. ALTER TABLE 表名 RENAME [AS|TO] 新表名 b. RENAME TABLE 旧表名 TO 新表名 | |||
(13)重置 AUOT_INCREMENT初始值
| (13)重置 AUOT_INCREMENT初始值
ALTER TABLE 表名 AUOT_INCREMENT=值 | |||
五.数据操作语言(DML) | 1.添加(INSERT) | 1.添加(INSERT) a.没有字段(FIELDS)的数据添加(添加字段信息字段值安顺序依次添加) INSERT [INTO] 表名 VALUE[S](值...) b.有字段的数据添加 INSERT [INTO] 表名(字段名,字段名...) VALUE[S](值...) c.多条记录(RECORDS)添加 INSERT [INTO] 表名(字段名,字段名...) VALUE[S] (值...), (值...), (值...), ... d.INSERT ...SET(只能添加一条记录) INSERT 表名 SET
字段名=值,字段名=值... | ||
2.更新(UPDATE) | 2.更新(UPDATE) UPDATE 表名 SET 字段名=值,字段名=值...[WHERE 条件] 说明:如果没有条件,将会更新整个表中的值 | |||
3.删除表(DELETE) | 3.删除表(DELETE) a. DELETE FROM 表[WHERE 条件] 说明:如果没有条件,将会清空整个表, AUTO_INCREMENT 不重置 b. TRUNCATE [TABLE] 表名 清空整个表,AUTO_INCREMENT 重置 | truncate[chuankete]:被删节的 | ||
六 数据查询语言(DQL) | (1)查询所有字段 | (1)查询所有字段 SELECT * FROM 表名; 说明:效率低 | ||
(2)查询指定字段 | (2)查询指定字段 SELECT 字段名|expr,字段名|expr ... FROM 表名 | |||
(3)字段起别名 | (3)字段起别名 SELECT 字段名 [AS] 别名 ... FROM 表名 | |||
(4)表名起别名 | (4)表名起别名 SELECT 字段名 ... FROM 表名 [AS] 别名 | |||
(5)表名.字段名(来着哪个表的字段) | (5)表名.字段名(来着哪个表的字段) SELECT 表名.字段名 ... FROM 表名 | |||
(6)数据库名.表名 | (6)数据库名.表名 SELECT 字段名 ... FROM 数据库名.表名 | |||
注意: 当输入中文信息,需要临时将客户端实现中文编码 SET NAMES GBK; | ||||
SELECT 字段名|expr ... FROM 表名 [WHERE 条件] [GROUP BY 字段] [HAVING 字段] [ORDER BY 字段] [LIMIT [OFFSET],LENGTH] | ||||
1.[WHERE
条件]:过滤条件查询 | a.比较运算: > >= < <=
= != <> <=>(判断null值) | |||
b. IS (NOT) NULL
(判断null值) | ||||
c. (NOT) BETWEEN ... AND
...(范围值) | ||||
d. (NOT) IN(值,值,值...)
(固定值) | ||||
e. AND && 逻辑与 | ||||
f. OR || 逻辑或 | ||||
g. [not] LIKE string [ESCAPE
string] | g. [not] LIKE string [ESCAPE
string] 模糊查询 关键字 '%'代表0个或1个或多个任意字符 '_'代表一个任意字符 | |||
2.[GROUP BY 字段] | 将某个字段中相同的值分 为一组实现分组效果,每组中的结 果只显示一个值 说明:一般结合聚合函数使用 count:个数 count(字段):不包含null count(*):包含null值 max(字段):最大值 min(字段): 最小值 avg(字段):平均值 sum(字段):求和 | |||
3.[HAVING 字段] | 3.[HAVING 字段]:对分组后的二次过滤 说明:HAVING 是对分组的 过滤条件查询 | |||
4.[ORDER BY 字段]排序 | 4.[ORDER BY 字段]排序 | |||
5.[LIMIT
[OFFSET],LENGTH] | 5.[LIMIT [OFFSET],LENGTH] OFFSET:偏移量,记录从0开始编号 起始记录数 LENGTH:返回几条记录 OFFSET计算:(当前页-1)*每页显示条数 | |||
二.MYSQL运算符和函数 | ||||
1.算术运算符和函数 | a.算术运算符 + - * / %
MOD | |||
b.函数 | b.函数 POW,POWER:幂运算 SQRT:平方根 FLOOR:向下取整 CEIL:向上取整 ROUND:四舍五入 RAND:随机数 0<=x<1 浮点 例如: RAND()*100 0<=x<100 浮点 ROUND(RAND()*100) 整数 | |||
2.字符函数 | 2.字符函数 LOWER:返回小写字母 UPPER:返回大写字母 TRIM:清除两边空格 LTRIM:清除左空格 RTRIM:清除右空格 CONCAT(string,string):将多个字符连接 CONCAT_WS(delimiter,string,string):将多个字符连接 SUBSTR(string,start,length): SUBSTRING(string,start,length): 字符串截取(编号从1开始) REPLACE(string,search,replacement): 替换 LENGTH:返回字符串长度 [NOT] LIKE string [ESCAPE string] | |||
3.比较运算 | 3.比较运算 a. > >= < <= = != <> <=> b. IS (NOT) NULL判断null值 c. (NOT) BETWEEN ... AND... d. (NOT) IN(值,值...) | |||
4.逻辑运算符 | 4.逻辑运算符 ! 逻辑非 && AND 逻辑与 || OR 逻辑或 | |||
5.信息函数 | 5.信息函数 VERSION() MYSQL版本号 NOW() 系统时间日期 USER() MYSQL 登录用户 DATABASE() 查看当前打开的数据库 LAST_INSERT_ID():当有AUTO_INCREMENT时使用 显示最后添加的 ID号,如果一次添加多行信息, 只返回第一个ID号 FOUND_ROWS():显示所有查询的记录数 ROW_COUNT():返回增/删/改的影响行数 | |||
7.聚合函数 | 7.聚合函数 COUNT():个数 MAX():最大值 MIN():最小在 AVG():平均值 SUM():求和 | |||
8.密码函数 | 8.密码函数 PASSWORD() MD5() 说明:用 SELECT 显示所有结果 | |||
一.多表操作1 | 1.多表更新 UPDATE 表名1,表名2... SET 字段名=值... WHERE条件 | |||
1.多表更新 | ||||
2.多表连接查询 | SELECT 字段名... FROM
表1 连接类型 表2 ON 条件 连接类型: 内连接:INNER JOIN:查找符合条件的信息 外链接: 左外链接:LEFT (OUTER) JOIN 查找左边表的全部信息和右边 表中符合条件的信息 右外链接 :RIGHT (OUTER) JOIN 查找右边表的全部信息和左边 表中符合条件的信息 说明:不满足条件的信息用NULL 填补 | |||
二.约束(Constraint) | 1.约束:实现对字段的非空,唯一,完整性的约束 | |||
2.分类: | a.功能分 非空(NOT NULL) 默认值(DEFAULT) 主键(PRIMARY KEY) 唯一(UNIQUE KEY) 外键(FOREIGN KEY) | |||
b.按约束的字段个数分
列级约束:将约束条件写到一个字段后 NOT NULL,DEFAULT &n |