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(*或列名) -不记NULL2:大 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 GRANTSFOR 用户名@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密码 据库名
第二种方式:进入数据库后 source f:/a.sql
约束:
1:主键约束:
创建: 创建时候在 列名 列类型 后加 PRIMARY KEY [];
创建后:ADD PRIMARY KEY(列名);
删除:ALTER TABLE 表名 DROP PRIMARY KEY;
2:主键自增长:
创建:AUTO_INCREMENT(在主键后面加 , 详看创建列) -只能加在整数CREATE TABLEdept(
deptnoINT PRIMARY KEYAUTO_INCREMENT,
dnameVARCHAR(50)
);INSERT INTO dept VALUES(10,"研发部");INSERT INTO dept VALUES(20,"人力部");INSERT INTO dept VALUES(30,"财务部");SELECT * FROMdept;CREATE TABLEemp(
empnoINT PRIMARY KEYAUTO_INCREMENT,
enameVARCHAR(50),
dnoINT,CONSTRAINT fk_emp_dept FOREIGN KEY(dno) REFERENCESdept(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关系
思路:从表的主键即是外键!
/*--------课时9:1对1--------*/
/*创建表*/
CREATE TABLEhashand(
hidINT PRIMARY KEYAUTO_INCREMENT,
hnameVARCHAR(50)
);/*修改表名*/
ALTER TABLEhashand
RENAMETOhasband/*插入记录*/
INSERT INTO hasband VALUES(NULL,"刘备");INSERT INTO hasband VALUES(NULL,"关羽");INSERT INTO hasband VALUES(NULL,"张飞");/*查看*/
SELECT * FROMhasband/*创建1对多
CREATE TABLE wife(
wid int primary KEY auto_increment,
wname VARCHAR(50),
hid int,
CONSTRAINT fk_wife_hasband foreign key(hid) references hasband(hid)
);*/
/*创建*/
CREATE TABLEwife(
widINT PRIMARY KEYAUTO_INCREMENT,
wnameVARCHAR(50),CONSTRAINT fk_wife_hasband FOREIGN KEY(wid) REFERENCEShasband(hid)
);/*wid
1:非空
2:唯一
3:引用hid*/
/*满足以上3个条件*/
INSERT INTO wife VALUES(1,"杨贵妃");INSERT INTO wife VALUES(2,"妲己");INSERT INTO wife VALUES(3,"大乔");/*查询*/
SELECT * FROM wife;
8:数据库多对多关系
/*--------课时10:多对多--------*/
/*创建学生表*/
CREATE TABLEstudent(
sidINT PRIMARY KEYAUTO_INCREMENT,
snameVARCHAR(50));/*创建教师表*/
CREATE TABLEteacher(
tidINT PRIMARY KEYAUTO_INCREMENT,
tnameVARCHAR(50));/*创建关联表*/
CREATE TABLEstu_tea(
sidINT,
tidINT,CONSTRAINT fk_student FOREIGN KEY(sid) REFERENCESstudent(sid),CONSTRAINT fk_teacher FOREIGN KEY(tid) REFERENCESteacher(tid)
);/*往2张表插记录*/
INSERT INTO student VALUES(NULL,"刘德华");INSERT INTO student VALUES(NULL,"梁朝伟");INSERT INTO student VALUES(NULL,"谢霆锋");INSERT INTO student VALUES(NULL,"张含韵");INSERT INTO student VALUES(NULL,"小虎乐队");INSERT INTO teacher VALUES(NULL,"李代萍");INSERT INTO teacher VALUES(NULL,"童林");INSERT INTO teacher VALUES(NULL,"张老师");/*分别查出来*/
SELECT * FROMstudent;SELECT * FROMteacher;/*建立关系*/
INSERT INTO stu_tea VALUES(1,1);INSERT INTO stu_tea VALUES(2,1);INSERT INTO stu_tea VALUES(3,1);INSERT INTO stu_tea VALUES(4,1);INSERT INTO stu_tea VALUES(5,1);INSERT INTO stu_tea VALUES(2,2);INSERT INTO stu_tea VALUES(3,2);INSERT INTO stu_tea VALUES(4,2);INSERT INTO stu_tea VALUES(3,3);INSERT INTO stu_tea VALUES(4,3);INSERT INTO stu_tea VALUES(5,3);/*查关系表*/
SELECT * FROM stu_tea;