看韩顺平老师的视频自己写的mysql 笔记
韩顺平.2011最新j2ee视频教程.jdbc 之 mysql

◆mysql 介绍(1)mysql数据库是瑞典AB 开发(2)mysql->sun->oracle(3)mysql数据库的特点1.开源2.免费3.跨平台(windows / linux /unix /苹果)4.处理并发性(13000个)/安全/稳定5.该数据库轻(对资源要求不高.) 安装文件37.7m ,而且对cpu / 内存要求不高.◆安装和配置1.一般说,一台机器装一个mysql.2.安装和配置过程见mysql安装图解◆mysql 使用1.可以使用window dos 登录到mysql数据库.基本语法在dos 下输入mysql –u 用户名-p密码特别说明: -p 后面的密码不要有空格/ 使用该命令的时候,需要配置一下环境变量.2.mysql数据库也提供图形化界面来登录mysql数据库演示:3.如何在mysql中创建数据库基本语法create database 数据库名•创建一个名称为mydb1的数据库。
create database mydb1; 【sql】•创建一个使用utf-8字符集的mydb2数据库。
create database mydb2 character set utf8•创建一个使用utf-8字符集,并带校对规则的mydb3数据库create database mydb3 character set utf8 collate utf8_general_ci;◆mysql的一些常用指令①如何查看,创建数据库的指令:show create databse 数据库名;②显示数据库指令show databases;③查看创建数据库的指令show create database 数据名;④删除数据库:drop database 数据库名⑤如何指定使用某个数据库use 数据库名;⑥如何备份和恢复数据库.mysqldump –u 用户名–p密码数据名> 存放路径该指令,需要在dos控制台下直接执行恢复数据库:1.创建一个数据库mydb2 ,但是这个数据库目前是空.e 数据名3.在mysql 控制台下使用source 备份文件路径◆创建表基本语法案例 :创建一张用户表create table users (id int ,name varchar(64),pwd varchar(64),birthday date)◆mysql数据类型(重点)①数值型:1. bit(m) m默认为1 最大64案例create table test1 (id bit(1)); ---//这里显示乱码?2. tinyint [unsigned] 如果是有符号则表示-128 到127 ,如果是无符号0-255案例create table test3(num tinyint) -- -128 到127create table test4(num tinyint unsigned)0 --- 2554.smallintsamllint 是两个字节表示的.带符号是负的2的15次方到2的15次方-1 ,无符号2的16方-1其它的数值类型,见下图即可6.floatFLOAT[(M,D)] [UNSIGNED] 是定长m :表示有效位d: 表示小数点有几位案例:create table test5( num float);create table test6(num float(5,1));7. double其用法和float 类似,只是表示的范围更大,也是定长8. numeric(m,d)用于表示小数,或者整数create table test7 (num numeric); //这样其实就是可以存放整数.create table test8 (num numeric(5,2));//这样就可以表示有效为5,小数点有两位的数②字串类型一览图:常用的有(1)char(m)m 范围是0-255, 定长.char(20) 如果你存放‘abc’字串,实际在表‘abc ’;案例:create table test11 (name char(20));☞小技巧:mysql 自带的client 默认支持utf8 码,所有我们在添加中文的时候,需要设置让client支持gbk* show variables like ‘char%’; //显示关于字符的设置参数* set character_set_client=gbk; //可以存中文* set character_set_results=gbk; //可以看中文(2)varchar(m)m 表示大小,范围0-65535,变长varchar(20) 如果你存放‘abc’字串,实际在表‘abc’;案例省略...建议: 如果表的某列长度固定,比如产品编号..学号. .. 而且在255内,我们应当使用char ,如果长度不能取得,或者长度大于255 小于65535 则使用varchar(3)text该类型,可以表示更大的字串.③日期类型(1)date日期(年-月-日)create table test12(birthday date);对于date 只保存年-月-日(2)datetime日期时间类型create table test13(hiredate datetime);(3)timestamp邮戳:该类型可以保存年-月-日: 时:分:秒它和datetime 最大的区别是,当你update 某条记录的时候,该列值,最自动更新create table test14 (name varchar(64) , sal float, hiredate1 timestamp, hiredate2 datetime);建议: 如果不知道该不该用timestamp ,就不要用.创建表综合案例create table emp(id int,name varchar(64),sex char(2),birthday date,Entry_date date,job varchar(32),salary float,resume text)修改表结构案例:•在上面员工表的基本上增加一个image列。
韩顺平 Mysql数据库优化(二) 数据库(表)设计

第 2 章Mysql数据库(表)设计我们的表要满足1NF 基础上,才可以谈满足2NF, 目前最高级6NF,对PHP网站说,我们只要满足3NF。
1.1数据库的分类
1.1.1关系型数据库
比如mysql,oracle, sql server ,postgresql,informix,DB2
1.1.2非关系型数据库
面向对象和集合数据库.
1.1.3介于关系型和非关系型数据库间
mongodb数据库面向文档
2.2 1NF
所谓1NF:属性(列)具有原子性,不可在分割, 还有就是把同一张表不可以有两个相同列.
2.3 2NF
所谓2NF: 说表的记录具有唯一性., 即不能出现完全相同的两条记录.一般说,通过设置主键即可.
☞注意;主键最好是非业务逻辑主键,使用自增长.
2.4 3NF
3NF要保证数据没有冗余.即如果数据可能通过显示或者隐式的推导出,就不要单独设计一列.
比如下图就是满足3NF:
但是说明;有时我们设计表的时候,可能会使用反3NF.,举例:
☞上面的相册表的设计就使用到了反3NF,但是他提高了效率
点击观看本章节视频讲
解: /programs/view/0Kj4sBsR3eI/
未完待续...。
韩顺平Linux视频教程—笔记(全)

韩顺平Linux视频教程—笔记(全)Linux操作系统学习linux的特点优点:1、免费的/开源的系统2、⽀持多线程/多⽤户的系统3、安全性好4、对内存和⽂件管理优越linux体积最少只需要内存4M,由于⼩所以可以做嵌⼊式开发缺点:操作相对困难Linus于1991年⾄1994年将unix的微型版minis加以开发出linux现在redhat红帽⼦、BSD、SUN等公司进⾏再发⾏在windows环境下可以使⽤(VM等)虚拟机来运⾏linux在linux运⾏startx命令可以进⼊图形操作界⾯root是linux下的系统管理员普通⽤户登陆后可以⽤su- 切换为系统管理员关机命令shutdown -h now ⽴刻进⾏关机shutdown -r now 现在重新启动计算机reboot 现在重新启动计算机logout 注销vi编辑器是linux下最有名的编辑器,也是学习linux必须掌握的⼯具,在unix下也可使⽤vi进⾏程序的开发linux可以做java/c开发在linux的vi编辑器内写⼀下简单的java程序“hello,world”1、Vi Hello.java2、输⼊i[进⼊到插⼊模式]public class hello{public static void main(String []args){System.out.println("hello,world");}}3、输⼊esc键[进⼊命令模式]4、输⼊wq保存退出/q!退出但不保存6、编译javac hello.javajavac Hello.java7、运⾏ java Hello [java运⾏的是class⽂件]ls命令显⽰当前⽂件ls -l命令显⽰详细⽂件列表如何在linux下开发c程序或是c++(cpp)程序建⽴vi hello.cpp#include <stdio.h>int main(){printf("hello!");return 0;}gcc hello.cpp ⽤gcc编译器编译出来未命名会是a.out⽂件gcc -o [⽂件名] [源⽂件名] ⽤gcc编译器编译⽂件命名/a.out 在linux下运⾏c程序只要输⼊/就可以运⾏------------------------------------------------------------linux下的⽂件⽬录linux的⽂件系统是采⽤级层式的树状⽬录结构,在此结构中的最上层是根⽬录“/”,然后在此⽬录下再创建其他的⽬录深刻理解linux⽂件⽬录是⾮常重要的。
韩顺平老师java视频课程笔记1-13课

