1.操作MySQL服务器
/* 启动MySQL服务器 */
net start mysql(57)
/* 终止MySQL服务器 */
net stop mysql(57)
/* 连接与断开MySQL服务器,其中地址和端口可以省略不写 */
mysql -u 用户名 -h 地址 -P 端口 -p 密码
/* MySQL语法说明:
* 花括号{}表示必选项
* 中括号[]表示可选项
* 竖线|表示分隔符两侧的内容为“或”的关系
* MySQL中不区分大小写
*/
2.数据库操作
/* 创建数据库
* 参数说明:
* if not exists表示在创建数据库前进行判断,只有在数据库目前尚未存在时才执行创建语句
* default指定默认值
*/
create {database|schema} [if not exists] 数据库名
[
数据库选项:
[default] CHARACTER SET [=] 字符集 //指定数据库的字符集
[default] COLLATE [=] 校对规则名称 //指定字符集的校对规则
];
/* 查看数据库
* 参数说明:
* like指定匹配模式
* where指定数据库名称查询范围的条件
*/
show {databases|schemas} [like '模式' where 条件];
/* 选择数据库,使之成为当前库 */
USE 数据库名;
/* 修改数据库(修改被创建数据库的相关参数,并不能修改数据库名) */
alter {database|schema} [数据库名] //如果不指定要修改的数据库则表示修改当前(默认)数据库
[default] CHARACTER SET [=] 字符集 | [default] COLLATE [=] 校对规则名称;
/* 删除数据库(同时删除该数据库相关的目录及其目录内容)
* 参数说明:
* if exists在删除数据库前先判断该数据库是否已经存在,只有在存在时才执行删除操作,避免删除不存在的数据库时产生异常
*/
drop {database|schema} [if exists] 数据库名;
3.数据表操作
/* 创建数据表
* 参数说明:
* if not exists表示在创建数据表前进行判断,只有在数据表目前尚未存在时才执行创建语句
* temporary表示创建一个临时表,会话结束时表自动消失
* create_definition为表的列属性部分(字段),创建表时至少包含一列(每个字段必须有数据类型,最后一个字段后不能有逗号),每一列定义的具体格式如下:
col_name type [NOT NULL|NULL] [DEFAULT default_value] [AUTO_INCREMENT] [PRIMARY KEY] [reference_definition]
参数说明:
--col_name字段名
--type字段类型
--NOT NULL|NULL该列是否允许是空值,系统默认允许为空值
--DEFAULT default_value表示默认值
--AUTO_INCREMENT表示是否是自动编号,每个表只能有一个AUTO_INCREMENT列并且必须被索引
--PRIMARY KEY表示是否为主键,一个表只能有一个PRIMARY KEY,而某些应用程序需要PRIMARY KEY,MySQL将返回第一个没有任何NULL列的UNIQUE键,作为PRIMARY KEY
--reference_definition为字段添加注释
* table_options用于指定表的一些特性参数,大多数选项涉及的是表数据如何存储及存储在何处
* select_statement为SELECT语句描述部分,可以快速创建表
*/
create [temporary] table [if not exists] [数据库名.] 数据表名
[(create_definition,…)] [table_options] [select_statement];
实际应用中最基本的格式如下:
create table 数据表名 (列名1 属性,列名2 属性...);
/* 查看数据表 */
show tables [like '模式'];
show tables from 数据库名;
/* 查看表结构 */
show [full] columns from 数据表名 [from 数据库名];
show [full] columns from 数据表名.数据库名;
describe(DESC) 数据表名;
describe(DESC) 数据表名 列名;
/* 修改表结构
* 参数说明:(alter table语句允许指定多个语句,其动作间使用逗号分隔,每个动作表示对表的一个修改)
* ignore表示如果出现重复关键的行,则只执行一行,其他重复的行被删除
* alter_spec用于定义要修改的内容,其语法格式如下:
ADD [column] create_definition [first|after column_name] //添加新字段
| ADD INDEX [index_name] (index_col_name,...) //添加索引名称
| ADD PRIMARY KEY (index_col_name,...) //添加主键名称
| ADD UNIQUE [index_name] (index_col_name,...) //添加唯一索引
| alter [COLUMN] col_name {SET DEFAULT literal|DROP DEFAULT} //修改字段默认值
| CHANGE [COLUMN] old_col_name create_definition //修改字段名/类型
| MODIFY [COLUMN] create_definition //修改子句定义字段
| DROP [COLUMN] col_name //删除字段名称
| DROP PRIMARY KEY //删除主键名称
| DROP INDEX index_name //删除索引名称
| RENAME [AS] new_tbl_name //更改表名
参数说明(通过alter语句修改表列,其前提是必须将表中数据全部删除,然后才可以修改表列):
--create_definition定义列的数据类型和属性
--first|after column_name用于指定位于哪个字段的前面或者后面
--index_name指定索引名
--index_col_name指定索引列名
--col_name字段名
--SET DEFAULT literal|DROP DEFAULT为字段设置或者删除默认值,literal参数为要设置的默认值
--old_col_name用于指定要修改的字段名
--new_tbl_name用于指定新的表名
* table_options用于指定表的一些特性参数,大多数选项涉及的是表数据如何存储及存储在何处
*/
alter [ignore] table 数据表名 alter_spec[,alter_spec]...|table_options;
/* 重命名数据表(可以同时对多个数据表进行重命名,多个表之间以逗号分隔) */
RENAME TABLE 原数据表名 TO 新数据表名
RENAME TABLE 原数据表名 TO 数据库库名.新数据表名 //可将数据表移动到另一个数据库
/* 复制表结构(表的数据不会被复制,新创建的表是一张空表) */
CREATE TABLE [if not exists] 数据表名 {LIKE 源数据表名|(LIKE 源数据表名)};
/* 复制表结构和表中的数据 */
CREATE TABLE 数据表名 [AS] SELECT * FROM 源数据表名;
/* 删除数据表(可以同时删除多个数据表,多个表之间以逗号分隔) */
DROP TABLE [IF EXISTS] 数据表名;
4.运算符
/* 算术运算符 */
+----------+------------------------------+
| 符号 | 作用 |
+----------+------------------------------+
| + | 加法运算 |
| - | 减法运算 |
| * | 乘法运算 |
| / | 除法运算 |
| % | 求余运算 |
| DIV | 除法运算,返回商,同/ |
| MOD | 求余运算,返回余数,同% |
+----------+------------------------------+
/* 比较运算符
* 判断一个值是否为空值可以使用"<=>",is null和is not null
*/
+-------------+------------+-----------------------+
| 运算符 | 名称 | 示例 |
+-------------+------------+-----------------------+
| = | 等于 | id=5 |
| > | 大于 | id>5 |
| < | 小于 | id<5 |
| >= | 大于等于 | id>=5 |
| <= | 小于等于 | id<=5 |
| !=或<> | 不等于 | id!=5 |
| IS NULL | n/a | id is null |
| IS NOT NULL | n/a | id is not null |
| BETWEEN AND | n/a | id between 1 and 15 |
| IN | n/a | id in(3,4,5) |
| NOT IN | n/a | name not in(shi,li) |
| LIKE | 模式匹配 | name like('shi%') |
| NOT LIKE | 模式匹配 | name not like('shi%') |
| REGEXP | 常规表达式 | name 正则表达式 |
+-------------+------------+-----------------------+
/* 逻辑运算符 */
+-------------+------------+
| 符号 | 作用 |
+-------------+------------+
| &&或AND | 与 |
| ||或OR | 或 |
| ! 或NOT | 非 |
| XOR | 异或 |
+-------------+------------+
/* 位运算符 */
+----------+------------------------------------------------------------------------------+
| 符号 | 作用 |
+----------+------------------------------------------------------------------------------+
| & | 按位与,先将十进制的数转换为二进制的数,然后对应操作数的每个二进制位上进行与运 |
| | 算,1和1相与得1,与0相与得0,运算完成后再将二进制数变回十进制数 |
| | | 按位或,先将十进制的数转换为二进制的数,然后对应操作数的每个二进制位上进行或运 |
| | 算,1和任何数相或得1,0与0相或得0,运算完成后再将二进制数变回十进制数 |
| ~ | 按位取反,将操作数化为二进制数后,每位都进行取反运算,1取反后变成0,0取反后变成1 |
| ^ | 按位异或,将操作数化为二进制数后,每位都进行异或运算.相同的数异或之后结果是0, |
| | 不同的数异或之后结果为1 |
| << | 按位左移,“m<<n”表示m的二进制数向左移n位,右边补上n个0 |
| >> | 按位右移,“m>>n”表示m的二进制数向右移n位,左边补上n个0 |
+----------+------------------------------------------------------------------------------+
/* 运算符的优先级 */
+----------+--------------------------------------------------+
| 优先级 | 运算符 |
+----------+--------------------------------------------------+
| 1 | ! |
| 2 | ~ |
| 3 | ^ |
| 4 | *,/,DIV,%,MOD |
| 5 | +,- |
| 6 | >>,<< |
| 7 | & |
| 8 | | |
| 9 | =,<=>,<,<=,>,>=,!=,<>,IN,IS,NULL,LIKE,REGEXP |
| 10 | BETWEEN AND,CASE,WHEN,THEN,ELSE |
| 11 | NOT |
| 12 | &&,AND |
| 13 | ||,OR,XOR |
| 14 | := |
+----------+--------------------------------------------------+
5.流程控制语句
/* if语句 */
if condition then
statement_list
...
[elseif condition then
statement_list
...]
[else]
...
end if;
/* case语句 */
CASE [value]
WHEN value THEN ...
[WHEN value THEN ...]
[ELSE ...]
END CASE;
/* while循环语句 */
while condition do
statement_list
...
end while;
/* LOOP循环语句
* 推出循环应用LEAVE语句,格式为:
LEAVE loop_label;
*/
loop_label:LOOP
...
END LOOP;
/* REPEAT循环语句 */
REPEAT
...
UNTIL condition
END REPEAT;
/* ITERATE语句
* 可以出现在LOOP,REPEAT,WHILE语句中意为再次循环,格式与LEAVE相似,区别在于LEAVE语句是离开一个循环,ITERATE语句是重新开始一个循环
*/
ITERATE label;
6.表数据的增,删,改操作
/* 插入数据Ⅰ
* 参数说明:
* IGNORE表示在执行INSERT语句时,所出现的错误都会被当做警告处理
* (字段名,...)表示向数据表的指定列插入数据,当不指定该选项时则表示向表中所有列插入数据
* VALUES (值,...)指定需要插入的数据清单,其顺序与数据类型必须与字段的顺序与数据类型相对应
*/
INSERT [IGNORE] [INTO] 数据表名 [(字段名,...)] VALUES (值,...) [,(...),...]
/* 插入数据Ⅱ
* 通过直接给表中的某些字段指定对应的值来实现插入指定数据,对于未指定值的字段将采用默认值进行添加
* 参数说明:
* SET 字段名=值 用于给数据表中的某些字段设置要插入的值
*/
INSERT [IGNORE] [INTO] 数据表名 SET 字段名=值 [,字段名=值,...]
/* 插入数据Ⅲ
* 将查询结果插入到指定的数据表中
* 参数说明:
* SELECT用于从一个或者多个表中取出数据并将这些数据作为行数据插入到目标数据表中
*/
INSERT [INTO] 数据表名 [(字段名,...)] SELECT ...
/* 修改数据
* 参数说明:
* SET 字段名=值 用于指定数据表中要修改的字段名及其字段值
* WHERE用于限定表中要修改的行,如果不指定该子句则会更新表中的所有行
* ORDER BY用于限定表中的行被修改的次序
* LIMIT用于限定被修改的行数
*/
UPDATE [IGNORE] 数据表名 SET 字段1=值1 [,字段2=值2...] [WHERE 条件表达式] [ORDER BY...] [LIMIT 行数]
/* 删除数据Ⅰ
* 参数说明:
* QUICK用于加快部分种类的删除操作的速度
* WHERE用于限定表中要删除的行,如果不指定该子句则会删除表中的所有行
* ORDER BY用于限定表中的行被删除的次序
* LIMIT用于限定被删除的行数
*/
DELETE [QUICK] [IGNORE] FROM 数据表名 [WHERE 条件表达式] [ORDER BY ...] [LIMIT 行数]
/* 删除数据Ⅱ
* 删除表中所有的行中的数据且无法恢复
*/
TRUNCATE [TABLE] 数据表名