使用命令行窗口连接MYSQL数据库
mysql –u用户名 –p密码(连接本地)
mysql –h ip地址 –u用户名 –p密码
断开:mysql>quit 或者\q
修改编码:
查询系统字符编码
show variables like ‘character%’;
修改 编码:
更改客户端的编码(只影响当前窗口)
mysql>>SET character_set_client=gbk;
更改客户端显示的编码(只影响当前窗口)
mysql>>SET character_set_results=gbk
设置编码
set character_set_connection = gbk;
修改Mysql 的配置文件 my.ini文件中的
[client]
port=3306
[mysql]
default-character-set= utf-8 改为GBK
创建数据库
CREATE DATABASE [IF NOT EXISTS] db_name???
[create_specification [, create_specification] …]
create_specification:???
[DEFAULT] CHARACTER SET charset_name?
| [DEFAULT] COLLATE collation_name
CHARACTER SET:指定数据库采用的字符集
COLLATE:指定数据库字符集的比较方式
创建一个名称为mydb1的数据库。
创建一个使用utf-8字符集的mydb2数据库。
创建一个使用utf-8字符集,并带校对规则的mydb3数据库
显示数据库语句:
SHOW DATABASES
显示数据库创建语句:
SHOW CREATE DATABASE db_name
数据库删除语句:
DROP DATABASE [IF EXISTS] db_name
修改、备份、恢复数据库
备份数据库表中的数据
mysqldump -u 用户名 -p 数据库名 > 文件名.sql (sql脚本 window)
恢复数据库
第一步:create database school;
第二步:use school;
第三步:source H:\workspaceweb\school.sql
source 文件名.sql (sql语句)
mysql –u 用户名 –p 密码 数据库名<文件名.sql ( window )
创建表
注意:创建表前,要先使用use db语句使用库。
CREATE TABLE table_name
(
field1 datatype,
field2 datatype,
field3 datatype,
)character set 字符集 collate 校对规则
field:指定列名 datatype:指定列类型
注意如果表名是关键字 需要加 order
1左边那个键
创建一个员工表
mysql>>CREATE TABLE employee(
id int(11),
name varchar(255),
gender varchar(10),
birthday date,
entry_date date,
job varchar(255),
salary float(10,2),
resume text
) CHARACTER SET utf8 COLLATE utf8_general_ci;
修改表
ALTER TABLE table
ADD (column datatype [DEFAULT expr]
[, column datatype]…);
ALTER TABLE table
MODIFY (column datatype [DEFAULT expr]
[, column datatype]…);
ALTER TABLE table
DROP (column);
修改表的名称:Rename table 表名 to 新表名
修改表的字符集:alter table student character set utf8;
在员工表的基本上增加一个image列
mysql>>ALTER TABLE employee ADD (image blob);
查看创建表的细节
mysql>>SHOW CREATE TABLE employee;
修改job列,使其长度为60
mysql>>ALTER TABLE employee MODIFY job varchar(60);
删除gender列
mysql>>ALTER TABLE employee DROP gender;
表名改为user
mysql>>RENAME TABLE employee TO user;
修改表的字符集为utf-8
mysql>>ALTER TABLE user CHARACTER SET gbk;
列名name修改为username
mysql>>ALTER TABLE user CHANGE COLUMN name username varchar(255);
更改客户端的编码(只影响当前窗口)
mysql>>SET character_set_client=gbk;
更改客户端显示的编码(只影响当前窗口)
mysql>>SET character_set_results=gbk;
插入中文数据(利用可视化工具不存在问题)
mysql>>INSERT INTO user (id,username,birthday,entry_date,job,salary,resume) VALUES (2,‘冬冬’,‘1988-10-01’,‘2010-10-01’,‘coder’,8000.00,‘good man’);
将所有员工薪水修改为5000元
mysql>>UPDATE user SET salary=5000;
将姓名为’ybw’的员工薪水修改为3000元
mysql>>UPDATE user SET salary=3000 WHERE username=‘ybw’;
将姓名为’冬冬’的员工薪水修改为4000元,job改为ccc
mysql>>UPDATE user SET salary=4000,job=‘ccc’ WHERE username=‘冬冬’;
将wu的薪水在原有基础上增加1000元
mysql>>UPDATE user SET salary=salary+1000 WHERE username=‘ybw’;
删除表中名称为’ybw’的记录
mysql>>DELETE FROM user WHERE username=‘ybw’;
删除表中所有记录
mysql>>DELETE FROM user;
使用truncate删除表中记录(摧毁表格,然后重建表结构,在删除大量数据时有效)
mysql>>TRUNCATE TABLE user;
查询表中所有学生的信息
mysql>>SELECT id,name,chinese,english,math FROM student;
查询表中所有学生的姓名和对应的英语成绩。
mysql>>SELECT name,english FROM student;
过滤表中重复数据
mysql>>SELECT DISTINCT id,name,chinese,english,math FROM student;
在所有学生分数上加10分特长分
mysql>>SELECT english+10 FROM student;
统计每个学生的总分
mysql>>SELECT english+chinese+math FROM student;
使用别名表示学生分数(AS可以省略)
mysql>>SELECT english+chinese+math AS 总分 FROM student;
查询姓名为"张小明"的学生成绩
mysql>>SELECT id,name,chinese,english,math FROM student WHERE name=‘张小明’;
查询英语成绩大于90分的同学
mysql>>SELECT id,name,chinese,english,math FROM student WHERE english>90;
查询总分大于200分的所有同学
mysql>>SELECT id,name,chinese,english,math FROM student WHERE
english+chinese+math>200;
查询英语分数在 80-90之间的同学。
mysql>>SELECT id,name,chinese,english,math FROM student WHERE english BETWEEN 80 AND 90;
查询数学分数为89,90,91的同学
mysql>>SELECT id,name,chinese,english,math FROM student WHERE math IN (89,90,91);
查询所有姓李的学生成绩
mysql>>SELECT id,name,chinese,english,math FROM student WHERE name LIKE ‘李%’;
查询数学分>80,语文分>80的同学
mysql>>SELECT id,name,chinese,english,math FROM student WHERE math>80 AND chinese>80;
对数学成绩排序后输出
mysql>>SELECT id,name,math FROM student ORDER BY math;
对总分从高到低的顺序输出
mysql>>SELECT id,name,math+chinese+english AS 总分 FROM student ORDER BY 总分 DESC;
对姓李的学生成绩排序输出
mysql>>SELECT id,name,math+chinese+english AS 总分 FROM student WHERE name LIKE ‘李%’ ORDER BY 总分 DESC;
统计一个班级共有多少学生
mysql>>SELECT COUNT(*) FROM student;
统计数学成绩大于90的学生有多少个
mysql>>SELECT COUNT(*) FROM student WHERE math>90;
统计总分大于250的人数有多少
mysql>>SELECT COUNT(*) FROM student WHERE math+chinese+english>250;
统计一个班级数学总成绩
mysql>>SELECT SUM(math) FROM student;
统计一个班级语文、英语、数学各科的总成绩
mysql>>SELECT SUM(math),SUM(chinese),SUM(english) FROM student;
统计一个班级语文、英语、数学的成绩总和
mysql>>SELECT SUM(math+chinese+english) FROM student;
统计一个班级语文成绩平均分
mysql>>SELECT SUM(chinese)/COUNT(*) FROM student;
求一个班级数学平均分
mysql>>SELECT AVG(math) FROM student;
求一个班级总分平均分
mysql>>SELECT AVG(math+chinese+english) FROM student;
求班级最高分和最低分
mysql>>SELECT MAX(math+chinese+english) AS 最高分,MIN(math+chinese+english) AS 最低分 FROM student;
对订单表中商品归类后,显示每一类商品的总价
mysql>>SELECT id,product,SUM(price) FROM orders GROUP BY product;
查询购买了几类商品,并且每类总价大于100的商品
mysql>>SELECT id,product,SUM(price) totalPrice FROM orders GROUP BY product HAVING totalPrice>100;
mysql中文乱码问题:
原来就有mysql服务器,安装时使用的latin1字符集
connection是连接数据库的字符集设置类型,如果程序没有指明连接数据库使用的字符集类型就按照服务器端默认的字符集设置
数据库连接串:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF8
xml:jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=UTF8
通过命令行插入中文问题:
修改Mysql 的配置文件 my.ini文件中的
[client]
port=3306
[mysql]
default-character-set= utf-8 改为GBK