JA V A学习记录第一讲//pulic:表示这个类是公共的,一个java文件中只能有一个public类//class :表示这是一个类//Hello:类名(公共类的类名必须和文件名一致)public class Hello{//一个主函数,相当于是程序的入口public static void main (String args[]){/* 多行注释*///System.out.println("hello");int a=10;// 定义一个变量,变量名位a,它的值为10// int为4个字节,long为8个字节int b=20;int result=a+b//输出结果system.out.println("结果是"+result)}}第二讲JA V A基本数据类型四大类型整数类型小数(浮点)类型基本数据类型布尔类型字符类型1.整数类型整数类型表示一个整数,常用的整数类型有:byte, short, int, long范围:byte 一个字节-128 – 127short 两个字节-32768 - 32767int 四个字节-2147483648 – 2147483647long 八个字节一个字节= 八个byte例:一个byte0 0 0 0 0 0 0 1 最高位为符号位0表示正数,1表示负数1 1 1 1 1 1 1 1 – 0 1 1 1 1 1 1 12.小数(浮点)类型常用类型有float, double3.布尔类型可以表示:真或者假,类型是boolean4.字符类型表示单个字符,字符类型是char,chai是两个字节,可以存放汉字。
多个字符称为字符串,在java中用String表示,String属于类。
.在java中,对char进行运算的时候,直接当做ascii码对应的整数对待。
(汉字则是unic码)定义变量int a初始化变量int a = 45给变量赋值int a ; a =45基本数据类型转换int a = 1.2 错误会损失精度double a = 4 正确数据类型可以自动从低精度向高精度转换。
韩顺平老师Linux 视频笔记

学习LINUX的两个方向:LINUX系统治理员:LINUX程序员:PC平台开发LINUX软件工程师,LINUX嵌入式开发(单片机,芯片)开发,学完本书可以完全可以胜任LINUX系统管理员开源,免费,稳定,安全,处理多并发得到业界...学习LINUX的两个方向:LINUX系统治理员:LINUX程序员:PC平台开发LINUX软件工程师,LINUX嵌入式开发(单片机,芯片)开发,学完本书可以完全可以胜任LINUX系统管理员开源,免费,稳定,安全,处理多并发得到业界认可LINUX学习流程(xue xi liu cheng):1、LINUX平台上的开发,包括VI,GCC,GDB,MAKE,JDK,TOMCAT,MYSQL,和LINUX基本操作2、加厚C语言功能或者JAVA语言3、学习UNIX环境高级编程4、LINUX应用开发或才嵌入式开发工具书(需要几本工具书,如新华字典)思索----实践-----再思考----再实践一周课程:基础部分: LINUX基础知识,80个常用命令,LINUX分区/VI/权限..实用部分:samba柏靼,LINUX网络环境配置,crontab使用,JDK,apache柏靼,LINUX下JAVA网络编程,SHELL初步介绍三本书:鸟哥的私房菜,LINUX从入门到精通,LINUX内核完全剖解LINUX实战第一天(共五天)1、LINUX的初步介绍2、L的第一次接触3、L的用户管理4、L的常用命令(80左右)5、L下所有者,所在组和其它组的介绍6、L下文件和目录权限机制吉祥物:小企鹅(想起小时侯被企鹅咬了一口),芬生学生创建,微软反LINUX 广告(四个变形动物),L的特点:1、FREE ,免费/开源,代码公开2、支持多线程,(_zhi1 chi2 duo1 xian4 cheng2 _)能不能允许多个用户并发/多用户3、安全性好,4、对内存和文件管理优越缺点:操作相对困难,无界面操作 (轻易的东西不值难)NEC 在手机使用LINUX,03年,日本的一家公司,嵌入式开发LINUX最小只需要4M (参看鸟哥)----- 导致嵌入式开发可以很多东西看一看,但要学精一门。
韩顺平java从入门到精通视频教程(全94讲)学习笔记整理(齐全)

java平台1、J2SE java开发平台标准版2、J2EE java开发平台企业版java程序需要在虚拟机上才可以运行,换言之只要有虚拟机的系统都可以运行java程序。
不同系统上要安装对应的虚拟机才可以运行java程序开发步骤1、编写源文件 (.java)2、编译源文件为类文件(.class)可用J2SE或J2EE编译3、在虚拟机上运行注释//单行注释/* */多行注释java内容介绍java编程可以分成三个方向:1、java se (j2se)桌面开发 java中的基础中的基础2、java ee (j2ee)web开发3、java me (j2me)手机开发java se课程介绍java面向对象编程(基础)java图开界面开发java数据库编程java文件io流编程java网络编程java多线程编程java ee基础1java面向对象编程--数据库编程-->java sejava 基础2html--css--javascript-->div+cssjava ee中级部分Servlet--Jsp-->mvc模式java ee高级部分Struts--Ejb--Hibernate--Spring--Ajax(ext,dw2)-->ssh框架java之父gosling1990 sun启动绿色计划1 | 4451992 创建oak语言-->java1994 gosling参加硅谷大会演示java功能,震惊世界1995 sun正式发布java第一个版本,目前最新是jdk7.0java开发工具记事本、(jcreator、jbuilder退出舞台了)、netbean、eclipse如何选择开发工具先选择记事本,对java有一定了解后再使用eclipse高级开发工具为什么呢?1、更深刻的理解java技术,培养代码感2、有利于公司面试java语言的特点1、java语言是简单的2、java语言是面向对象的3、java语言是跨平台(操作系统)的[即一次编译,到处运行]4、java是高性能的java第一个程序hello.java运行java程序要安装和配置jdkjdk是什么?1、jdk全称java dvevlopment kit中文java开发工具包2、jdk是sun公司开发的3、jdk包括jre(java runtime envirnment)java运行环境、一堆java工具和java基础的类库(类共3600左右,常用类在150个左右)4、可以在下载**开发安装jdk,用户执行需要安装jre配置JDK添加环境变量即可windows下配置jdk在计算机属性--高级设置--环境变量--添加PATH将JDK所在路径指定即可。
韩顺平linux教学视频学习笔记(五)

