mysql知识点 1:安装 mysql数据库 windows 版本mysql 2:配置文件 my.ini mysql安装目录下 [mysqld] default-character-set=utf8 mysql服务器默认编码 utf83:登录mysql数据库服务器 mysql -uroot -proot 登录本机mysql服务器 mysql -uroot -proot -h 192.168.10.1 -h mysql服务器地址4:查看当前mysql编码设置 status;Server characterset: utf8 服务器编码Db characterset: utf8 当前数据库编码Client characterset: utf8 客户编码Conn. characterset: utf8 客户连接编码 show variables like 'charac%';character_set_client | utf8 客户编码character_set_connection | utf8 连接编码character_set_database | utf8 当前数据库编码character_set_results | utf8 结果集character_set_server | utf8 服务器character_set_system | utf8 系统5:设置客户端编码 set names gbk;一个指修改下面三个编码 1:客户编码 2:连接编码 3:结果编码总结: 统一编码不容易出乱码; 1:创建数据库 utf8 2:创建表 utf8 3:查询更新 set names utf8;//一定6:显示现在所有数据为名称 show databases; 1:information_schema 内存中数据.... 2:mysql 安全相关数据7:显示当前数据库下所有表 use test; show tables;8:更改使用当前数据库 use 数据库名;9:查看表结构 desc 表名 show create table 表名10:建库 create database 数据库名; create database 数据库名 DEFAULT CHARACTER SET utf8;11:查看创建数据库指令 show create database t11;12:删除数据库 drop database t11;///???危害性比较大13:建表; create table 表名( 字段名 数据类型 约束, 字段名 数据类型 约束, 字段名 数据类型 约束, 字段名 数据类型 约束 ) ENGINE=InnoDB; 默认存储引擎14:数据类型 int,varchar,char,float, date,time,datetime,timestamp; enum,text; DECIMAL<高精度浮点> char [固定长度字符段串] varchar[可变长度字符段串] create table t(c1 char(5),c2 varchar(5))); insert into t values('ab','ab'); c1[5] c2 ab' ' 'ab' 磁盘空间: char浪费,varchar节省空间 查询效率: 高 稍慢 int 4个字节 21亿正负 int(5) 4个字节 21亿正负 date 年月日 time 时分钟 datetime 年月日时分秒 timstamp 时间戳[年月日时分秒] 15:约束 主键约束: primary key 唯一约束: unique 外键约束:foreign key(字段) references 表(字段) 非空约束:not null !!! 空约束: null 默认值: default 值 !!! 自增长: auto_increment 还有一个约束 mysql不支持约束 检查约束: check(字段=值);16:添加记录 insert into 表名 values(值,值...); insert into 表名(字段1,字段2)values(值,值); insert into 表名 values(值),(值),(值);17:修改记录 update 表名 set 字段=值,字段=值 where 条件; update 表名 set 字段=值,字段=值;18:删除记录 delete from 表名 where 条件 delete from 表名19:清空表记录 delete from 表名; 慢: 删记录空间保留 truncate table 表名;稍快:删除记录空间回收;20:基本查询 select * from 表名;//*所有字段 select 字段1,字段2 from 表名21:条件 select * from 表名 where 条件;22:排序 select * from 表名 order by 字段 asc;//升 select * from 表名 order by 字段 desc;//降 select * from 表名 order by 字段1 desc,字段2 asc;//降 select * from 表名 where 条件 order by 字段23:聚合查询(count(),max(),avg(),sum(),min()) select count(*) from 表名; select count(字段) from 表名; select sum(字段) from 表名; select avg(字段) from 表名; select max(字段) from 表名; select min(字段) from 表名;24:给字段别名 select 字段1 as 别名 from 表名 where 条件; select 聚合函数(字段) as 别名 from 表名 where 条件;25:分组 select 字段 from 表名 group by 字段 技巧: 1:出现在select 子句中字段 2:一定要出现在group by 字段 3:或者添加组函数 示例 select count(id),name,age from t_user group by name;26:having 条件分组函数 where27:分页 select * from 表名 limit 超始值,条数; 1-10 select * from 表名 limit 0,5; select * from 表名 limit 1;//只查询一条记录28:模糊查询 select * from 表名 where name like ''; _ 匹配一个 % 匹配零到多个字符29:内连接 select * from 表1 inner join 表2;30:左连接 select * from 表1 left join 表2; 所有匹配内容显示 select e.empno,d.name from emp e inner join dept d on e.deptno = d.id; select e.empno,d.name from emp e left join dept d on e.deptno = d.id; select e.empno,d.name from emp e right join dept d on e.deptno = d.id;31:右连接 select * from 表1 right join 表2;32:内连接另一种用法 select * from 表1,表2; where 条件; 编码,雇员名,主管名称; select e.ename,m.ename from emp e join emp m on e.mgr = m.empno;33:给表别名 select * from 表 别名;34:子查询(嵌套查询) select * from 表名 where 字段 = (子查询 select 字段 from 表名); select * from 表名 where 字段 in(子查询 字段 from 表名); select * from emp where sal in (select sal from emp where deptno = 10); select * from emp where sal in (2540,5000,1000); select * from 表名 where 字段 != (select 字段 from 表名); delete from 表名 where 字段 = (select 字段 from 表名); update 表名 字段=值 where 字段= (select 字段 from .....);//------------------------------------- 3:mysql 视图视图 view作用:简化查询语句创建视图create view 视图名as 查询语句;使用视图(把视图当表用)select * from 视图名select 字段,字段,字段 from 视图名称select * from 视图名 where 条件;修改视图 alter view 视图名as 查询语句;删除视图drop view 视图名;//------------------------------示例:创建视图:保存所有雇员信息,工资大于2000;create view v_empasSELECT * FROM emp WHERE sal > 2000;DROP view v_emp;视图注意1:视图中必须存放select 查询语句2:把视图当表使用3:不建议对视图执行insert,update,delete 操作;查看视图1:show tables;2:用information_schema库表 tables; use information_schema; select * from tables;//????数据太多; select table_schema,table_name,table_type from tables where table_schema='库名' and table_type='view'; 查询所有视图 use information_schema; select table_schema,table_name,table_type from tables where table_schema='test' and table_type='view'; 查询某个库所表视图 use information_schema; select table_schema,table_name,table_type from tables where table_schema='test';3:触发器trgger javascript 事件...作用:当对表进行 insert,update,delete 操作时[指定触发]触发类型:insert;update;delete触发器执行时间:before;after创建触发器delimiter // create trigger 触发器名 [before|after] [insert|update|delete] on 表名 for each row begin sql 语句; sql 语句; end // delimiter ;删除触发器drop trigger 触发器名;修改定界符delimiter ; delimiter //select * from emp ;示例:create table t1(id int);create table t2(name varchar(20));insert into t1 values(1),(2),(3);insert into t2 values('tom');给t2表添加update触发器,触发器工作--->将t1删除了;delimiter // create trigger tri_t2_update before update on t2 for each row begin delete from t1; end //delimiter ;示例:创建触发器 t2 delete作用:向t1 表添加一条记录delimiter // create trigger tri_t2_delete after delete on t2 for each row begin insert into t1 values(1000); end //delimiter ;查看触发器information_schema库-->triggersselect trigger_name,event_object_schema, event_object_tablefrom information_schema.triggerswhere event_object_schema='库';select trigger_name,event_object_schema, event_object_tablefrom information_schema.triggerswhere event_object_schema='news';show create trigger '触发器名';show create trigger tri_my \G;存储过程 procedure 自定义函数创建存储过程delimiter // create procedure 存储过程名称() begin sql ; sql ; end //delimiter ;调用存储过程call 存储过程名(值);删除存储过程drop procedure 存储过程名;查看存储过程mysql库->proc 表select db,name from mysql.proc;select db,name from mysql.proc where db = 'news';helloworlddelimiter // create procedure hello() begin select 'hello'; end //delimiter ;call hello();示例:查询表内容delimiter // create procedure hello1() begin select * from t_user; end //delimiter ;call hello1();PDO执行MySQL<?phpheader("content-type:text/html;charset=utf-8"); //1:创建连接 $dsn = "mysql:host=127.0.0.1;dbname=news"; $db = new PDO($dsn,'root','root'); //2:设置编码 $db->query("set names utf8"); //3:执行sql $count = $db->exec("INSERT INTO t_user values(null,'f',md5('f'))"); //4:关闭 $db = null; echo $count;?>
mysql的数据文件在datadir下,你在数据库中执行 show variables like '%datadir%';就会显示数据库文件的路径