一、mysql数据库的安装(win7—mysql-5.6.22-winx64)
windows下mysql免安装配置 1、 下载mysql免安装压缩包 下载mysql-5.6.22-winx64.zip 解压到本地D:\mysql-5.6.22-winx642、 修改配置文件 复制my-default.ini为my.ini 文件3、 修改my.ini 在[mysqld] 组: basedir = D:\\mysql-5.6.22-winx64 datadir = D:\\mysql-5.6.22-winx64\\data port = 33064、 命令行安装mysql4.1、注册服务(注意以管理员身份操作:在我的电脑中打开“C:\Windows\System32”,找到文件“cmd.exe”,右键点击,选择“以管理员身份运行(A),进到目录“D:\mysql-5.5.24-winx64”,然后运行以下代码) bin\mysqld --install mysql-5.6.22-winx64 --defaults-file=d:\mysql-5.6.22-winx64\my.ini4.2、 启动服务(以管理员身份运行) net start mysql-5.6.22-winx64 --也可右键点击“我的电脑”|“管理”|“服务和应用程序”|“服务”|找到“mysql-5.5.24-winx64”,右键点开,选择启动4.3、命令行登录(把bin目录设到path环境变量中,则可省略“bin\”,后面同理) bin\mysql -u root -p --密码为空回车 为root设密码(原密码为空时):mysqladmin -u root password "1234" 修改root密码:mysqladmin -u root password oldpass "newpass"4.4、停止服务(以管理员身份运行) net stop mysql-5.6.22-winx644.5 删除服务(以管理员身份运行) bin\mysqld --remove mysql-5.6.22-winx64 启动服务不通过注册 bin\mysqld --console 停止服务不通过注册服务 bin\mysqladmin -u root shutdown5、常用命令1.列出MYSQL支持的所有字符集: SHOW CHARACTER SET;2.当前MYSQL服务器字符集设置 SHOW VARIABLES LIKE 'character_set_%';3.当前MYSQL服务器字符集校验设置 SHOW VARIABLES LIKE 'collation_%';4.显示某数据库字符集设置 show create database 数据库名;5.显示某数据表字符集设置 show create table 表名;6.修改数据库字符集 alter database 数据库名 default character set 'utf8';7.修改数据表字符集 alter table 表名 default character set 'utf8';8.建库时指定字符集 create database 数据库名 character set gbk collate gbk_chinese_ci; ---------------------------------------------------------------------------------------------【知识性文章转载】MYSQL 字符集问题MySQL的字符集支持(Character Set Support)有两个方面: 字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。1.MySQL默认字符集MySQL对于字符集的指定可以细化到一个数据库,一张表,一列,应该用什么字符集。但是,传统的程序在创建数据库和数据表时并没有使用那么复杂的配置,它们用的是默认的配置,那么,默认的配置从何而来呢? (1)编译MySQL 时,指定了一个默认的字符集,这个字符集是 latin1; (2)安装MySQL 时,可以在配置文件 (my.ini) 中指定一个默认的的字符集,如果没指定,这个值继承自编译时指定的; (3)启动mysqld 时,可以在命令行参数中指定一个默认的的字符集,如果没指定,这个值继承自配置文件中的配置,此时 character_set_server 被设定为这个默认的字符集; (4)当创建一个新的数据库时,除非明确指定,这个数据库的字符集被缺省设定为character_set_server; (5)当选定了一个数据库时,character_set_database 被设定为这个数据库默认的字符集; (6)在这个数据库里创建一张表时,表默认的字符集被设定为 character_set_database,也就是这个数据库默认的字符集; (7)当在表内设置一栏时,除非明确指定,否则此栏缺省的字符集就是表默认的字符集;简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。2.查看默认字符集(默认情况下,mysql的字符集是latin1(ISO_8859_1)通常,查看系统的字符集和排序方式的设定可以通过下面的两条命令: mysql> SHOW VARIABLES LIKE 'character%';+--------------------------+---------------------------------+| Variable_name | Value |+--------------------------+---------------------------------+| character_set_client | latin1 || character_set_connection | latin1 || character_set_database | latin1 || character_set_filesystem | binary || character_set_results | latin1 || character_set_server | latin1 || character_set_system | utf8 || character_sets_dir | D:"mysql-5.0.37"share"charsets" |+--------------------------+---------------------------------+mysql> SHOW VARIABLES LIKE 'collation_%';+----------------------+-----------------+| Variable_name | Value |+----------------------+-----------------+| collation_connection | utf8_general_ci || collation_database | utf8_general_ci || collation_server | utf8_general_ci |+----------------------+-----------------+3.修改默认字符集(1) 最简单的修改方法,就是修改mysql的my.ini文件中的字符集键值,如 default-character-set = utf8 character_set_server = utf8 修改完后,重启mysql的服务,service mysql restart 使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数据库编码均已改成utf8+--------------------------+---------------------------------+| Variable_name | Value |+--------------------------+---------------------------------+| character_set_client | utf8 || character_set_connection | utf8 || character_set_database | utf8 || character_set_filesystem | binary || character_set_results | utf8 || character_set_server | utf8 || character_set_system | utf8 || character_sets_dir | D:"mysql-5.0.37"share"charsets" |+--------------------------+---------------------------------+ (2) 还有一种修改字符集的方法,就是使用mysql的命令 mysql> SET character_set_client = utf8 ;
二、dos 环境下mysql的基础命令
命令演示关于查询用户名:select * from mysql.user ;※※了解※※ DCL– 数据控制语言 ----DBAcreate user hncu identified by '1234'; //创建一个用户grant all on *.* to 'hncu'@'%' with grant option; //把所有资源授权给用户hncu,并允许他在任何机器上登录使用grant all on *.* to 'hncu'@'192.168.31.168' with grant option; //限制该用户只能在这台机器上登录※※※ DML-数据操纵语言Data Manipulation Language。主要指数据的增删查改Select\delete\update\insert\callshow databases; //显示所有数据名use mydb; //打开“mydb”这个数据库show tables; //显示当前数据库的所有表名select * from student; //显示student表中的所有记录select * from student where saddress='湖南长沙'; //显示(查询)saddress='湖南长沙'的所有记录select sno,sname,saddress from student; //显示student表中的指定字段insert into student values(8000,'Jack','1995-1-1','中国北京'); //向student表插入一条记录delete from student where sname='heihei'; //删除指定行update student set sname='Rose' where sno='1009';insert into student (sno,sname) values ('8001','aaaa');//只插入指定的列※※※DDL – 数据定义语言Data Definition Language建库、建表、设置约束等:create\drop\alter数据类型的知识点: char和varchar都可以用来定义字符类型的字段,区别:char(15) ---固定长度15,如果赋值时只赋一个字符'a',那么里面数据是:1个字符'a' 加 14个空格。-----类似Java当中的字符数组。varchar(15)----可变长的char数组,如果赋值时只赋一个字符'a',那么里面数据就只有一个字符'a'。---类似Java当中的Stringcreate table sstud( sno varchar(15) not null primary key, sname varchar(15) not null, age int, saddress varchar(30));desc sstud; //显示表结构1insert into sstud values('1001','Jack',25,'changsha');insert into sstud values('1002','Jack2',26,'changsha');insert into sstud values('1003','Jack2',26,'changsha');insert into sstud values('1005','Jack2',26,'北京');//显示表结构1show create table sstud;//查看详细信息alter table sstud add column aa int;//修改表结构--添加一列alter table sstud drop column aa;//修改表结构--删除一列drop table sstud;drop database aa;导入脚本:source D:/JavaTraining2015_2/sstud.sql导出脚本:mysqldump -uroot -p1234 --databases aa > d:/a/dd.sql
三、SQLyog Ultimate软件下操作mysql数据库
CREATE DATAbase sstud CHARSET utf8;//创建数据库并且设置编码//创建数据库表CREATE TABLE sstud( sno VARCHAR(10) PRIMARY KEY NOT NULL,//设置主键 sname VARCHAR(10) NOT NULL,//不为空 sage INT DEFAULT 20,//设置默认值 saddress VARCHAR(30));插入操作:INSERT INTO sstud VALUES('1001','Jack',21,'湖南城市学院');//插入一行表记录INSERT INTO sstud VALUES('1010','唐僧',5,'武侠');INSERT INTO sstud(sno,sname,saddress) VALUES('1002','张三','湖南益阳');//插入指定列一行行表记录修改操作ALTER TABLE sstud ADD COLUMN ssex CHAR(1) DEFAULT '男';//为sstud表增加ssex一列 一个字符,默认值为男ALTER TABLE sstud ADD sex CHAR(1);ALTER TABLE sstud DROP COLUMN ssex;为sstud表删除ssex一列ALTER TABLE sstud DROP sex;更新操作//判断值时,NULL是不能用“=”号判断,而应该用IS//不能使用: UPDATE TABLE sstud SET ...UPDATE sstud SET sage=50 WHERE sage IS NULL;//为sage为NULL的设置为50UPDATE sstud SET sname='王建安',saddress='永州' WHERE sno='1007';修改sno为1007的sname为王建安,saddress为永州删除操作:DROP DATAbase sstud;//删除数据库DROP TABLE sstud;//删除表sstudDELETE FROM sstud WHERE sname='Tom';删除sname=Tom的行记录查询操作SELECT * FROM sstud;//查询sstud表的信息SELECT sno AS 编号,sname AS 姓名 ,sage AS年龄,saddress AS 地址 FROM sstud;//给表的字段进行命名(别名)//SELECT 复杂查询//WHERE子句 --BETWEEN子句 和 IN子句SELECT * FROM sstud WHERE sage>22;//选择sstud表年龄大于22的SELECT * FROM sstud WHERE sage>20 AND sage<25;//选择sstud表年龄大于20并且小于22岁的SELECT * FROM sstud WHERE sage=21 OR sage=23;//选择sstud表年龄等于21或者年龄等于23岁的SELECT * FROM sstud WHERE sage BETWEEN 20 AND 25;//选择sstud表年龄介于20到25之间的SELECT * FROM sstud WHERE sage IN(23,25,500);//选择sstud表年龄是23,25或者500的SELECT * FROM sstud WHERE sage NOT IN(23,25,500);//选择sstud表年龄不是是23,25或者500的//模糊查询LIKE '%'匹配所有 '_'匹配单字符 ---必须和LIKE共同使用SELECT * FROM sstud WHERE sname LIKE '张%';匹配所有sname是张开头的姓名SELECT * FROM sstud WHERE sname LIKE '张_';匹配所有sname是张开头,并且长度为2的字符SELECT * FROM sstud WHERE sname LIKE '张__';匹配所有sname是张开头,并且长度为3的字符SELECT * FROM sstud WHERE sname LIKE '%张%' AND sage>22;匹配所有sname包含张的,并且sage大于23的记录行知识点:SELECT 字段 FROM 表名 WHERE 条件 AND 条件 OR 条件 UPDATE tableName SET .. WHERE 条件DELETE FROM tableName WHERE 条件创建一个视图CREATE VIEW aview AS SELECT * FROM sstud WHERE sage>20;//创建一个sage>20的视图SELECT * FROM aview WHERE sname LIKE '张%';//查询视图信息UPDATE aview SET sname='wang' WHERE sno='1003';//修改视图信息//聚合函数SELECT COUNT(*) FROM sstud;//查找sstud的行数SELECT COUNT(*) AS sumROW FROM sstud;//统计总行数SELECT COUNT(0) AS sumNum FROM sstud;SELECT COUNT(saddress) AS sumAddress FROM sstud;//统计saddress这一列中,内容为非NULL的行数SELECT AVG(sage) AS avgAge FROM sstud WHERE sage IS NOT NULL;//求age不为空的行的平均值SELECT ROUND(AVG(sage)) AS roundAvgAge FROM sstud;//求sage的平均值的取整SELECT SUM(sage) AS sumAge FROM sstud;//求sage的总数SELECT MAX(sage) AS sumAge FROM sstud;//求sage的最大值SELECT MIN(sage) AS sumAge FROM sstud;//求sage的最小值//选择年龄最小的那个人的名字和年龄SELECT * FROM sstud WHERE sage=(SELECT MIN(sage) AS sumAge FROM sstud);SELECT sname,sage FROM sstud WHERE sage IN ( SELECT MIN(sage) FROM sstud ) ;//DISTINCT --数据相同时只显示第一条(去除重复数据)SELECT DISTINCT * FROM sstud WHERE sage =( SELECT MIN(sage) FROM sstud ) ;//EXISTS函数SELECT * FROM sstud WHERE sage>30 AND EXISTS (SELECT * FROM sstud WHERE saddress='武侠');//查年龄大于三十岁并且saddress有属于武侠的的sstud信息//ORDER BYSELECT * FROM sstud ORDER BY sage ;//按年龄给表进行排序,默认是升序SELECT * FROM sstud ORDER BY sage DESC;//按年龄给表进行降序排序//分组 GROUP BYSELECT * FROM sstud GROUP BY saddress;//按地址进行分组SELECT saddress AS 地址,SUM(sage)AS 年龄和 FROM sstud GROUP BY saddress;//对每个地区的年龄进行总和SELECT saddress AS 地址,COUNT(*) AS 个数 FROM sstud GROUP BY saddress ;//对每个地区的人数进行计数//固定搭配1: SELECT ... FROM ... WHERE ... ORDER BY ... ----ORDER BY子句要放在最后//固定搭配2: SELECT ... FROM ... GROUP BY ... HAVING .... ----GROUP BY子句中的条件用的是HAVING (不能用WHERE)SELECT * FROM sstud WHERE sage BETWEEN 20 AND 30 ORDER BY sage DESC; //选择你年龄在20-30的进行降序排列SELECT saddress AS 地址,AVG(sage) FROM sstud GROUP BY saddress HAVING AVG(sage)>20;//选择你年龄大于20的,对saddress进行分组SELECT saddress AS 地址,AVG(sage) AS avgAge FROM sstud GROUP BY 地址 HAVING avgAge>20;//这是利用了别名//字符串处理函数LENGTH(str) - 求字符串长度LTRIM(str) - 去掉左边的空格RTRIM(str) - 去掉右边的空格LEFT(str,n); - 从左边取出n个字符RIGHT(str,n); - 从右边取出n个字符SUBSTRING(str,BEGIN,END) -返回子串REVERSE(str) –返回颠倒的字符串LOWER(str) - 转成小写UPPER(str) - 转成大写ConCAT(Str,str…..)串联字符串。INSTR(str,s) – 返回s在str中出面的位置,没有则返回0SELECT * FROM sstud WHERE TRIM(sname)='Jack';//去调空格SELECT * FROM sstud WHERE LEFT(saddress,2)='湖南';//选择地址是湖南开头的信息相当于SELECT * FROM sstud WHERE saddress LIKE '湖南%';SELECT REVERSE(sname) FROM sstud;//查询名字的反序SELECT UPPER(sname) AS 姓名 FROM sstud;//查询名字的大写SELECT LOWER(sname) AS 姓名 FROM sstud;//查询名字的小写SELECT ConCAT(sname,sage,saddress) FROM sstud;//串联字符串。SELECT sname ,INSTR(sname,'a') AS ins FROM sstud;//返回s在str中出面的位置,没有则返回0
四、用myelipse对mysql进行操作
//连接数据库步骤 //1.加载驱动,把mysql连接桥放在lib目录下 Class d=Class.forName("com.mysql.jdbc.Driver"); String url="jdbc:mysql://127.0.0.1:3306/sstud?useUnicode=true&characterEncoding=utf-8";//采用的是默认编码 //简历连接 Connection con=DriverManager.getConnection(url, "root", "1234"); //获得语句对象 Statement st= con.createStatement(); //String sql="INSERT INTO sstud(sno,sname,sage,saddress,ssex) VALUES('1013','Big',25,'自己人','男');"; //String sql="DELETE FROM sstud WHERE sno='1013';"; String sql="UPDATE sstud SET saddress='中国北京' WHERE sno='1013'"; //增删改用execute();函数 st.execute(sql); String sql2="SELECT * FROM sstud ;"; //查询用 st.executeQuery(sql); ResultSet rs=st.executeQuery(sql2); while(rs.next()){//从表头开始 String sno=rs.getString(1); String sname=rs.getString("sname"); String saddress=rs.getString("saddress"); String ssex=rs.getString("ssex"); String sage=rs.getString("sage"); System.out.println(sno+","+sname+","+sage +","+saddress+","+ssex); }