1、mysql不支持中文
解决办法:private static final String DBURL="jdbc:mysql://localhost:3306/mysql?characterEncoding=utf8";
5.5之后版本 在【mysqld】下面加入default-character-set=utf8
如果修改后不能启动报错试试把default-character-set=utf8改为character_set_server=utf8
笨办法每个表指定编码
create table entries2 (
2 id int auto_increment,
3 title text,
4 content text,
5 posted_on datetime,
6 primary key (id)
7 ) character set = utf8;
alter table emp1 convert to character set utf8
2、mysql中插入当前时间
insert into tablename (fieldname) values (now())
NOW()函数以`'YYYY-MM-DD HH:MM:SS'返回当前的日期时间,可以直接存到DATETIME字段中。
CURDATE()以’YYYY-MM-DD’的格式返回今天的日期,可以直接存到DATE字段中。
CURTIME()以’HH:MM:SS’的格式返回当前的时间,可以直接存到TIME字段中。
mysql 1067错误 覆盖安装文件 建议之前备份数据库
3、修改 root 账号的密码
刚安装完成时root账号默认密码为空,此时可以将密码修改为指定的密码。如:123456
方法一:
c:>mysql –uroot
mysql>show databases;
mysql>use mysql;
mysql>UPDATE user SET password=PASSWORD("123456") WHERE user='root';
mysql>FLUSH PRIVILEGES;
mysql>QUIT
4、我的电脑
连接名:mysql
主机:localhost
端口:3306
用户名:root
密码:*************
5、MySql 注释
# 到该行结束
/* 行中间或多个行 */ 的注释
6、MySQL insert 与 update
INSERT into emp (ename,job,hiredate,sal,createtime) values('张山','工程师','2016-08-01',785.23,now());
update emp set job='校长' where empno=1
7、mysql退出三种方法
mysql > exit;
mysql > quit;
mysql > \q;
8、登录Mysql:“输入mysql -uroot -p -P3306 -h127.0.0.1”
或者输入
9、mysql的所有命令都以";"或者;为结束符
select * from emp;
(1)--显示所有数据库
SHOW DATABASES;
(2)--使用数据库
user 数据库名;
(3)--查询表是否存在
drop table if exists user;
(4)--创建表
create table userinfo(
userid bigint PRIMARY KEY,
name varchar(30) not null,
password varchar(32) not null
);
CREATE TABLE IF NOT EXISTS `runoob_tbl`(
`runoob_id` INT UNSIGNED AUTO_INCREMENT,
`runoob_title` VARCHAR(100) NOT NULL,
`runoob_author` VARCHAR(40) NOT NULL,
`submission_date` DATE,
PRIMARY KEY ( `runoob_id` )
)ENGINE=InnoDB DEFAULT CHARSET=utf8;
如果你不想字段为 NULL 可以设置字段的属性为 NOT NULL,
在操作数据库时如果输入该字段的数据为NULL ,就会报错。
AUTO_INCREMENT定义列为自增的属性,一般用于主键,数值会自动加1。
PRIMARY KEY关键字用于定义列为主键。 您可以使用多列来定义主键,列间以逗号分隔。
ENGINE 设置存储引擎,
CHARSET 设置编码。
--插入数据
insert into userinfo (userid,name,password) values(1,'admin','202CB962AC59075B964B07152D234B70');
insert into userinfo (userid,name,password) values(2,'张三','250CF8B51C773F3F8DC8B4BE867A9A02');
insert into userinfo (userid,name,password) values(3,'lisi','68053AF2923E00204C3CA7C6A3150CF7');
insert into userinfo (userid,name,password) values(4,'lis1i','68053AF2923E00204C3CA7C6A3150CF7');
---增加一个列
Alter table tabname add column col type 注:列增加后将不能删除。
DB2中列加上后数据类型也不能改变,唯一能改变的是增加varchar类型 的长度。
alter table userinfo add column createtime datetime;
//增加一个字段,默认为空
alter table user add COLUMN new1 VARCHAR(20) DEFAULT NULL;
//增加一个字段,默认不能为空
alter table user add COLUMN new2 VARCHAR(20) NOT NULL;
ALTER TABLE fanggroup ADD `dataTbName` varchar(50) NOT NULL DEFAULT '' COMMENT '结果表表名称' AFTER stateTbName;
(在stateTbName字段后加`dataTbName`)
--修改一个字段
//修改一个字段的类型
alter table user MODIFY new1 VARCHAR(10);
//修改一个字段的名称,此时一定要重新指定该字段的类型
alter table user CHANGE new1 new4 int;
--添加注释
// 为字段添加注释,同样适用于修改
ALTER TABLE `table_name` CHANGE `column_name` `column_name` type(longth) UNSIGNED NULL DEFAULT NULL COMMENT '注释'
ALTER table table_name MODIFY `column_name` datetime DEFAULT NULL COMMENT '这是字段的注释'
// 可以为表添加注释
ALTER TABLE `table_name` COMMENT'注释';
ALTER TABLE fanggroup ADD `dataTbName` varchar(50) NOT NULL DEFAULT '' COMMENT '结果表表名称' AFTER stateTbName;
(在stateTbName字段后加`dataTbName`)
--删除字段
ALTER TABLE fangwarning DROP id
alter table fangwarning add id int unsigned not Null auto_increment primary key
--调整字段顺序
alter table 表名
change 字段名 新字段名 字段类型 默认值 after 字段名(跳到哪个字段之后)
alter table appstore_souapp_app_androidmarket;
change getPriceCurrency getPriceCurrency varchar(50) default null AFTER getPrice;
--添加主键
Alter table tabname add primary key(col)
Alter table emp add primary key(id);
--删除主键
Alter table tabname drop primary key(col)
--创建索引
(1)使用ALTER TABLE语句创建索引。
语法如下:
alter table table_name add index index_name (column_list) ;---普通索引
alter table table_name add unique (column_list) ;----唯一索引
alter table table_name add primary key (column_list);----主键索引
ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)----多列索引
例如:alter table table_test add index index_test1(name);
(2)使用CREATE INDEX语句对表增加索引。
能够增加普通索引和UNIQUE索引两种。其格式如下:
create index index_name on table_name (column_list) ;
create unique index index_name on table_name (column_list) ;
创建索引的示例如下:
例如:>create index index_test2 on table_test(age);
--删除索引
drop index idxname 注:索引是不可更改的,想更改必须删除重新建。
--创建视图:
create view viewname as select statement
--删除视图
drop view viewname
--top
select * from userinfo LIMIT 2;
select * from userinfo order by userid desc LIMIT 2;
--排重
SELECT distinct group from enddata
--选择:select * from table1 where 范围
--插入:insert into userinfo (userid,name,password) values(4,'lis1i','68053AF2923E00204C3CA7C6A3150CF7');
--删除:delete from userinfo where userid=4;
--更新:update table1 set field1=value1 where 范围
--查找:
--排序:select * from userinfo order by userid desc;
--总数:select count(*) from userinfo;
--求和:select sum(field1) as sumvalue from table1
--平均:select avg(field1) as avgvalue from table1
--最大:select max(field1) as maxvalue from table1
--最小:select min(field1) as minvalue from table1
--分组
select name,sum(cnt) from 表名 group by name
--关键字做字段 加反引号
SELECT distinct `group` from enddata
--左连接:
left join:
左外连接(左连接):结果集包括连接表的匹配行,也包括左连接表的所有行。
select a.id,a.contractno,a.incometypecode,a.incometypename,a.introducttime,a.creattime,a.groupName,a.groupCode,a.incomerecordid,a.incomeamount,a.customername,a.signcityname,b.salerid from contract_income_record as a LEFT JOIN contract_order_info as b ON a.contractno = b.contractno where a.creattime>'2017-06-01' and b.salerid=''
SELECT a.id,a.contractno,a.receiptinfoid,a.incometypeid,a.incometypename,a.incomeamount,a.createtime,b.contractno,b.salerid,b.businessgroupid,b.businessgroupname,b.receiptid,b.customername,b.signcityname,b.salername from contract_receipt_detail as a LEFT JOIN contract_receipt_info as b on a.receiptinfoid=b.id WHERE a.createtime >= '2017-06-01' and a.createtime< '2017-07-01' AND a.isdel=0 AND a.`status` <>0 order by a.id asc;
内连接
#SELECT b.* from contract_receipt_info a INNER JOIN
#(SELECT incomecontractno from contract_order_paylog GROUP BY incomecontractno,incometypeid HAVING COUNT(1)=1) AS b
#on a.contractno = b.incomecontractno WHERE a.createtime>'2017-05-01' and a.createtime<'2017-06-01'
--子查询(表名1:a 表名2:b)
select a,b,c from a where a IN (select d from b ) 或者: select a,b,c from a where a IN (1,2,3)
局域网内如何连接MYSQL数据库
开放远程连接权限:grant [权限] on [database.table] to [用户名]@[IP] identified by [密码];
刷新权限:flush privileges;
例子:
grant all privileges on test.* to user@'%' identified by '1234';
意思是,test数据库的所有表对任意IP地址的user用户开放所有权限,登陆密码是1234