开启/退出:
net start mysql;
net stop mysql;
登录与退出
mysql -uroot -pAa8316057 -hlocalhost exit或quit
常见操作:
DDL 数据库或表的结构操作(****) DML 对表的记录更新(增/删/改)(****) DQL 对表的记录查询(****,难点) DCL 用户创建及授权
类型:
标准:
int整型 double(5,2) decimal精确浮点型 char 固长 字符串255 补 varchar 变长 字符串65535 不补
方言(mySQL独有)
MySQL独有: text(clob):字符串类型 blob:字节类型 date:日期 time:时间 timestamp:时间戳
DDL:
数据库(DATABASE)
(创建CREATE,查看SHOW,进入USE,删除DROP)
表(TABLE):
查询表结构: DESC 表名
创建: CREATE TABLE [IF NOT EXISTS] 表名( 列名 列类型 [PRIMARY KEY] [AUTO_INCREMENT]; ... );
修改: ***公共前缀***ALTER TABLE 表名 添加列: ***公共前缀*** ADD(列名 列类型,...); 删除列: ***公共前缀*** DROP 列名 改列名: ***公共前缀*** CHANGE 原列名 新列名 列类型 改列类型:***公共前缀*** MODIFY 列名 列新类型 改表名: ***公共前缀*** RENAME TO 新表名
DQL(基本查询):
列控制:
查询所有列(或指定列 丨 查询但不显示完全重复行):
SELECT * FROM 表名 查询指定列: 把 * 变成 列1,..,列n 查询但不显示完全重复行: 在 * 前 加DISTINCT
列运算:(光查,并不改变数据)
SELECT 运算 FROM 表名; 加/减/乘/除: sal+8 sal+name 字符串运算: CONCAT('$',sal) 转换NULL值(把NULL当0来运算): IFNULL(comm,0)+100 给列取别名: IFNULL(comm,0)+100 AS 奖金 - (其中AS可以省略)
条件控制:
条件查询:(和UPDATE一样的操作方式) SELECT * FROM 表名 WHERE 条件; 模糊查询: SELECT * FROM 表名 WHERE 列名 like '张_'; **** 重点: _ 一个字符 % 0-n个字符; 排序: SELECT * FROM 表名 ORDER BY 列名 ASC; 升序: ASC(ASC可以省略) 降序: DESC(DESC不可以省略) 多列作为排序条件:列名 ASC,列名 DESC
聚合函数:(列纵向运算)
SELECT 聚合函数 FROM 表名; 1:行数 COUNT(*或列名) - 不记NULL 2:大 MAX(列名) 3:小 MIN(列名) 4:和 SUM(列名) 5:平均 AVG(列名) 多项:MAX(列名) AS 大 , MIN(列名) AS 小 ,SUM(列名) AS 和;
分组查询:
SELECT 分组列,聚合函数(支持多项) FROM 表名 [WHERE 条件] GROUP BY 分组列 [HAVING 条件];
执行顺序 SELECT 查询 FROM 从 WHERE 去分组前条件 GROUP BY 分组 HAVING 去分组后条件 ORDER BY 排序
LIMIT子句(方言)
SELECT * FROM 列名 LIMIT 4,3;(从第5行开始查,一共查3行) -(当前页-1) * 每页记录数 , 每页记录数;
DML:
插入数据:
插入列数据: INSERT INTO 表名(列名1,列名2,...) VALUES(列值1,列值2,..); 修改列值: UPDATE 表名 SET 列名=列值,...;(全改) UPDATE 表名 SET 列名=列值 WHERE 条件列名 = 条件列值 or ... ;(指定条件改) = != <> > < >= <= NOT OR AND BETWEEN...AND IN(...) IS NULL 删除数据: DELETE FROM 表名 [WHERE 条件]; - 一定要加WHERE!!!
DCL:
创建用户: CREATE USER 用户名@ip地址 IDENTIFIED BY '密码'; 任意IP登录: @'%' 给用户授权: GRANT 权限1,..权限n NO 数据库.* TO 用户名@ip地址 所有权限: ALL 取消权限: REVOKE 权限1,..权限n NO 数据库.* FROM 用户名@ip地址 查看权限: SHOW GRANTS FOR 用户名@ip地址 删除用户: DROP USER 用户名@ip地址
查看数据库编码:
SHOW VARIABLES LIKE 'char%'; 改:C:\ProgramData下my.ini文件 : default-character-set=gbk 可以改3个变量client(进).connection.results(出)
备份/恢复 数据库内容:
备份数据库内容(退出状态下输入): mysqldump -u用户名 -p密码 据库名>f:/a.sql 恢复数据库内容(退出状态下输入): mysql -u用户名 -p密码 据库名<f:/a.sql 第二种方式:进入数据库后 source f:/a.sql
约束:
1:主键约束:
创建: 创建时候在 列名 列类型 后加 PRIMARY KEY []; 创建后: ADD PRIMARY KEY(列名); 删除: ALTER TABLE 表名 DROP PRIMARY KEY;
2:主键自增长:
创建:AUTO_INCREMENT(在主键后面加 , 详看创建列) - 只能加在整数
CREATE TABLE dept( deptno INT PRIMARY KEY AUTO_INCREMENT, dname VARCHAR(50) ); INSERT INTO dept VALUES(10,'研发部'); INSERT INTO dept VALUES(20,'人力部'); INSERT INTO dept VALUES(30,'财务部'); SELECT * FROM dept;
CREATE TABLE emp( empno INT PRIMARY KEY AUTO_INCREMENT, ename VARCHAR(50), dno INT, CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno) ); INSERT INTO emp(empno,ename) VALUES(NULL,'zhagsan'); SELECT * FROM emp;
3:非空约束:
加 NOT NULL;
4:唯一约束:
加 UNIQUE;一般和NOT NULL一起用
5:概念模型:
6:外键约束:
CONSTRAINT 约束名称 FOREIGN KEY(外键列名) REFERENCES 关系表(关联表的主键) 例:CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCES dept(deptno)
7:数据库1对1关系
8:数据库多对1关系
9:数据库多对多关系