目录
具体主键约束的字段通常可以搭配自增使用AUTO_INCREMENT
数据库与数据库管理系统
数据库DataBase
保存一组数据的地方就称为一个数据库,比如我们创建一个目录,在目录中创建若干的文件,每个文件都是一组数据,那么这个目录就可以称为一个数据库。
只是针对这些文件上的数据维护要么手动,要么我们需要编写java代码进行维护,此时维护的通用性差,效率差,维护的复杂度高。
数据库管理系统DBMS
它是一个独立的软件,用于维护磁盘上的数据。操作便捷,通用性高。
常见的DBMS:Mysql、Oracle、DB2、SQLServer
在java项目中与数据库管理系统的关系
数据库管理系统中的常见概念
库与表的概念
库:可以叫数据库,每个数据库中可以包含若干张表。
实际应用中每一个项目在数据库管理系统中都可以创建一个数据库,然后在这个数据库中创建若干张表来保存不同的数据。
表:表的结构由行和列构成,用于保存一组数据
表中的行称为记录,列称为字段
列:用于表示一条记录中有多少个属性
行:保存着一组属性的一条记录
如何操作数据库
所有的数据库DBMS都支持使用SQL语句进行操作。
所有DBMS都支持SQL92标注
该标准中不是所有的数据库操作都有语法级定义
很多操作不同的数据库就会各自定义对应的语法
SQL92标准相当于是"普通话",而各自定义的语法相当于"方言"
SQL的全称:Structured Query Language 翻译:结构化查询语言
连接数据库的方式
命令行形式
图形化界面(第一方或第三方提供的独立软件)
IDEA中操作
JDBC(java数据库连接),直接用java程序进行数据库连接与交互
SQL分类
DDL数据定义语言
DML数据操作语言
DQL数据查询语言
DCL数据控制语言
TCL事务控制语言
DDL语言
数据定义语言,是针对数据库对象进行操作的语言
关键字:CREATE,DROP,ALTER
SHOW DATABASES
查看当前DBMS中已经创建的数据库
数据库操作
新建一个数据库
CREATE DATABASE 数据库名 [CHARSET=字符集名称]
创建一个名为mydb的数据库
CREATE DATABASE mydb
注:SQL语句中是不区分大小写的,但是建议关键字全大写,其他全小写
创建数据库时指定字符集
CREATE DATABASE mydb1 CHARSET = UTF8;
CREATE DATABASE mydb2 CHARSET = GBK;
查看数据库创建信息
SHOW CREATE DATABASE 数据库名
SHOW CREATE DATABASE mydb;
删除数据库
DROP DATABASE 数据库名
DROP DATABASE mydb;
切换数据库
将来可以针对某个数据库进行相关的操作,因此就会存在切换数据库操作
USE 数据库名
USE mydb1;
表的操作
创建表
CREATE TABLE 表名(
字段1名 类型 [默认值,约束条件],
字段2名 类型 [默认值,约束条件],
....
)
CREATE DATABASE mydb; 先创建一个数据库mydb
USE mydb; 切换到mydb数据库
下面创建表时,都是创建到mydb这个库中
CREATE TABLE user(
id INT, 在MySQL中整数类型为int
username VARCHAR(30), VARCHAR为变长字符串,指定长度为字节,30表示该
password VARCHAR(30), 字符串转换为字节后最多存30字节(UTF8编码中文10字)
age INT(3) int若指定长度为整数的位数
)
查看表结构
DESC 表名
DESC user;
查看创建表的详细信息
SHOW CREATE TABLE 表名
SHOW CREATE TABLE user;
查看当前数据库中已创建的表
SHOW TABLES;
修改表名
RENAME TABLE 原表名 TO 新表名
将user表改名为userinfo
RENAME TABLE user TO userinfo
删除表
DROP TABLE 表名
DROP TABLE userinfo;
修改表
CREATE TABLE hero(
name VARCHAR(30),
age INT(3)
)
添加字段
在表的末尾追加新的字段
ALTER TABLE 表名 ADD 字段名 类型
向表中追加性别字段
ALTER TABLE hero ADD gender VARCHAR(10);
在表的最开始插入新字段
ALTER TABLE 表名 ADD 字段名 类型 FIRST
ALTER TABLE hero ADD id INT FIRST;
在表中插入字段
将指定的字段放在表中某字段的后面
ALTER TABLE 表名 ADD 字段名 类型 AFTER 表中某字段
在名字后面追加密码字段
ALTER TABLE hero ADD pwd VARCHAR(30) AFTER name
删除字段
ALTER TABLE 表名 DROP 字段名
删除hero表中的pwd字段
ALTER TABLE hero DROP pwd;
修改字段
ALTER TABLE 表名 CHANGE 原字段名 新字段名 类型
将hero表中年龄字段的长度改为5
ALTER TABLE hero CHANGE age age INT(5)
将hero表中gender字段改名为pwd并且类型为VARCHAR(30)
ALTER TABLE hero CHANGE gender pwd VARCHAR(30)
注意事项:
修改字段时,如果表中已经包含数据:
当修改字段类型的长度时,应当只增不减,由于原字段某记录的值长度缩小了会导致修改失败。
当修改字段类型时,尽量不进行。例如将name字段改为int型。"张三"怎么改成int??
DML数据操作语句
对表中记录进行操作的语言
关键字:INSERT,UPDATE,DELETE
准备一张表
CREATE TABLE person(
name VARCHAR(30),
age INT(3)
)
插入数据(INSERT语句)
INSERT INTO 表名 [(字段1,字段2,.....)] VALUES (字段值1,字段值2,.....)
INSERT INTO person (name ,age) VALUES ('张三',18)
INSERT INTO person (age,name) VALUES (20,'李四')
注:数据库中,字符串得字面量使用单引号,并且字符串得内容是区分大小写的
插入数据时指定的字段的顺序可以与表不同,但是VALUES后面指定的值必须与指定的字段顺序、类型、个数一致。
插入默认值
当插入数据时,某个字段不指定时,则会插入默认值,当表中该字段没有明确指定默认值是,字段默认值为NULL
INSERT INTO person (name) VALUES ('王五')
没有指定age,则该条记录插入后age字段的值为null
默认值的指定
注:这属于DDL语句的范畴,使用DEFAULT指定默认值
创建表时
CREATE TABLE person(
name VARCHAR(30) DEFAULT '无名氏',
age INT(3)
)
修改表时
ALTER TABLE person CHANGE age age INT(3) DEFAULT 18;
修改后,age字段的默认值为18
INSERT INTO person (name) VALUES ('赵六');
插入数据后,赵六的年龄为18(默认值)
全列插入
当不指定字段名时,则为全列插入,此时VALUES后面指定的值得顺序,类型,个数必须与表结构一致。
INSERT INTO person VALUES ('钱七',25)
年龄插入默认值:使用DEFAULT关键字代替值
INSERT INTO person VALUES ('孙八',DEFAULT)
插入NULL值:使用NULL关键字代替值
INSERT INTO person VALUES ('周九',NULL)
错误示范:
INSERT INTO person VALUES ('老十') 列对应值得个数不匹配
INSERT INTO person VALUES(22,'老十') 列对应的值类型不匹配(第一列应是名字
VARCHAR类型)
修改数据(UPDATE语句)
UPDATE 表名 SET 字段1名=字段1值[,字段2名=字段2值,.....]
[WHERE 过滤条件]
UPDATE person SET age=40
上述SQL执行后person表中每条记录的age字段值都会被改为40!
WHERE字句在UPDATE中的使用
通常修改表中数据时,要在UPDATE语句中添加WHERE字句,WHERE字句的作用是添加过滤条件用于帅选要修改的记录。
字句:在SQL中一个关键字后面搭配一些内容,这个就是一个字句
将张三的年龄改为20岁
UPDATE person SET age&