第五天一、上节回顾1、登录mysqlCd /home/LsCd mysqlLsBin/mysqld_safe --user=mysql &Mysql -u root -p……2、备份数据库QuitLsCd bin/ 【注:备份数据库一定要退出数据库,在bin目录下进行】Ls./mysqldump -u root -p spdb1 > /home/spdb1.bak3、查看备份文件Cd /home/LsCat spdb1.bak注:4、删除数据库LsMysql -u root -pShow databases;Drop database spdb1;5、恢复数据库QuitCd mysqlCd bin/LsMysql -u root -p spdb1 < /home/spdb1.bakMysql -u root -pCreate database spdb1;QuitMysql -u root -p spdb1 < /home/spdb1.bak Mysql -u root -pShow database;Use spdb1;Show tables;'Select * from users;二、ssh1、安装ssh直接安装在windows下就可以。
2、配置ssh在windows cmd 窗口检查网络是否互通Ping IP地址Ifconfig eth0 IP地址(与windowsIP地址在相同字段)3、使用ssh1)进入quick connect注:监听端口是222)输入linux用户登录密码3)此时就可在windows下进行linux操作了。
4)查看linux中有几个用户在运作:top5)查看用户IP地址netstat -an | more服务器端口号是22,每个用户又自动分配一个不同的端口号6)踢掉用户netstat -anp | more【加p可以查到进程号】Kill -9 1924【进程号】7)文件上传和下载Windows(左)到linux(右)叫upload ,反之叫download。
韩顺平mysql优化笔记

◆Mysql数据库的优化技术对mysql优化时一个综合性的技术,主要包括a: 表的设计合理化(符合3NF)b: 添加适当索引(index) [四种: 普通索引、主键索引、唯一索引unique、全文索引]c: 分表技术(水平分割、垂直分割)d: 读写[写: update/delete/add]分离e: 存储过程[模块化编程,可以提高速度]f: 对mysql配置优化[配置最大并发数my.ini, 调整缓存大小,默认为100,max_connection=1000 ]g: mysql服务器硬件升级h: 定时的去清除不需要的数据,定时进行碎片整理(MyISAM)◆什么样的表才是符合3NF (范式)表的范式,是首先符合1NF, 才能满足2NF , 进一步满足3NF1NF: 即表的列的具有原子性,不可再分解,即列的信息,不能分解, 只有数据库是关系型数据库(mysql/oracle/db2/informix/sysbase/sql server),就自动的满足1NF☞数据库的分类关系型数据库: mysql/oracle/db2/informix/sysbase/sql server非关系型数据库: (特点: 面向对象或者集合)NoSql数据库: MongoDB(特点是面向文档)2NF: 表中的记录是唯一的, 就满足2NF, 通常我们设计一个主键来实现3NF: 即表中不要有冗余数据, 就是说,表的信息,如果能够被推导出来,就不应该单独的设计一个字段来存放. 比如下面的设计就是不满足3NF:反3NF : 但是,没有冗余的数据库未必是最好的数据库,有时为了提高运行效率,就必须降低范式标准,适当保留冗余数据。
具体做法是:在概念数据模型设计时遵守第三范式,降低范式标准的工作放到物理数据模型设计时考虑。
降低范式就是增加字段,允许冗余。
案例:Sql语句本身的优化问题是:如何从一个大项目中,迅速的定位执行速度慢的语句. (定位慢查询)①首先我们了解mysql数据库的一些运行状态如何查询(比如想知道当前mysql运行的时间/一共执行了多少次select/update/delete.. / 当前连接)show status常用的:show status like …uptime‟ ; (mysql数据库启动了多长时间)show stauts like …com_select‟show stauts like …com_insert‟ ...类推update delete(显示数据库的查询,更新,添加,删除的次数)☞show [session|global] status like .... 如果你不写[session|global] 默认是session 会话,指取出当前窗口的执行,如果你想看所有(从mysql 启动到现在,则应该global)//显示到mysql数据库的连接数show status like …connections‟;//显示慢查询次数show status like …slow_queries‟;②如何去定位慢查询构建一个大表(400 万)-> 存储过程构建默认情况下,mysql认为10秒才是一个慢查询.修改mysql的慢查询.show variables like …long_query_time‟ ; //可以显示当前慢查询时间(默认当前的session的慢查询时间)mysql> show global variables like 'long_query_time';+-----------------+-----------+| Variable_name | Value |+-----------------+-----------+| long_query_time | 10.000000 |(但是重启mysql之后,long_query_time依然是my.ini中的值)set long_query_time=1 ;//可以修改慢查询时间构建大表->大表中记录有要求, 记录是不同才有用,否则测试效果和真实的相差大.创建:CREATE TABLE dept( /*部门表*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/dname V ARCHAR(20) NOT NULL DEFAULT "", /*名称*/loc V ARCHAR(13) NOT NULL DEFAULT "" /*地点*/) ENGINE=MyISAM DEFAULT CHARSET=utf8 ;CREATE TABLE emp(empno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0, /*编号*/ename VARCHAR(20) NOT NULL DEFAULT "", /*名字*/job V ARCHAR(9) NOT NULL DEFAULT "",/*工作*/mgr MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,/*上级编号*/hiredate DATE NOT NULL,/*入职时间*/sal DECIMAL(7,2) NOT NULL,/*薪水*/comm DECIMAL(7,2) NOT NULL,/*红利*/deptno MEDIUMINT UNSIGNED NOT NULL DEFAULT 0 /*部门编号*/)ENGINE=MyISAM DEFAULT CHARSET=utf8 ;CREATE TABLE salgrade(grade MEDIUMINT UNSIGNED NOT NULL DEFAULT 0,losal DECIMAL(17,2) NOT NULL,hisal DECIMAL(17,2) NOT NULL)ENGINE=MyISAM DEFAULT CHARSET=utf8;测试数据INSERT INTO salgrade V ALUES (1,700,1200);INSERT INTO salgrade V ALUES (2,1201,1400);INSERT INTO salgrade V ALUES (3,1401,2000);INSERT INTO salgrade V ALUES (4,2001,3000);INSERT INTO salgrade V ALUES (5,3001,9999);为了存储过程能够正常执行,我们需要把命令执行结束符修改delimiter $$set global log_bin_trust_function_creators=TRUE;#This function has none of DETERMINI STIC, NO SQL, or READS SQL DATA i n its de 错误解决办法create function rand_string(n INT)returns varchar(255) #该函数会返回一个字符串begin#chars_str定义一个变量chars_str,类型是varchar(100),默认值'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';declare chars_str varchar(100) default'abcdefghijklmnopqrstuvwxyzABCDEFJHIJKLMNOPQRSTUVWXYZ';declare return_str varchar(255) default '';declare i int default 0;while i < n doset return_str =concat(return_str,substring(chars_str,floor(1+rand()*52),1));set i = i + 1;end while;return return_str;end $$如果希望在程序中使用,是Ok!创建一个存储过程create procedure insert_emp(in start int(10),in max_num int(10))begindeclare i int default 0;#set autocommit =0 把autocommit设置成0set autocommit = 0;repeatset i = i + 1;insert into emp values ((start+i) ,rand_string(6),'SALESMAN',0001,curdate(),2000,400,rand_num());until i = max_numend repeat;commit;end $$#调用刚刚写好的函数, 1800000条记录,从100001号开始call insert_emp(100001,4000000);③这时我们如果出现一条语句执行时间超过1秒中,就会统计到.④如果把慢查询的sql记录到我们的一个日志中在默认情况下,我们的mysql不会记录慢查询,需要在启动mysql时候,指定记录慢查询才可以bin\mysqld.exe - -safe-mode - -slow-query-log [mysql5.5 可以在my.ini指定](安全模式启动,数据库将操作写入日志,以备恢复)bin\mysqld.exe –log-slow-queries=d:/abc.log [低版本mysql5.0可以在my.ini指定]先关闭mysql,再启动, 如果启用了慢查询日志,默认把这个文件放在my.ini 文件中记录的位置#Path to the database rootdatadir="C:/Documents and Settings/All Users/Application Data/MySQL/MySQL Server 5.5/Data/"⑤测试,可以看到在日志中就记录下我们的mysql慢sql语句.优化问题.通过explain 语句可以分析,mysql如何执行你的sql语句, 这个工具的使用放一下,一会说.添加索引【小建议: 】四种索引(主键索引/唯一索引/全文索引/普通索引)1.添加1.1主键索引添加当一张表,把某个列设为主键的时候,则该列就是主键索引create table aaa(id int unsigned primary key auto_increment ,name varchar(32) not null defaul …‟);这是id 列就是主键索引.如果你创建表时,没有指定主键索引,也可以在创建表后,在添加, 指令:alter table 表名add primary key (列名);举例:create table bbb (id int , name varchar(32) not null default …‟);alter table bbb add primary key (id);1.2普通索引一般来说,普通索引的创建,是先创建表,然后在创建普通索引比如:create table ccc(id int unsigned,name varchar(32))create index 索引名on 表(列1,列名2);1.3创建全文索引全文索引,主要是针对文件,文本的检索, 比如文章, 全文索引针对MyISAM有用.创建:CREATE TABLE articles (id INT UNSIGNED AUTO_INCREMENT NOT NULL PRIMARY KEY,title VARCHAR(200),body TEXT,FULLTEXT (title,body))engine=myisam charset utf8;INSERT INTO articles (title,body) V ALUES('MySQL Tutorial','DBMS stands for DataBase ...'),('How To Use MySQL Well','After you went through a ...'),('Optimizing MySQL','In this tutorial we will show ...'),('1001 MySQL Tricks','1. Never run mysqld as root. 2. ...'),('MySQL vs. YourSQL','In the following database comparison ...'),('MySQL Security','When configured properly, MySQL ...');如何使用全文索引:错误用法:select * from articles where body like …%mysql%‟; 【不会使用到全文索引】mysql> explain select * from articles where body like 'mysql%'\G*************************** 1. row ***************************id: 1select_type: SIMPLEtable: articlestype: ALLpossible_keys: NULLkey: NULLkey_len: NULLref: NULLrows: 6Extra: Using where1 row in set (0.00 sec)证明:explain select * from articles where body like …%mysql%‟正确的用法是:select * from articles where match(title,body) against(…database‟); 【可以】mysql> explain select * from articles where match(title,body) against ( 'mysql')\G*************************** 1. row ***************************id: 1select_type: SIMPLEtable: articlestype: fulltextpossible_keys: titlekey: titlekey_len: 0ref: NULLrows: 1Extra: Using where1 row in set (0.00 sec)☞说明:1.在mysql中fulltext 索引只针对myisam生效2.mysql自己提供的fulltext针对英文生效->sphinx (coreseek) 技术处理中文3.使用方法是match(字段名..) against(…关键字‟)4.全文索引:停止词, 因为在一个文本中,创建索引是一个无穷大的数,因此,对一些常用词和字符,就不会创建,这些词,称为停止词.比如(a,b,mysql,the)mysql> select match(title,body) against ('database') from articles;(输出的是每行和database 的匹配度)+----------------------------------------+| match(title,body) against ('database') |+----------------------------------------+| 0.6554583311080933 || 0 || 0 || 0 || 0.6626645922660828 || 0 |+----------------------------------------+6 rows in set (0.01 sec)1.4唯一索引①当表的某列被指定为unique约束时,这列就是一个唯一索引create table ddd(id int primary key auto_increment , name varchar(32) unique);这时, name 列就是一个唯一索引.unique字段可以为NULL,并可以有多NULL, 但是如果是具体内容,则不能重复,但是不能存有重复的空字符串‟‟.主键字段,不能为NULL,也不能重复.②在创建表后,再去创建唯一索引create table eee(id int primary key auto_increment, name varchar(32));create unique index 索引名on 表名(列表..);2.查询索引desc 表名【该方法的缺点是:不能够显示索引名.】show index(es) from 表名show keys from 表名3.删除alter table 表名drop index 索引名;如果删除主键索引。
传智播客 韩顺平 mysql优化技术

