SQL的概述
什么是SQL,下面是百度百科的介绍。
SQL的分类:
DDL:数据定义语言 (Database Definition Language)
create,drop,alter…
DCL:数据控制语言 (Database Controler Language)
grant,if…
DML:数据操纵语言 (Database Manipulate Language)
insert,update,delete…
DQL:数据查询语言 (Database Query Language)
select
SQL对数据库进行操作
创建数据库
语法:
create database 数据库名称 [character set 字符集 collate 字符集校对规则];
查看数据库
语法:
查看服务器所有的数据库:show databases;
查看某个数据库的定义信息:
show create database 数据库名称;
修改数据库
语法:
alter database 数据库名称 character set 字符集 collate 校对规则;
删除数据库
语法:
drop database 数据库名称;
其他数据库操作
* 切换数据库:
use 数据库名称;
* 查看当前正在使用的数据库:
select database();
SQL对数据库表进行操作
SQL创建表
* 语法:
* create table 表名称(字段名称 字段类型(长度) 约束,字段名称 字段类型(长度) 约束…);
* 字段类型
* 一个实体对应一个表,一个实体属性对应表的一个字段。
类型比较
Java中的类型
- byte/short/int/long
- float
- double
- boolean
- char/String
- Date
- File
MySQL中的类型 - tinyint/smallint/int/bigint (tiny:极小的)
- float
- double
- bit (用一位bit来表示)
- char和varchar类型
- date/time/datetime/timestamp
- BLOB/TEXT (BLOB:binary large language 二进制大对象)
char和varchar的区别:
- char代表是固定长度的字符或字符串。
- 定义类型char(8),向这个字段存入字符串hello,那么数据库使用三个空格将其补全。
- varchar代表的是可变长度的字符串。
- 定义类型varchar(8), 向这个字段存入字符串hello,那么存入到数据库的就是hello。
datetime和timestamp区别
- datetime就是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用null存入到数据库中
- timestamp也是既有日期又有时间的日期类型,如果没有向这个字段中存值,数据库使用当前的系统时间存入到数据库中。
约束
- 约束作用:保证数据的完整性
- 单表约束分类:
- 主键约束:primary key 主键约束默认就是唯一 非空的
- 唯一约束:unique
- 非空约束:not null
SQL查看表
-
查看某个数据库下的所有的表
- 语法:show tables;
-
查看某个表的结构信息
-
语法:desc 表名;
SQL删除表- 删除表
- 语法:drop table 表名;
- 删除表
-
SQL修改表
- 修改表:添加列
- alter table 表名 add 列名 类型(长度) 约束;
- 修改表:修改列类型,长度和约束
- alter table 表名 modify 列名 类型(长度) 约束;
- alter table 表名 modify 列名 类型(长度) 约束;
- 修改表:删除列
- alter table 表名 drop 列名;
- alter table 表名 drop 列名;
- 修改表:修改列名称
- alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- alter table 表名 change 旧列名 新列名 类型(长度) 约束;
- 修改表:修改表名
- rename table 表名 to 新的表名;
- rename table 表名 to 新的表名;
- 修改表:修改表的字符集
- alter table 表名 character set 字符集;
- alter table 表名 character set 字符集;
- alter table 表名 add 列名 类型(长度) 约束;
SQL对数据库表的记录进行操作(重点)
SQL添加表的记录
- 语法:
- 向表中插入某些列:insert into 表名 (列名1,列名2,列名3…) values (值1,值2,值3…)
- 向表中插入所有列:insert into 表名 values (值1,值2,值3…);
- 注意事项
- 1.值的类型与数据库中表列的类型一致。
- 2.值的顺序与数据库中表列的顺序一致。
- 3.值的最大长度不能超过列设置最大长度。
- 4.值的类型是字符串或者是日期类型,使用单引号引起来。
添加记录
- 添加某几列
insert into user (id,username,password) values (null,'aaa','123');
- 添加所有列
insert into user values (null,'bbb','123',23,'1993-09-01');
- 添加中文记录
insert into user values (null,'张三','123',23,'1993-09-01');
注意:
直接向数据库中插入中文记录会出现错误!!!
解决方法:
show variables like '%character%'; --查看数据库中与字符集相关参数:
需要将MySQL数据库服务器中的客户端部分的字符集改为gbk。
找到MySQL的安装路径:my.ini文件,修改文件中[client]下的字符集
-
重新启动MySQL的服务器
services.msc
SQL修改表的记录
-
语法:
- update 表名 set 列名=值,列名=值 [where 条件];
-
注意事项
- 1.值的类型与列的类型一致。
- 2.值的最大长度不能超过列设置的最大长度。
- 3.字符串类型和日期类型添加单引号。
-
修改某一列的所有值
update user set password = 'abc';
- 按条件修改数据
update user set password = 'xyz' where username = 'bbb';
- 按条件修改多个列
update user set password='123',age=34 where username='aaa';
SQL删除表的记录
-
语法:
- delete from 表名 [where 条件];
-
注意事项
- 1.删除表的记录,指的是删除表中的一行记录。
- 2.删除如果没有条件,默认是删除表中的所有记录。
-
删除某一条记录
delete from user where id = 2;
- 删除表中的所有记录
delete from user;
- 删除表中的记录有两种做法:
- delete from user;
- 删除所有记录,属于DML语句,一条记录一条记录删除。事务可以作用在DML语句上的
- truncate table user;
- 删除所有记录,属于DDL语句,将表删除,然后重新创建一个结构一样的表。事务不能控制DDL