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命令
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);[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(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)]
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, 是一个具体的值,也可以是一个变量
条件,筛选的条件,如果么没有指定,则会修改所有的列
多个设置的属性之间,使用英文逗号隔开
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`)); } } }