—高级软件人才实作培训专家! 索引的类型
主讲:韩顺平
主键索引,主键自动的为主索引 (类型Primary) 唯一索引 (UNIQUE) 普通索引 (INDEX) 全文索引 (FULLTEXT) [适用于MyISAM] sphinx + 中文分词 coreseek [sphinx 的中文版 ] 综合使用=>复合索引
—高级软件人才实作培训专家! 建立适当的索引
主讲:韩顺平
说起提高数据库性能,索引是最物美价廉的东西了。不用加内存, 不用改程序,不用调sql,只要执行个正确的’create index‘,查 询速度就可能提高百倍千倍,这可真有诱惑力。可是天下没有免 费的午餐,查询速度的提高是以插入、更新、删除的速度为代价 的,这些写操作,增加了大量的I/O。
—高级软件人才实作培训专家! 索引的使用
主讲:韩顺平
查询要使用索引最重要的条件是查询条件中需要使用索引。 下列几种情况下有可能使用到索引: 1,对于创建的多列索引,只要查询条件使用了最左边的列,索 引一般就会被使用。 2,对于使用like的查询,查询如果是 ‗%aaa‘ 不会使用到索引 ‗aaa%‘ 会使用到索引。 下列的表将不使用索引: 1,如果条件中有or,即使其中有条件带索引也不会使用。 2,对于多列索引,不是使用的第一部分,则不会使用索引。 3,like查询是以%开头 4,如果列类型是字符串,那一定要在条件中将数据使用引号引 用起来。否则不使用索引。(添加时,字符串必须‘‘) 5,如果mysql估计使用全表扫描要比使用索引快,则不使用索引。
—高级软件人才实作培训专家! 选择合适的存储引擎
主讲:韩顺平
MyISAM:默认的MySQL存储引擎。如果应用是以读操作和插入操 作为主,只有很少的更新和删除操作,并且对事务的完整性要求不 是很高。其优势是访问的速度快。 InnoDB:提供了具有提交、回滚和崩溃恢复能力的事务安全。但 是对比MyISAM,写的处理效率差一些并且会占用更多的磁盘空间。 Memory
韩顺平教程视频玩转Oracle 10G的笔记

