本帖最后由 王高飞 于 2019-3-8 09:13 编辑
SQL语句:官方语言,结构化查询语言 任何的数据库都支持的
数据库是不认识JAVA语言的,但是我们同样要与数据库交互,这时需要使用到数据库认识的语言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,from,where等
SQL通用语法:
SQL语句可以单行或多行书写,以分号结尾
可使用空格和缩进来增强语句的可读性
MySQL数据库的 SQL语句(内容区分) 不区分大小写,关键字建议使用大写 例如:SELECT * FROM user(user区分)。
同样可以使用/* */或#或-- 的方式完成注释
DDL数据定义语言:
数据库操作(对库database的操作):
[Java] 纯文本查看 复制代码
创建数据库:增
create database 数据库名;
create database 数据库名 character set utf8 //创建数据库并同时指定编码集 mysql数据库在安装的时候已经选择默认码表utf-8
查看数据库:查
show databases; // 查看数据库MySQL服务器中的所有的数据库
show create database 数据库名; // 查看某个数据库的定义的信息:
删除数据库:删
drop database 数据库名称;
使用数据库:
select database(); // 查看正在使用的数据库
use 数据库名; // 切换数据库
修改数据库编码集:改
alter database 数据库名 charset 字符集;//修改编码集
表操作(对表table的操作):创建表前 先切换到指定数据库,表结构操作:alter,drop,show
创建表:
create table 表名(
字段名 类型(最大长度) [约束], //int date varchar double numeric(m,d)timestamp:时间戳,字符型的写长度。其他没必要写
字段名 类型(最大长度) [约束], // decimal(m,d)或numeric(m,d):压缩成m位(不包含小数点一共) d位小数 如果输入超出显示其能显示的最大值
字段名 类型(最大长度) [约束] //varchar必须写长度,其他可以不写 最后一个字段不加逗号
);
查看表:
show tables; //查看数据库中的所有表
desc 表名; // 查看表结构
删除表:
drop table 表名;
修改表结构: alter
alter table 表名 操作关键字 操作语句;
添加列(字段) +add address varchar(40);
修改列: +modify adress varchar(50);//40改成50
替换列: +change 旧的列 新的列 类型;
删除列: +drop column 列名;
修改表编码:
alter table 表名 charset 字符集;//修改编码集
更换表名:( 库名不能更换)
rename table 旧名 to 新名
DML数据操作语言:
[Java] 纯文本查看 复制代码
插入表记录:insert 向表中插入字段 表中记录操作 insert ,update ,delete //日期 :年-月-日
insert into 表名 (字段1,字段2,字段3..) values (值1,值2,值3..); //向表中插入某些字段 字段值一一对应 字符串型日期型单引号
insert into 表名 (字段1,字段2)values (值1,值2)//可以为部分字段赋值 不赋值的默认为空
insert into 表名 values (值1,值2,值3..); //向表中插入所有字段,字段的顺序为创建表时的顺序 每个字段必须给值
注意:值与字段必须对应,个数相同,类型相同
值的数据大小必须在字段的长度范围内
除了数值类型外,其它的字段类型的值必须使用引号引起。(建议单引号)
如果要插入空值,可以不写字段,或者插入 null。
自动增长列如果插入为null会自动增长,
但是如果写明插入值后就会按照写的值,接下来的值会自动增长
更新表记录:update
update 表名 set 字段名=值,字段名=值,...; //更新所有记录的指定字段
update 表名 set 字段名=值,字段名=值,... where 条件; // 更新符合条件记录的指定字段
注意:列名的类型与修改的值要一致.
修改值得时候不能超过最大长度.
除了数值类型外,其它的字段类型的值必须使用引号引起
删除表记录:delete
条件删除表中记录使用 delete from 表名 where 条件; //删除符合条件的那条记录
Delete delete from 表名 删除表中的所有数据,但不重置auto-increment记录数,保留了自动增长记录数。
Truncate truncate table 表名 删除表中的所有数据,Truncate其实先删除整个表 然后再创建表,auto-increment记录数从1开始
截断表可以用于删除表中的所有数据。截断表命令还会回收所有索引的分配页。截断表的执行速度与不带where子句的delete(删除)命令相同,甚至比它还要快。delete(删除)一次删除一行数据,并且将每一行被删除的数据都作为一个事务记录日志;而truncate (截断)表则回收整个数据页,只记录很少的日志项。delete(删除)和truncate(截断)都会回收被数据占用的空间,以及相关的索引。只有表的拥有者可以截断表。
另外,truncate表之后,如果有自动主键的话,会恢复成默认值。
|