一、MySQL常用基本数据类型
1.1 数值
INT(4) ,TINYINT(1),FLOAT(4),DOUBLE(8) // 括号内是它们所占的字节数
1.2 日期和时间
DATE(3),TIME(3),DATETIME(8),YEAR(1)
1.3 字符串
CHAR(0~255),WARCHAR(0~255),TEXT(0~65535),
CHAR为定长字符串,WARCHAR为变长字符串
二、数据定义语言(DLL)
(语法不区分大小写)
数据库
2.1 查看数据库 SHOW DATABASES;
2.2 切换至数据库 USE DATABASE database_name; // 这里小写指根据具体情况写具体的数据库名称
2.3 创建数据库 CREATE DATABASE database_name;
2.4 删除数据库 DROP DATABASE database_name;
创建后的数据库一般都放在MYSQL\MySQLServer8.0\Data目录。
数据表
2.2.1 创建表 CREATE TABLE table_name(列名 列类型 其他关键词,
(列名 列类型 其他关键词,
(列名 .... .... );
其他关键此包括:not null(非空),auto_increment(自增),comment' 解释词'(解释),default(默认)
2.2.2 查看当前数据库所有表 SHOW TABLES;
2.2.3 查看表的结构 DESC table_name;
2.2.4 查看创建表的语句 SHOW CREATE TABLE table_name;
2.2.5 删除表 DROP TABLE table_name;
2.2.6 修改类型 ALTER TABLE table_name MODIFIY 字段 类型;// not null视情况是否加上
2.2.7 修改字段 ALTER TABLE table_name CHANGE 原字段 新字段 类型;
2.2.8 添加字段 ALTER TABLE table_name ADD 字段 类型 其他关键词;// 默认添加在表尾,可在语句末尾加上AFTER 某字段改变其位置
2.2.9 删除字段 ALTER TABLE table_name DROP 字段;
三、数据操作语言(DML)
下面介绍的DML是对表记录的增删改查
3.1 查看表的内容 SELECT * FROM table_name;
3.2 插入数据 INSERT INTO table_name(列名1,列名2,列名3,.....)VALUES(列值1,列值2,列值3,.....); // 注意:列名与列值的顺序是一 一对应的;varchar和char类型的列值需要单引号' '
3.3 修改/更新数据 UPDATA table_name SET 列名1=列值1,列名2=列值2……[WHERE 条件]; // WHERE 这部分自由发挥,如WHRER id in(1,2)
3.4 删除数据 DELETE FROM table_name [WHERE 条件];
四、数据查询语言(DQL)
无论是哪一种查询语言,对表本身的结构和内容都没有影响,仅作为查询,给用户显示。
4.1 查看指定列内容 SELECTE 列名1,列名2,……FROM table_name [WHERE 条件];
4.2 查看表的所有内容 SELECT * FROM table_name;
4.3 模糊查询 SELECT * FROM table_name [WHERE 列名 ] LIKE "你想搜索的内容“
4.4 升序排列 SELECT * FROM table_name ORDER BY 字段名 ASC;
4.5 降序排列 SELECT * FROM table_name ORDER BY 字段名 DESC;
4.6 聚合函数 SELECT function FROM FROM table_name;
// 这里的function包括count(*)、sum(列名)、avg(列名)、max(列名)、min(列名),分别对应的功能是查看表的记录数、查看此列的和、平均值、最大值、最小值
4.7 分组查询 SELECT * FROM table_name GROUD BY sex;(这里假设性别分组)
4.8 内连接查询 SELECT 想要显示的内容 FROM 表1 INNER JOIN 表2 ON 条件;
4.9 左连接查询 SELECT 想要显示的内容 FROM 表1 LEFT JOIN 表2 ON 条件; // 以左边的表1为基准将表1列出,表2再对应列出内容,空白处用NULL填充
4.10 右连接查询 SELECT 想要显示的内容 FROM 表1 RIGHT JOIN 表2 ON 条件;
4.11 子查询 SELECT 内容1 FROM 表1 [WHERE 条件] IN (SELECT 内容2 FROM 表2); //内容1和内容2要对应上
4.12 限制条数查询 SELECT 列名 FROM table_name LIMIT n; //n表示想要显示多少条
4.13 限制条数查询 SELECT 列名 FROM table_name LIMIT m,n; //在第n+1行开始显示m条
五、数据控制语言(DCL)
5.1 创建用户 CREATE USER user_name @ 'ip address' IDENTIFIED BY 'password'; //该用户只能在这个ip上登陆,当然如果用%,则所有ip都可以连接
创建用户后,该用户如何进入数据库:Mysql -user_name h ip address -p; //ip如果是本地的,ip可用local host代替
5.2 给用户授权 GRANT privileges ON database_name.table_name TO 'user_name' @ 'host_name' ;
//这里的privileges包括select,insert,update,delect等多种权限,如果想授予全部权限,可用all,如果想要给所有数据库的所有表授予对应权限,可用*.*代替database_name.table_name
5.3 刷新权限 FLUSH PRIVILEGES; //只要执行一次DCL,都应刷新一下权限
5.3 撤销用户权限 REVOKE privileges ON database_name.table_name FROM 'user__name' @ 'host_name';
5.4 查看用户 SELECT USER, HOST FROM MYSQL.USER;
5.5 查看用户权限 SHOW GRANTS FOR 'user_name' @ 'ip address';
六、事务控制语言(DTL)
一个sql语句就是一个事务,事务可以保证一组sql语句要么都成功,要么都失败,系统默认自动提交
事务有以下特性:
原子性:一个事务中的所有语句,应该做到,要么全做,要么全部不做;
一致性:让数据保持逻辑上”合理性",比如,一个商品出库时,既要让商品库中该商品数量减小,又让对应用户的购物车中的商品增加相应的数量
隔离性:如果多个事务同时并发执行,但每个事务就像各自独立执行一样
持久性:一个事务执行成功,则对数据来说应该是一个明确的硬盘数据更改,而不仅仅是内存中的变化
SET AUTOCOMMIT = 0; //关闭自动提交事务
START TRANSACTION; //开启事务
COMMIT; //提交DML操作
ROLLBACK; //取消DML操作,也叫回滚
////……先写到这里了,有空再补吧……回滚……