韩顺平玩转Oracle10g 1.Oracle认证和安装,与其他数据库比较Oracle安装会自动的生成sys用户和system用户:(1)sys用户是超级用户,具有最高权限,具有sysdba角色,有create database的权限,该用户默认的密码是change_on_install(2)system用户是管理操作员,权限也很大。
具有sysoper角色,没有create database 的权限,默认的密码是manager(3)一般讲,对数据库维护,使用system用户登录就可以拉也就是说sys和system这两个用户最大的区别是在于有没有create database的权限。
2.Oracle的基本使用--基本命令sql*plus的常用命令连接命令[ect]用法:conn 用户名/密码@网络服务名[as sysdba/sysoper]当用特权用户身份连接时,必须带上as sysdba或是as sysoper[onnect]说明: 该命令用来断开与当前数据库的连接[ord]说明: 该命令用于修改用户的密码,如果要想修改其它用户的密码,需要用sys/system登录。
user说明: 显示当前用户名说明: 该命令会断开与数据库的连接,同时会退出sql*plus文件操作命令和@说明: 运行sql脚本案例: sql>@ d:\或是sql>start d:\说明: 该命令可以编辑指定的sql脚本案例: sql>edit d:\,这样会把d:\这个文件打开说明: 该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
案例: sql>spool d:\ 并输入 sql>spool off交互式命令1.&说明:可以替代变量,而该变量在执行时,需要用户输入。
select * from emp where job='&job';说明:该命令可以编辑指定的sql脚本案例:SQL>edit d:\说明:该命令可以将sql*plus屏幕上的内容输出到指定文件中去。
传智 韩顺平 linux 课程笔记1(吐血整理)

Linux视频教程(韩顺平)听课笔记1(RedHat)1、老师联系方式:hanshunping@2、linux for工作(1)linux系统管理员——linux系统的维护、配置等(2)linux程序员——需c/c++、java,php、jsp等①linux软件工程师(pc)②linux嵌入式开发(单片机、芯片)3、学习linux的步骤(1)第一阶段:linux平台上的开发,包括vi,gcc,gdb,make,jdk,tomcat,mysql...和linux基本操作(2)第二阶段:加厚c语言功底《c专家编程》或是java语言(3)第三阶段:学习unix环境高级编程《unix环境高级编程》(4)第四阶段:linux应用系统开发/linux嵌入式开发4、计算机学习的正确道路5、推荐书籍-《鸟哥的Linux的私房菜基础学习篇》鸟哥、许伟、林彩娥等编著-《Linux编程从入门到精通》宫虎波编著-《Linux内核完全剖析》赵炯编著6、关机命令shutdown -h now立即进行关机shutdown -r now现在重新启动计算机-t sec : -t后面加秒数,即”过几秒后关机”-k: 不是要真的关机,只是发送警告信息-r: 在将系统的服务停掉之后就重新启动-h: 将系统服务停掉后,立即关机-n: 不经过init程序,直接以shutdown关机-f: 关机并启动之后,强制略过fsck的磁盘检查-F: 系统重新启动之后,强制进行fsck的磁盘检查-c: 取消已经在进行的shutdown命令内容reboot 现在重新启动计算机7、用户登录登录时尽量少用root账户登录,因为它是系统管理员,最大的权限,难免操作失误。
可以利用普通用户登录,登录后再用“su -”命令来切换成系统管理员身份。
8、进入桌面(命令行界面进入图形界面)startx9、用户注销在提示符下输入logout即可。
10、vi进行开发java和c/c++程序-java程序-vi Hello.java-输入i,进入到插入模式,写好代码-输入Esc键,进入命令模式-输入冒号:[wq 表示退出保存,q!表示退出不保存]-编译javac Hello.java-运行java Hello-c程序-gcc o自定义文件名Hello.cpp[参数o表示可自定义生成的out文件名,否则默认为a. out]-./Hello[./是linux中的执行/运行命令]11、linux文件目录-/,根目录-root,存放root用户的相关文件-home,存放普通用户的相关文件-bin,存放常用命令的目录,如vi,su-sbin,要具有一定权限才可以使用命令-mnt,默认挂载光驱和软驱的目录-etc,存放配置的相关文件-var,存放经常变化的文件,如网络连接的sock文件-boot,存放引导系统启动的相关文件-usr,安装一个软件的默认目录,相当于windows下的program files注:pwd,显示当前工作目录pwd -p,显示出实际路径,而非使用link路径12、linux的用户管理-useradd用户名:添加用户-passwd用户名:为新用户设密码-userdel用户名:删除用户但保存其主目录userdel -r用户名,删除用户及其主目录注:logout,当前用户退出who am i,显示当前用户13、指定系统运行级别init [0123456],指定系统运行级别,类似windows的正常运行模式或安全模式。
学习韩顺平Linux系统笔记(经典)

韩顺平LINUX系统笔记第0天开山篇1、linux是一个开源免费的操作系统。
2、学习linux的流程:(1)linux平台上的开发和linux基本操作(2)加强C语言功底:《C专家编程》或者Java语言(3)学习unix环境高级编程(4)Linux应用系统开发/linux嵌入式开发3、书籍推荐:鸟哥的linux私房菜、linux入门到精通、linux内核完全剖析4、学习方法推荐:(1)高效而愉快的学习(2)先建立一个整体框架,然后细节学习(3)用到什么再学什么(4)计算机是做了、练了才会(5)适当的跳过(6)学习linux系统是在琢磨别人怎么做,而不是我认为怎么做第一天1、linux的特点:(1)linux系统时免费开源的(2)linux支持多线程,多用户(3)安全性优良(4)内存和文件管理性能优越2、Linux用户:root(相当于windows的administrator),建议使用普通用户登录,通过su–root切换为身份为管理员3、startx:启动图形用户界面,ctrl+alt+break:切换到控制台环境下4、shutdown now:立即关机shutdown–r now和reboot:立即重启计算机5、注销:logout6、熟悉vi编辑器:vi相当于windows的记事本7、在linux下进行简单的java开发:(1)vi hello.java//创建一个hello.java的文件(2)按"i"进入insert状态,进行文档编辑//编辑一个java文档(3)按"Esc"键退出编辑状态,转换为命令行模式(4)按shift输入冒号,在输入"wq"保存退出,若不保存退出则输入:q!(5)编译java文件:javac hello.java(6)运行java文件:java hello8、ls:列举当前文件夹,参数-l:显示当前目录的详细信息9、ccp程序的编译:编辑过程同上面的java程序,下面只记录编译和运行方式:(1)编译:gcc hello.cpp(2)运行:./a.out//默认编译出的文件为a.out(3)编译时更名:gcc–o hello.out hello.c,编译后的名字变为:hello.out10、set nu:在文件中每行行首加入行号set nonu:取消行号输入数字:直接输入数字,按"Esc"键,将光标移至该行行首/字符串:查找特定字,按"n"继续查找?字符串:查找特定字,按"n"继续查找11、linux的文件系统是采用层级式的树状目录结构,在此结构中的最上层是根目录"/",然后在此目录下再创建其他的目录,详细结构图解:12、linux显示当前路径:pwd13、用户管理:(1)添加用户:只有root用户或者拥有root权限的用户才能创建useradd用户名passwd用户名(2)删除用户:只有root用户或者拥有root权限的用户才能删掉userdel用户名(保留用户相关的文件)userdel–r用户名(删除用户及其相关的文件)14、Linux运行级别:init[0,1,2,3,4,5,6]注释:(1)0:关机(2)1:单用户(3)2:没有网络服务的多用户状态(4)3:有网络服务的多用户状态(5)4:系统未使用保留给用户(6)5:图形界面(7)6:系统重启常用级别为3和5,修改运行级别:vi/etc/inittab,修改id:5:inittabdefault中的数字,即可修改运行等级。
韩顺平 oracle视频教程上课笔记

