mysql学习

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

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值