MySql基础笔记

第一章:数据库的设计
1.数据库设计的步骤
(1)需求分析阶段
搜集信息
标识实体
标识属性
标识关系
(2)概要设计
完善数据
绘制E-R图
(3)详细设计阶段
审核E-R图
绘制数据库模型图
(4)建库建表,写代码操作数据库


第二章:初识mysql
1.命令
登陆mysql:mysql -u root -proot;
建库:create database 数据库名;
显示所有数据库:show databases;
选择数据库:use 数据库名;
删除数据库:drop database 数据库名;
开启/关闭服务:net start/stop mysql;
建表:
create table 表名(
列明1 数据类型 [primary key not null default auto_increment unique]

)charset=latinl,engine=myisam,comment='测试表';
注意:
1.foreign key 必须写在列的后面;
2.auto_increment:可以指定任意的不重复的值,如果想让其自增长,要写null,不能不写。
2.两种储存引擎
默认:Innodb,支持事务,支持主外键,不支持索引
常用:myisam,不支持事务,不支持外键,支持索引


第三章:高级查询(一)
1.修改表:alter
改表名:alter table 原表名 rename 新表名:
添加字段:alter table 表名 add 字段名 数据类型[属性|约束];
修改字段:alter table 表名 change 原创名 新列明 类型[属性|约束]
删除字段:alter table 表名 drop 字段名
添加主键:alter table 表名 add constraint 键名 primary key(字段);
删除主键:alter table 表名 drop primary key;
添加外键:alter table 表名 constraint 外建明 foreign key(外键列)
references 主表(主键);
删除外键:alter table 表名 drop foreign key 外键名;
2.增加
create table 表名(
select 列明 from 表名;
);
3.查询
limit查询常用于分组
4.子查询
in,not in;
注意:用连接查询能解决的可以用子查询解决,但不建议;
用子查询能解决的,连接查询未必能解决;
用子查询的结果不能在父查询里面展示。


第五章 事物 视图 索引 备份和恢复
1.事物(保持数据的正确性)
开启事物:begin;
提交事物:commit;
回滚:rollback;
事物的四个舒心:原子性,一致性,隔离性,持久性
2.视图
创建:create view 视图名 as 查询语句;
查看:数据库information_schema有张views表
删除:drop view 视图名;
视图的作用:不同的人看不同的东西 数据的安全性,提高便捷性
视图的本质:虚拟表,查询语句
3.索引
创建:create index 索引名 on 表名(列明);
查看索引:show index from 表名
删除索引:drop index 索引名 on 表名
索引的作用:优化查询
4.备份和恢复
备份:mysqldump -u root -proot 数据库名[表名,表名]>文件名.sql
恢复:
mysql -u root -proot 数据库名<文件名.sql
第二种
先登录
mysql -u root -proot 在恢复:use 数据库 source 文件名
导出:
select * from.. into outfile 文件名.txt
导入:
load data infile 文件名.txt into table 表名;


第七章:JDBC
使用步骤:
1.准备工作:导入驱动包
2.加载驱动
Class.forName("com.mysql.jdbc.Driver");
3.获取链接
Conection conn = DriverManager.getConnection(url,"用户名","密码");
其中:url="jdbc:mysql://localhost:3306/数据库名";
4.发送语句
String sql = "查/增删改";
Statement stmt = conn.CreateStatement();
查询:ResultSet rs = stmt.executeQuery();
增删改:stmt.executeUpdate();
5.处理结果
rs:
while(rs.next(){
syso(rs.getInt("id")+rs.getString(2));
}
6.关闭资源
rs.close();//先开的后关
stmt.close();
补充:PreparedStatement:
好处:1.防注入
2.可以用占位符 ?
3.预编译sql,速度快
得到它:PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1,变量名).....
sql语句中有变量可以用。

猜你喜欢

转载自www.cnblogs.com/whyshi1995/p/9085073.html
今日推荐