一、oracle 常用sql plus 命令(1)conn[ect] 用户名/密码@网络[as sysdba /sysoper](2)一般情况下使用普通用户登录,除非需要更高权限时,在切换高级用户;(3)disc[onnect] 断开连接,又不退出当前窗口;(4)quit/exit 完全退出;(5)show user 显示当前用户;(6)管理员修改用户密码:alter user xxxx identified by yyyy;(7)Passw[ord]pass 用户名;给自己修改密码,不需要带用户名;给别的用户修改,需要带用户名;创建临时表空间create temporary tablespaceuser_temptempfile 'd:\user_temp.dbf'size 50mautoextend onnext 50m maxsize 1024mextent management local;创建表空间createtablespaceuser_tsdatafile 'd:\user_ts.dbf'size 50mautoextend onnext 50m maxsize 1024mextent management local;创建用户create user test38 identified by test38default tablespaceuser_tstemporary tablespaceuser_tempquota 5m on user_ts;给用户赋予权力grantdba to test38;给scott用户解锁alter user scott account unlock;用system 用户给scott修改密码Alter user scott identified by tiger;不常用的命令:linesize一行能显示多少个字符就换行了默认就只有80字符,所以会出现一个记录一行没有显示完全就换行了。
韩顺平linux教学视频学习笔记(四)

Ls
7)数据库的恢复
Mysql -u root -p
Show database;
Use spdb1;
Show tables;
Drop table users;【表删除了】
Mysql -u root -p密码spdb1 < /home/myspdb1
Mysql -u root -p
Showdatabases;
Swap使用:把磁盘部分空间虚拟成内存使用
5、设置系统时间
6、查看月历
Cal4 2009
把年历写入test文档中Cal 2012 > test
7、显示网络统计信息(netstat)
Netstat -an | more按一定顺序(端口号)排序
Netstat -anp | more同时显示进程号
8、追踪路由traceroute
5)如何进入mysql。
Cd bin/(进入bin目录,使用mysql)
ls
./mysql -u root -p(注:“./”代表当前目录文件)
输入密码(原始为空)后便可使用数据库了。
6)使用并退出mysql。
注:要修改mysql登陆路径的话,可以修改root下路径配置
1 首先查看env |more,此时路径是在bin下
Tar -zxvf文件名.tar.gz
(改文件名或文件夹名)
3)相关改动
启动mysql:bin/mysqld_safe --user=mysql &
解释:一个“.”表示当前目录,两个表示“.”上一级目录
“-R”该文件文件夹下的文件所有者都改变
【注:删除自带mysql】
4)启动后,可查看mysql监听端口号为3306
韩顺平linux教学视频学习笔记(第一天)

第一天一、开山1、Linux操作系统是开源而且免费的用于开发的操作系统。
稳定性、安全性、处理多并发2、软件公司迫切需要熟练掌握linux的程序员。
工作方向:➢Linux系统管理员➢Linux软件程序员:工程师(PC)和linux嵌入式开发(单片机,芯片)3、学习流程第一阶段:vi,gcc,gdb,make,jdk,tomcat,myaql等linux基本操作第二阶段:加厚C语言功底第三阶段:学习unix环境高级编程《unix环境高级编程》第四阶段:linux应用系统开发/嵌入式开发4、推荐书籍:Linux操作命令的查询5、内容介绍➢基础部分:基础知识,常用命令,linux分区➢实用部分:Samba安装与配置,linux网络环境配置,crontab使用,Shell 初步介绍书籍:《鸟哥的Linux私房菜》、《Linux编程从入门到精通》、《linux内核完全剖析》二、基础介绍Linux初步介绍1、吉祥物:创始人来自芬兰2、linux特点免费的/开源支持多线程./多用户的安全性好对内存和文件管理优越缺点:操作相对简单Linux最小只需要4M内存——>嵌入式开发3、支持linux的公司:IBM、Oracle、Sun、NEC4、linux历史:火星计划:Ken tompson(C语言设计者)+Denis完成Unix:开源、源码内核共享Unix:aix(IBM),solaris(SUN),hp unix(HP),bsd(伯克利分校)Minix——》linux(Linus 芬兰读书)5、第一次接触虚拟机vmStartx 进入图形界面Shutdown -h now 立即关机命令Shutdown -r now 现在重启计算机=rebootReboot 现在重启计算机尽量少使用管理员用户root账号登陆,先利用普通用户登陆,登陆后再用su -命令切换成管理员身份Logout 注销6、Vi编辑器的使用开发java文件步骤:1、vi hello.java2、i 【进入插入模式】3、输入esc键【进入命令模式】4、输入一个“:”+" wq/q!"【wq表示退出保持q!退出不保存】5、Ls【显示文件保存情况】Ls -l【显示保存更明确】6、编译Javac hello.java7、运行java hello开发C程序步骤:1、编译gcc hello.c 或者gcc -o my1 hello.c2、运行./a.out 或者./my1三、Linux文件目录目录:root , home, bin, sbin, mnt, etc, varroot:存放root用户的相关文件home:存放普通用户的相关文件bin:存放常用命令----------cd:切换sbin:存放要具有一定权限才可以使用的命令mnt:默认挂载光驱和软驱的目录boot:存放引导相关的文件(误删!)etc:存放配置相关的文件var:存放经常变化的文件usr :软件默认安装文件夹显示当前在哪个路径下:pwd显示内容:Dir 、ls添加用户:useradd xiaoming(只有root用户能添加新用户)给新用户设密码:Passwd xiaoming删除用户:userdel xiaoming删除用户及用户主目录:userdel -r xiaoming四、常用命令(1)1、命令init【0123456】运行级别0:关机1:单用户2:多用户状态没有网络服务3:多用户状态有网络服务4:系统未使用,保留给用户5: 图形界面6:系统重启2、运行级别设置:/etc/inittab的id:5initdefaultvi /etc/inittab 修改id(配置也只能在root用户下修改)3、修改错误配置的方法:进入grub引导界面时,请输入e在选中第二行,输入e最后一行输入1【单用户界面】按b进入单用户模式,从而改过配置此方法可以找回密码五、常用命令(2)1、Ls -al 既显示隐藏文件有显示长列表格式2、Mkdir-----------makeRmdir ---------remove3、Tab键能够补全名称4、More 可以分页显示,按空格键翻页5、管道命令| :把上一个命令的结果交给| 的后面的命令处理ls -l /etc/ | more 分页显示etc中的内容6、grep“要查找的内容”文件名例:grep "shunping" aaa.java (查找aaa.java中是否有shunping字符串)grep -n"shunping" aaa.java (显示在哪一行查找到)7、Men ***;帮助命令Find 查找文件Find / -name aaa.javaFind /root -name aaa.javagrep -n"shunping" aaa.java > kkk.bak把前面的结果写入后面的文件中。
传智播客_韩顺平_Mysql数据库

