Java数据库 1.3 SQL 语句
概述
数据库是不认识 Java 语言的, 但是我们同样要与数据库交互. 这时需要使用到数据库认识的语言 SQL 语句, 它是数据库的代码.
结构化查询语言 (Structured Query Language) 简称 SQL, 是关系型数据库管理系统都需要遵循的规范. 不同是数据库生产的厂商都支持 SQL 语句, 但都有特有内容.
SQL 语句分类
- 数据定义语言: 简称 DDL (Data Definition Language). 用来定义数据库对象: 数据库, 表, 列等. 关键字: create, alter, drop 等
- 数据操作语言: 简称 DML (Data Manipulation Language). 用来对数据库中表的记录进行更新. 关键字: insert, delete, update 等
- 数据控制语言: 简称 DCL (Data Control Language). 用来定义数据库的访问权限和安全级别, 以及创建用户
- 数据查询语言: 简称 DQL (Data Query Language). 用来查询数据库中表的记录. 关键字: select, form, where 等
SQL 通用语法
- SQL 语句可以单行或者多行书写, 以分号结尾
- 可以用空格和缩进来增强语句的可读性
- MySQL 数据库的 SQL 语句不区分大小写, 关键字建议使用大写 (SELECT*FROM user)
- 同样可以使用 /**/ 的方式完成注释
MySQL 中我们常使用的数据类型如下:
类型名称 | 说明 |
---|---|
int (integar) | 整数 |
double | 小数类型 |
decimal (m,d) | 指定整数位与小数为长度的小数类型 |
date | 日期类型, 格式为 yyyy-MM-dd, 包含年月日, 不包含时分秒 |
datetime | 日期类型, 格式为 YYYY-MM-DD HH:MM:SS, 包含年月日分秒 |
timestamp | 日期类型, 时间戳 |
varchar (M) | 文本类型, M 为 0~65535 之间的整数 |
DDL 之数据库操作: database
1. 创建数据库
2. 使用数据库
3. 查看某个数据库的定义的信息
4. 查看所有数据库
5. 查看正在使用的数据库
6. 删除数据库
- 1
- 2
- 3
- 4
- 5
- 6
例如:
#创建数据库 数据库中数据的编码采用的是安装数据库时指定的默认编码 utf8
CREATE DATABASE webdb_1;
#创建数据库 并指定数据库中数据的编码
CREATE DATABASE webdb_2 CHARACTER SET utf8;
- 1
- 2
- 3
- 4
执行结果:
查看数据库
查看数据库 MySQL 服务器中的所有的数据库:
show databases;
- 1
执行结果:
查看某个数据库的定义的信息:
show create database 数据库名;
例如:
show create database webdb_1;
- 1
- 2
- 3
- 4
执行结果:
删除数据库
drop database 数据库名称;
例如:
drop database webdb_1;
- 1
- 2
- 3
- 4
执行结果:
使用数据库
查看正在使用的数据库:
select database();
- 1
切换数据库操作命令:
use 数据库名;
例如:
use webdb_1;
- 1
- 2
- 3
- 4
DDL 之表操作: table
1.创建数据库表
创建分类表category
id name
2.设置自动增长从多少开始
ALTER TABLE category AUTO_INCREMENT=200;
- 1
- 2
- 3
- 4
- 5
创建表
格式:
create table 表名(
字段名 类型(长度) [约束],
字段名 类型(长度) [约束],
...
);
类型:
varchar(n) 字符串
int 整形
double 浮点
date 时间
timestamp 时间戳
约束:(详情查看第四章)
primary key 主键, 被主键修饰字段中的数据, 不能重复, 不能为 null
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
例如, 创建分类表:
CREATE TABLE category (
cid INT primary key, #分类ID
cname VARCHAR(100) #分类名称
);
- 1
- 2
- 3
- 4
执行结果:
查看表
查看数据库中所有表:
格式: show tables;
- 1
查看表结构:
格式: desc 表名;
例如:
desc category;
- 1
- 2
- 3
- 4
执行结果:
删除表
格式:
drop table 表名;
例如:
drop table category;
- 1
- 2
- 3
- 4
执行结果:
修改表结构格式
修改表添加列, 格式:
alter table 表名 add 列名 类型(长度) [约束];
- 1
修改表添加列:
ALTER TABLE category ADD `desc` VARCHAR(20);
为分类表添加一个新的字段为 分类描述 varchar(20)
- 1
- 2
修改表列的类型长度及约束:
ALTER TABLE category MODIFY `desc` VARCHAR(50) NOT NULL;
为分类表的描述字段进行修改,类型varchar(50) 添加约束 not null
- 1
- 2
修改表列名:
ALTER TABLE category CHANGE `desc` description VARCHAR(30);
为分类表的分类名称字段进行更换 更换为 description varchar(30)
- 1
- 2
修改删除列:
ALTER TABLE category DROP description;
删除分类表中description这列
- 1
- 2
修改表名:
RENAME TABLE category TO category2;
为分类表category 改名成 category2
- 1
- 2
修改表的字符集:
ALTER TABLE category CHARACTER SET gbk;
为分类表 category 的编码表进行修改, 修改成 gbk
- 1
- 2
DML 数据操作语言
插入表记录: insert
语法:
-- 向表中插入某些字段
insert into 表 (字段1,字段2,字段3..) values (值1,值2,值3..);
-- 向表中插入所有字段,字段的顺序为创建表时的顺序
insert into 表 values (值1,值2,值3..);
- 1
- 2
- 3
- 4
注意:
- 值与字段必须对应, 个数相同, 类型相同
- 值的数据大小必须在字段的长度范围内
- 除了数值类型外, 其它的字段类型的值必须使用引号 (建议单引号)
- 如果要插入空值, 可以不写字段, 或者插入 null
例如:
INSERT INTO category(cid,cname) VALUES('c001','电器');
INSERT INTO category(cid,cname) VALUES('c002','服饰');
INSERT INTO category(cid,cname) VALUES('c003','化妆品');
INSERT INTO category(cid,cname) VALUES('c004','书籍');
INSERT INTO category(cid) VALUES('c005');
INSERT INTO category(cname,cid) VALUES('耗材','c006');
- 1
- 2
- 3
- 4
- 5
- 6
更新表记录: update
用来修改指定条件的数据, 将满足条件的记录指定列修改为指定值.
更新所有记录的指定字段:
update 表名 set 字段名=值,字段名=值,...;
- 1
更新符合条件记录的指定字段:
update 表名 set 字段名=值,字段名=值,... where 条件;
- 1
注意:
- 列名的类型与修改的值要一致
- 修改值得时候不能超过最大长度
- 除了数值类型外, 其它的字段类型的值必须使用引号引起
删除记录: delete
语法:
delete from 表名 [where 条件];
- 1
DOS 操作数据乱码解决
我们在 dos 命令行操作中文时, 会报错:
insert into category(cid,cname) values(‘c010’,’中文’);
ERROR 1366 (HY000): Incorrect string value: '\xB7\xFE\xD7\xB0' for column 'cname' at
row 1
- 1
- 2
- 3
错误原因: 因为 MySQL 的客户端设置编码是 utf-8, 而系统的 cmd 窗口编码是 gbk.
在 cmd 命令窗口输入命令, 此操作当前窗口有效, 为临时解决方案.
set names gbk;
- 1
文章来源: iamarookie.blog.csdn.net,作者:我是小白呀,版权归原作者所有,如需转载,请联系作者。
原文链接:iamarookie.blog.csdn.net/article/details/112556963
- 点赞
- 收藏
- 关注作者
评论(0)