1、启动服务
net stop mysql
net start mysql
2、配置mysql.ini:
port默认为3306
编码:
client:default-character-set=gbk
mysqld:character-set-server=utf-8
数据的大小:
mysqld:max-allowed-packet=8M
登录:
mysql -uroot -p123456 -hlocalhost
退出:
exit\quit
3、sql语言
DDL:数据定义,表、库创建修改删除
DML:数据操作,增删改查
DCL:数据控制,权限与级别
DQL: 查询
4、DDL数据定义语言:表库的创建、修改、删除
show databases;
use dbname;
create database if not exist mydb charset=utf-8;
drop database if exist mydb;
alter database mydb character set utf-8;
5、数据类型
bigint
double(5,2):五位数,2为小数
decimal:
varchar:单独一个字节存长度
text:字符串
blob:字节类型(二进制)
date->yyyy-mm-dd->java.sql.Date
time:hh:mm:ss
timestamp:时间戳
6、表操作
create table if not exist mytbl();
show tables;
show create table mytbl;
desc table mytbl;
drop table mytbl;
7、修改表
添加列:
alter table mytbl add(name1 type1,name2 type2)
修改列类型:
alter table mytbl modify name type;
修改列名:
alter table mytbl change oldname newname type;
删除列:
alter table mytbl drop name;
修改表名称:
alter table oldname rename to newname
8、DML数据操作
insert into mytbl(name1,name2)values(value1,value2)
insert into mytbl values(全字段)
update mytbl set name=value;
delete from mytbl where ..;
truncate table mytbl:先drop表再创建表
9、DCL权限
创建用户:
create user username@ip/localhost identified by 'pwd';
create user username@'%' identified by 'pwd';
用户授权:
grant 权限 on dbname.* to username@ip
grant all on dbname.* to suername@ip
撤销权限:
revoke 权限 on dbname.* from username@ip
查看权限:
show grants for username@ip
删除用户:
drop user username@ip
10、DQL查询
select sal*2 from emp;
select concat("我",name);
11、主键\外键设置
alter table mytbl add primary key(sid);
alter table mytbl drop primary key;
auto_increment\not null\unique
constraint fk_emp_dept foreign key(did) references dept(id);
12、多表关联查询
* 合并结果
select * from a
union all
select * from b;
* 连接查询
内连接:
select * from tb1,tb2 where tb1.name=tb2.name;方言
select * from tbl inner join tb2 on tb1.name=tb2.name;标准
select * from tbl natural join tb2;自然连接
外连接:主表都打印,副表满足条件打印
左外、右外、全外
select * from tb1 left outer join tb2 on tb1.name=tb2.name;
子查询:
位置:
where后作为条件
from 作为表存在
* 类型:根据结果划分
单行单行、单列多行
13、preparedStatement:
校验sql、编译、执行
14、date
java.util.Date:sql.Date的父类,
java.sql.Date:
java.util.Date d=new java.util.Date();
long l=d.getTime();
sql.Date date=new java.sql.Date(l);
15、事务
start transaction
commit
rollback
con.setAutoCommit(false);
con.commit();
con.rollback();
16、隔离级别
串行化:最高
可重复读:防止脏读、不可重复读
读已提交:
读未提交:
17、并发
脏读:读取到另一个事务未提交的数据
不可重复读:2次读取的不一致,另一个事务修改
幻读:2次查询不一致,插入新记录
18、ThreadLocal:
存储每个线程的副本
多线程互不干扰
19、表约束:
主键
唯一键
外键:
作用:
维护关联表字段的一致性
消耗DB资源
内部加锁导致死锁
外键存在:
用户并发量大,并发度高,不易水平扩展
一致性放到事务中,服务器承担压力
减小数据库的压力,不用外键保持一致性
主键:
逻辑主键:无意义的id,如uuid、自增、GUID
业务主键:唯一性的字段作为主键