—高级软件人才实作培训专家
修改、备份、恢复数据库
ALTER DATABASE [IF EXISTS] db_name [alter_specification [, alter_specification] ...] alter_specification: [DEFAULT] CHARACTER SET charset_name | [DEFAULT] COLLATE collation_name | {ENGINE|TYPE} = engine_name //表存储引擎再事务是再讲解
备份数据库表中的数据 mysqldump -u 用户名 -p 数据库名 > 文件名.sql 恢复数据库 Source 文件名.sql 练习 1 查看服务器中的数据库,并把其中某一个库的字符集修改为utf8; 2 备份test库中的数据,并恢复
主讲 韩顺平
—高级软件人才实作培训专家
体验Mysql-安装ecshop
* 对当前主流数据库做一个比较介绍
MySQL数据库的安装和配置 使用命令行窗口连接MYSQL数据库 mysql –h 主机名 –u用户名 –p密码
启动mysql数据库的常用方式: 1. 服务方式启动(界面) 2. net stop mysql服务名 net start mysql服务名
—高级软件人才实作培训专家
注意:创建表时,要根据需保存的数据创建相应的列,并根据数据的类型 定义相应的列类型。例:user表 id 整形 name 字符串 password 字符串 birthday 日期
—高级软件人才实作培训专家
mysql 常用的数据类型
分类 数据类型 BIT(M) TINYINT [UNSIGNED] BOOL,BOOLEAN SMALLINT [UNSIGNED] INT [UNSIGNED] BIGINT [UNSIGNED] FLOAT[(M,D)] [UNSIGNED] DOUBLE[(M,D)] [UNSIGNED] CHAR(size) char(20) VARCHAR(size) varchar(20) BLOB LONGBLOB TEXT LONGTEXT DATE/DATETIME/TimeStamp 说明 位类型。M指定位数,默认值1,范围1-64 带符号的范围是-128到127。无符号0到255。默认是有符号 使用0或1表示真或假 带符号是 负的 2的15次方 到 2的15次方-1 ,无符号 2的16方 -1 带符号是 负的 2的31次方 到 2的31次方-1 ,无符号 2的32方 -1 带符号是 负的 2的63次方 到 2的63次方-1 ,无符号 2的64方 -1 M指定显示长度,d指定小数位数 表示比float精度更大的小数 固定长度字符串 最大255 可变长度字符串 最大65532 【在mysql5.0中最大21844】 二进制数据 大文本,不支持全文索引,不支持默认值,建议使用varchar 日期类型(YYYY-MM-DD) (YYYY-MM-DD HH:MM:SS),TimeStamp 表示时间戳,它可用于自动记录insert、update操作的时间
看韩顺平老师的视频自己写的mysql 笔记

