mysql笔记一 ----mysql数据库的安装和基础指令

一、mysql数据库的安装(win7—mysql-5.6.22-winx64)

windows下mysql免安装配置 


1、 下载mysql免安装压缩包

  下载mysql-5.6.22-winx64.zip  解压到本地D:\mysql-5.6.22-winx64


2、  修改配置文件
  复制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 = 3306

4、  命令行安装mysql
4.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.ini

4.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-winx64


4.5 删除服务(以管理员身份运行)
    bin\mysqld --remove mysql-5.6.22-winx64

   启动服务不通过注册
   bin\mysqld --console

   停止服务不通过注册服务
   bin\mysqladmin -u root shutdown


5、常用命令
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– 数据控制语言    ----DBA

 - create user hncu identified by '1234';  //创建一个用户
 - INSERT INTO mysql.user(HOST,USER,PASSWORD)
   VALUES('127.0.0.1',"hncu",PASSWORD("1234"));//创建一个用户
 - SELECT * FROM mysql.user//查看所有用户
 - GRANT ALL PRIVILEGES ON testDB.* TO hncu@localhost IDENTIFIED BY
   '1234';给一个用户授权(所有)
 - grant all on *.* to 'hncu'@'%' with grant option;
   //把所有资源授权给用户hncu,并允许他在任何机器上登录使用
 - DELETE FROM mysql.user WHERE USER LIKE'hncu%'//删除一个用户
 - SHOW GRANTS FOR hncu;//查看用户的权限
 - grant all on *.* to 'hncu'@'192.168.31.168' with grant option;
   //限制该用户只能在这台机器上登录

※※※  DML-数据操纵语言Data Manipulation Language。
主要指数据的增删查改
Select\delete\update\insert\call

 - show 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
数据类型的知识点: charvarchar都可以用来定义字符类型的字段,区别:
char(15) ---固定长度15,如果赋值时只赋一个字符'a',那么里面数据是:1个字符'a'14个空格。-----类似Java当中的字符数组。
varchar(15)----可变长的char数组,如果赋值时只赋一个字符'a',那么里面数据就只有一个字符'a'。---类似Java当中的String

create table sstud(
  sno varchar(15) not null primary key,
  sname varchar(15) not null,
  age int,
  saddress varchar(30)
);

 - desc sstud; //显示表结构1
 - insert into sstud values('1001','Jack',25,'changsha');


//显示表结构1

 - show create table sstud;//查看详细信息
 - alter table sstud add column aa int;//修改表结构--添加一列
 - alter table sstud drop column aa;//修改表结构--删除一列
 - drop table sstud;//删除stud表
 - 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 note  CHANGE   node  note INT; //更改列名字
 - 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的设置为50
 - UPDATE sstud SET sname='王建安',saddress='永州' WHERE
   sno='1007';修改sno为1007的sname为王建安,saddress为永州

删除操作:

 - DROP DATABASE sstud;//删除数据库
 - DROP TABLE sstud;//删除表sstud
 - DELETE 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 BY

 - SELECT * FROM sstud ORDER BY sage ;//按年龄给表进行排序,默认是升序
 - SELECT * FROM sstud ORDER BY sage DESC;//按年龄给表进行降序排序

//分组 GROUP BY

 - SELECT * 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中出面的位置,没有则返回0

 - SELECT * 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);
        }
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值