1.MySql
连接数据库
mysql -uroot -p123456 --连接数据库
update mysql.user set authentication_string=password('123456') where user='root' and Host = 'kocalhost'; --修改用户密码
flush privileges; --刷新限权
---------------------------------------------------
-- 所有的语句都使用;结尾
show databases; --看所有的数据库
mysql> use school -- 切换数据库use数据库名
Database changed
show tables; -- 查看数据库中所有表
describe student; -- 显示数据库中所有表的信息
creat database westos; -- 创建一个数据库
exit; -- 退出连接
-- 单行注释(SQL的本来的注释;)
/* (sql的多行注释
helloi
asdas
*/
操作数据库
1、创建数据库
CREATE DATEBASE [IF NOT EXISTS] westos;
2、删除数据库
DROP DATABASE [IF EXISTS] westos;
3、使用数据库
-- 如果表名或者字段是一个特殊字符,需要带上 `
USE `school`;
4、查看数据库
SHOW DATABASE; -- 查看所有的数据库
数据库的列类型
数值
tinyint 十分小的数据 1
smallint 较小的数据 2
mediumint 中等大小的数据 3
int 标准的整数 4 常用的
bigint 较大的整数 8
float 浮点数 4
double 浮点数 8
decimal 字符串形式的浮点数 金融计算时,一般用decimal
字符串
char 字符串固定大小的 0~255
**varchar 可变字符串 0~65535 ** 常用的变量 String
tinytest 微型文本 2^8-1
**text 文本串 2^16-1 ** 保存大文本
时间日期
java.util.Date
date 日期格式 YYYY-MM-DD
time 时间格式 HH: mm: ss
datetime 最常用的时间格式 YYYY-MM-DD HH : mm : ss
**timestamp 时间戳 1970.1.1到现在的毫秒数! **
year 年份表示
null
没有值,未知
注意: 不要使用NULL进行运算结果为NUILL
数据库的字段属性
Unsigned:
无符号的整数
声明了该列不能声明为负数
zerofill:
0填充的
不足的位数,使用0来填充,int(3) , 5—005
自增:
自动在上一条记录的基础上 + 1(默认)
通常用来设计唯一的主键~ index,必须是整数类型
可以自定义设计主键自增的起始值和步长
非空: NULL not null
假设设置为 not null ,如果不给他赋值,就会报错
NUILL , 如果不填写值,默认就是null
默认:
设置默认的值
sex, 默认值为男,如果不指定该列的值,则会有默认的值
SQL
常用的SQL命令
- CREAT – 定义基本表
CREAT TABLE <表名>(<列名><数据类型>,……)
实例: 建立一个”学生表”,它由学号Sno、姓名Sname、性别Ssex、年龄Sage、所在系Sdept 5个属性组成
CREAT TABLE Student (Sno CHAR(5) NOT NULL UNIQUE,Sname CHAR(20),Ssex CHAR(1),Sage INT,Sage INT,Sdept CHAR(15));
- SELECT – 查询,取出特定记录
SELECT[DISTINCT|ALL]<目标列表达式>,<目标列表达式>……FROM <表名>[,<表明>]……
[WHERE<条件表达式>]
[GROUP BY<列名1>[HAVING<条件表达式>]]
[ORDER BY <列名2>[ASC|DESC]]
选取所有的列使用符号 * :SELECT * FROM <表名>
- WHERE 子句
SELECT 列名称 FROM 表名称 WHERE 列 运算符 值
SELECT * FROM Persons WHERE City='’'Beijing'
-- 在Persons表的所有列中查找Being
SELECT * FROM Persons WHERE FirstName = 'Thomas' AND LastName = 'Carter'
-- 使用AND来显示所有姓为“Carters” 并且名为“Thomas”的人
SELECT * FROM Persons WHERE FirstName = 'Thomas' OR LastName = 'Carter'
-- 使用OR来显示所有姓为“Carters” 或者名为“Thomas”的人
- INSERT语句
INSERT – 添加一条新记录
格式:
INSERT INTO 表名称 VALUES(值1,值2,……)
INSERT INTO table_name (列1,列2,……) VALUES(值1,值2,……)
例如:将一个新学生记录(学号:95020;姓名:陈轩仔;性别:男;所在系:计算机;年龄:19),插入Student中
INSERT INTO Student VALUES('95020','陈轩仔','男','计算机','19')
- UPDATE语句
UPDATE – 数据更新,改变特定记录的值
格式: UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值
例如: 将学生85001的年龄增加1
UPDATE Student SET Sage = Sage + 1 WHERE Sno = 95001
- DELETE语句
DELETE – 删除特定的记录
格式: DELETE FROM <表名> WHERE <条件>
例如: 删除计算机系所有学生的选课记录
DELETE FROM SC WHERE 'CS' = (SELECT Sdep FROM Student WHERE Student.Sno = SC.Sno);
2.JDBC连接数据库
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5lkV4g8-1602066940201)(C:\Users\13088\AppData\Roaming\Typora\typora-user-images\image-20201001180408463.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4QhF8sjJ-1602066940205)(C:\Users\13088\AppData\Roaming\Typora\typora-user-images\image-20201001180426929.png)]
3.DML语言
1.INSERT
--插入语句
--insert into 表名([字段名1,字段2,字段3,……])values('值1'),('值2'),……
INSERT INTO `grade`(`gradename`) VALUES('大四')
-- 数据和字段要一一对应
-- 插入多个字段
INSERT INTO `grade` VALUES (`gradename`)
VALUES('大一'),('大二')
2.UPDATE
update 修改谁 (条件) set 原来的值 = 新值
-- 修改学员名字
UPDATE `student` SET `name` = 'qwer' where id = 1;
-- 如果不指定条件,会改动所有的表
UPDATE `student` SET `name` = 'dddddd'
-- 语法:
-- UPDATE 表名 set colnum_name = value,[colnum_name = value,……] where [条件]
where 子句 运算符 id = 某个值 ,大于某个值,在某个区间内修改……
-
操作符会返回布尔值
-
colum_name 是数据库的列,尽量带上 ``
-
value, 是一个具体的值,也可以是一个变量
-
条件,筛选的条件,如果么没有指定,则会修改所有的列
-
多个设置的属性之间,使用英文逗号隔开
3.DELETE 与 TRUNCATE
DELETE FROM `student`
-- 删除指定数据
DELETE FROM `student` WHERE id = 1;
-- TRUNCATE 完全清空一个数据库,表的结果和索引约束不会变
-- 清空 student 表
TRUNCATE `student`
4. DQL查询数据
1. 指定查询字段
-- 查询全部的学生 SELECT 字段 FROM 表
SELECT * FROM student
-- 查询指定字段
SELECT `name`,`age` FROM student
-- 别名,给结果起一个名字 AS 可以给字段起别名,也可以给表起别名
SELECT `name` AS 姓名,`age` AS 年龄 FROM student AS s
-- SELECT 字段 ,…… FROM 表
5.PrepaerdStatement对象
PreparedStatement可以防止SQL注入,效率更高!
1、新增
public class TestInsert{
public static void main(String[] args){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
//使用 ? 占位符代替参数
String sql = "insert users (id,`name`,`age`) values (?,?,?)";
st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行
//手动给参数赋值
st.setInt(1,4);//id
st.setString(2,"陈宇轩");
st.setString(3,"33");
//注意点:sql.Date 数据库 java.sql.Date();
// util.Date Java new Date().getTime() 获得时间戳
st.setDate(5,new java.sql.Date(new Date().getTime()));
//执行
int i = st.executeUpdate();
if(i>0){
System.out.println("插入成功!");
}
}
}
2、删除
public class TestInsert{
public static void main(String[] args){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
//使用 ? 占位符代替参数
String sql = "delete from users where id=?";
st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行
//手动给参数赋值
st.setInt(1,4);//id
//注意点:sql.Date 数据库 java.sql.Date();
// util.Date Java new Date().getTime() 获得时间戳
st.setDate(5,new java.sql.Date(new Date().getTime()));
//执行
int i = st.executeUpdate();
if(i>0){
System.out.println("删除成功!")
}
}
}
3、更新
public class TestInsert{
public static void main(String[] args){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
//使用 ? 占位符代替参数
String sql = "update users set `name` = ? where id = ?";
st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行
//手动给参数赋值
st.setInt(1,4);//id
st.setString(2,"陈宇轩");
st.setString(3,"33");
//注意点:sql.Date 数据库 java.sql.Date();
// util.Date Java new Date().getTime() 获得时间戳
st.setDate(5,new java.sql.Date(new Date().getTime()));
//执行
int i = st.executeUpdate();
if(i>0){
System.out.println("更新成功!")
}
}
}
4、查询
public class TestInsert{
public static void main(String[] args){
Connection con = null;
PreparedStatement st = null;
ResultSet rs = null;
//使用 ? 占位符代替参数
String sql = "select * form users where id = ?";
st = con.prepareStatement(sql);//预编译SQL,先写sql,然后不执行
st.setInt(1,2);
//注意点:sql.Date 数据库 java.sql.Date();
// util.Date Java new Date().getTime() 获得时间戳
st.setDate(5,new java.sql.Date(new Date().getTime()));
//执行
rs = st.executeQuery();
if(rs.next()){
System.out.println(rs.getString(`name`));
}
}
}