韩顺平mysqlMysql扩展库连接mysql数据库1 打开mysql2 show databases;显示数据库表 3.选表:use test;4,显示表的所有内容:select * from user2;5 删除指定表中的id:delete from user2 where id=4;今天出错的:单词:connect select 2,数字不用加引号‘’3注意,如果加双引号就成字符串了4,数据库和表需分清Mysql扩展库连接mysql数据库<?php//mysql扩展库操作mysql数据库步骤如下//获取连接php和数据库的连接$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("连接失败".mysql_error());}//选择数据库mysql_select_db("test");//设置操作编码建议有mysql_query("set names utf8");//保证我们的程序是按照utf8码操作的//发送指令sql语句)(ddl语句数据定义语言dml语句数据操作语言dtl数据事物语句)$sql="select * from user2";//发送函数借助mysql_query函数$conn可有可无,如果有标明//我是用这个连接箱数据库发送这个$sql指令//$res表示结果集你可以简单的理解是一张表$res=mysql_query($sql,$conn);/接受结果并处理//mysql_fetch_row会依次取出$res结果集的数据赋值给$res//$res 是数组while($row=mysql_fetch_row($res)){//第一宗取法是通过$row[$i]//echo "$row[0]--$row[1]----$row[2]";//第二总取法foreach($row as $key=>$val){echo"$val";}echo "<br/>";}//关闭资源mysql_free_result($res);mysql_close($conn);?>Mysql创建表Create table user2( 创建一用户表user2id int primary key auto_increment, id让他自增长name varchar(32) not null, 名字可以给他放32字节不许为空passwordvarchar(64) not null, 密码可以给他放64字节不许为空email varchar(128) not null, email可以给他放128字节不许为空age tingint unsigned not null 年龄int型255最大无符号不许为空)加入数据insert into user2(name,password,email,age)values('yawei',md5('123456'),'sys@',20); insert into user2(name,password,email,age)values('北京‟,md5('123456'),'sys@',20); insert into user2(name,password,email,age)values('上海i',md5('123456'),'sys@',25); insert into user2(name,password,email,age)values('广州',md5('123456'),'sys@',245); insert into user2(name,password,email,age)values('纽约',md5('123456'),'sys@',24);通过mysql扩展库进行dml操作,,增删改查操作代码如下:<?php//演示对user2表进行增删除修改的操作$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("操作错误".mysql_error());}mysql_select_db("test",$conn) or die (mysql_error());mysql_query("set names uft8");//添加数据//$sql="insert into user2(name,password,email,age)values('lisa',md5('123456'),'sdf@',30)"; //删除数据第4行//$sql="delete from user2 where id=4"//修改数据$sql="update user2 set age=100 where id=6";//如果是dml操作则返回bool$res=mysql_query($sql,$conn);if(!$res){die("添加失败".mysql_error());}//看看有几条数据if(mysql_affected_rows($conn)>0){echo "操作成功";}else{echo"没有影响到行数";}mysql_close($conn); ?>以上2个代码可以看出代码的复用性和可维护性不高,php编程中通常的作法是将对数据库的操作封装成一个工具类名字随意,主文件1:<?php//演示对user2表进行增删除修改的操作$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("操作错误".mysql_error());}mysql_select_db("test",$conn) or die (mysql_error());mysql_query("set names uft8");$sql="update user2 set age=100 where id=6";//如果是dml操作则返回bool$sql="insert into user2(name,password,email,age)values('lisa',md5('123456'),'sdf@',30)";$res=mysql_query($sql,$conn);if(!$res){die("添加失败".mysql_error());}//看看有几条数据lisaif(mysql_affected_rows($conn)>0){echo "操作成功";}else{echo"没有影响到行数";}mysql_close($conn);?>文件2:<?phpclass myde{private$conn;private$host="localhost";private$user="root";private$password="nxiaowei";private $db="test";//写个构造函数function myde1(){$this->conn=mysql_connect($this->host,$this->user,$this->password);if(!$this->conn){die("操作失败".mysql_error());}mysql_select_db($this->db,$this->conn);mysql_query("set names uft8");}//完成selectpublic function test1($sql){$res=mysql_query($sql)or die(mysql_error());return $res;}//完成update delete insertpublic function test2($sql){$b=mysql_query($sql,$this->conn);if(!$b){return 0; //失败}else{if(mysql_affected_rows($this->conn)>0){return 1;//表示成功}else{return 2;//表示没有影响行数}}}}?>使用php的mysqli扩展库去操作mysql数据库简单介绍:mysqli是mysql的增强版,Mysql扩展库和mysqli扩展库的比较:1 mysqli稳定性,安全性效率有所提高2.mysqli支持面向对象编程,同时mysqli扩展库考虑到php老程序员,他也提供了面向过程的编程,Mysqli包含2套扩展库(一套面向对象一套面向过程)Mysql的sql语句的特别说明:如果操作的字段类型是字符串string型,则要求我们要使用“”抱起来,如果操作的字段类型是数值型,则可以用‘80’单引号或者不用单引号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
韩顺平mysqlMysql扩展库连接mysql数据库1 打开mysql2 show databases;显示数据库表 3.选表:use test;4,显示表的所有内容:select * from user2;5 删除指定表中的id:delete from user2 where id=4;今天出错的:单词:connect select 2,数字不用加引号‘’3注意,如果加双引号就成字符串了4,数据库和表需分清Mysql扩展库连接mysql数据库<?php//mysql扩展库操作mysql数据库步骤如下//获取连接php和数据库的连接$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("连接失败".mysql_error());}//选择数据库mysql_select_db("test");//设置操作编码建议有mysql_query("set names utf8");//保证我们的程序是按照utf8码操作的//发送指令sql语句)(ddl语句数据定义语言dml语句数据操作语言dtl数据事物语句)$sql="select * from user2";//发送函数借助mysql_query函数$conn可有可无,如果有标明//我是用这个连接箱数据库发送这个$sql指令//$res表示结果集你可以简单的理解是一张表$res=mysql_query($sql,$conn);/接受结果并处理//mysql_fetch_row会依次取出$res结果集的数据赋值给$res//$res 是数组while($row=mysql_fetch_row($res)){//第一宗取法是通过$row[$i]//echo "$row[0]--$row[1]----$row[2]";//第二总取法foreach($row as $key=>$val){echo"$val";}echo "<br/>";}//关闭资源mysql_free_result($res);mysql_close($conn);?>Mysql创建表Create table user2( 创建一用户表user2id int primary key auto_increment, id让他自增长name varchar(32) not null, 名字可以给他放32字节不许为空passwordvarchar(64) not null, 密码可以给他放64字节不许为空email varchar(128) not null, email可以给他放128字节不许为空age tingint unsigned not null 年龄int型255最大无符号不许为空)加入数据insert into user2(name,password,email,age)values('yawei',md5('123456'),'sys@',20); insert into user2(name,password,email,age)values('北京‟,md5('123456'),'sys@',20); insert into user2(name,password,email,age)values('上海i',md5('123456'),'sys@',25); insert into user2(name,password,email,age)values('广州',md5('123456'),'sys@',245); insert into user2(name,password,email,age)values('纽约',md5('123456'),'sys@',24);通过mysql扩展库进行dml操作,,增删改查操作代码如下:<?php//演示对user2表进行增删除修改的操作$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("操作错误".mysql_error());}mysql_select_db("test",$conn) or die (mysql_error());mysql_query("set names uft8");//添加数据//$sql="insert into user2(name,password,email,age)values('lisa',md5('123456'),'sdf@',30)"; //删除数据第4行//$sql="delete from user2 where id=4"//修改数据$sql="update user2 set age=100 where id=6";//如果是dml操作则返回bool$res=mysql_query($sql,$conn);if(!$res){die("添加失败".mysql_error());}//看看有几条数据if(mysql_affected_rows($conn)>0){echo "操作成功";}else{echo"没有影响到行数";}mysql_close($conn); ?>以上2个代码可以看出代码的复用性和可维护性不高,php编程中通常的作法是将对数据库的操作封装成一个工具类名字随意,主文件1:<?php//演示对user2表进行增删除修改的操作$conn=mysql_connect("localhost:3306","root","nxiaowei");if(!$conn){die("操作错误".mysql_error());}mysql_select_db("test",$conn) or die (mysql_error());mysql_query("set names uft8");$sql="update user2 set age=100 where id=6";//如果是dml操作则返回bool$sql="insert into user2(name,password,email,age)values('lisa',md5('123456'),'sdf@',30)";$res=mysql_query($sql,$conn);if(!$res){die("添加失败".mysql_error());}//看看有几条数据lisaif(mysql_affected_rows($conn)>0){echo "操作成功";}else{echo"没有影响到行数";}mysql_close($conn);?>文件2:<?phpclass myde{private$conn;private$host="localhost";private$user="root";private$password="nxiaowei";private $db="test";//写个构造函数function myde1(){$this->conn=mysql_connect($this->host,$this->user,$this->password);if(!$this->conn){die("操作失败".mysql_error());}mysql_select_db($this->db,$this->conn);mysql_query("set names uft8");}//完成selectpublic function test1($sql){$res=mysql_query($sql)or die(mysql_error());return $res;}//完成update delete insertpublic function test2($sql){$b=mysql_query($sql,$this->conn);if(!$b){return 0; //失败}else{if(mysql_affected_rows($this->conn)>0){return 1;//表示成功}else{return 2;//表示没有影响行数}}}}?>使用php的mysqli扩展库去操作mysql数据库简单介绍:mysqli是mysql的增强版,Mysql扩展库和mysqli扩展库的比较:1 mysqli稳定性,安全性效率有所提高2.mysqli支持面向对象编程,同时mysqli扩展库考虑到php老程序员,他也提供了面向过程的编程,Mysqli包含2套扩展库(一套面向对象一套面向过程)Mysql的sql语句的特别说明:如果操作的字段类型是字符串string型,则要求我们要使用“”抱起来,如果操作的字段类型是数值型,则可以用‘80’单引号或者不用单引号。
建立主界面,添加查询修改规程等连接1在管理页面显示登陆成功的人名字步骤:思路,通过跳转吧用户专递给2 表格做出来,加入删除表格增加表格,(加入链接)3 考虑分页显示用户信息分页技术思路:必须要有几个变量是必须的:1:$pageNow-》显示第几页用户通过方式传递给他的2$pageCount-》共有几页【要程序中计算获取】3$rowCount-》共有多少条记录就是这个表里面用户共有几个,这个要从数据库里获取4 $pageSize-》每页显示几条记录,{程序员自己定义的}实际需求说明:$pageNow=1 $rowCount=7 $pageSize=3$pageCount怎样计算//小算法: $pageCount=ceil($rowCount/$pageSize);//刚好能整除If($rowCount%$pageSize==0);$pageCount=$rowCount/$pageSize}else{$pageCount=ceil($rowCount/$pageSize);}Mysql分页说明:Show * from emp limit 3.4 3:表示从第几条取,但是他的编号是从0开始便的4:取出几条统计出一共多少个id select count(id) from cmp;分页技术详解:1、前言分页显示是一种非常常见的浏览和显示大量数据的方法,属于web编程中最常处理的事件之一。