1、SQL语句是什么?

SQL语句:Structured Query Language结构化查询语言。SQL语句不依赖于任何平台,对所有的数据库是通用的。学会了SQL语句的使用,可以在任何的数据库使用。

SQL语句是一个非过程性的语言,每一条SQL执行完都会有一个具体的结果出现。

比如前面学习的Java等语言属于过程性语言,在其中可以定义变量等完成复杂的运算。而SQL语句本身是不支持这些的,但是不同的数据库厂商针对自己数据库的特点在原有的SQL语句上进行的增强。比如 Sqlserver中的T-SQL、Oracle中的PL/SQL等可以编写复杂的SQL语句。

SQL语句:操作数据库,数据表,数据表中的数据记录。

SQL是用来存取关系数据库的语言,具有查询、操纵、定义和控制关系型数据库的功能。

2、SQL分类

DDL (数据定义问题)

数据定义语言 - Data Definition Language
用来定义数据库的对象,如数据表、视图、索引等

DML (数据操纵问题)

数据处理语言 - Data Manipulation Language
在数据库表中更新,增加和删除记录
如 update, insert, delete

DCL (数据控制问题)

数据控制语言 – Data Control Language
指用于设置用户权限和控制事务语句
如grant,revoke,if…else,while,begin transaction

DQL (数据查询问题)

数据查询语言 – Data Query Language
select

3、数据库的操作

查看数据库

查询当前所有的数据库:
语法: show databases;
MySQL(02)——SQL语句操作
查看当前数据的创建方式:查看数据库的编码表
语法:show create database 库名;

创建数据库

1 创建一个名称为mydb1的数据库。
create database mydb1;
2 创建一个使用utf8字符集的mydb2数据库。
create database mydb2 character set utf8;

删除数据库

删除前面创建的mydb1数据库;
drop database if exists mydb1;
MySQL(02)——SQL语句操作
也可以直接写成:
drop database mydb1;

修改数据库编码集

语法:alter database 数据库名称 character set 字符集 [collate 排序规则];
将mydb2的编码集改成 gbk
alter database mydb2 character set gbk;
MySQL(02)——SQL语句操作

查看正在使用的数据库

select database();

切换到某个数据库

use mydb3;
MySQL(02)——SQL语句操作

4、数据表结构的操作

数据表的创建

语法:
create table [if not exists] 表名(
列名 类型(长度),
列名 类型(长度)…
);

create table stu(
id char(11),
name varchar(50),
password varchar(50),
sex char(10),
birthday date
); 


MySQL(02)——SQL语句操作

查看表的结构

语法:desc 表名;
查看stu表的结构:
desc stu;

mysql 中的数据类型

Mysql数据库中表每一列的数据类型主要有以下几种:

字符串型
Java中的String 和char 类型对应 mysql 中的 varchar(列的长度)、char(列的长度)

varchar:变长
char:定长
区别:假设我们要存储 abcd 这个字符串。
如果定义成varchar(10) 这时储存的数据不足10个,这时会把多余取消,只占4个。
如果使用char(10),它会把存储的数据添加到10个长度。
如果存储的长度超出了表中列的长度,存储报错。

大数据类型
Java中:
字节流:InputStream
字符流:Reader
mysql中:
BLOB 保存的字节数据
TEXT 保存字符数据

通常我们不会把文件存储到数据库。(占用资源,操作速度慢)
我们会把文件的路径(通常存放在本地磁盘)存到数据库中。

数值型
Java中:byte、short 、 int 、 long 、float、 double
mysql中:tinyint 、smallint、int、bigint、FLOAT、DOUBLE 在创建数据表的时候,数值型也有自己的长度,一般不需要指定,使用默认的长度。

逻辑型
Java中的boolean
mysql中:BIT

日期型
TimeStamp 时间戳, 显示 是一个long整形值
Java中的Date、Time、DateTime、TimeStamp(1970-1-1 0:0:0)
mysql中:DATE、TIME、DATETIME、TIMESTAMP
timestamp:它和datetime都可以保存年月日时分秒,但是timestamp它在保存数据的时候表中的这一列会自动的变成当前保存数据时的时间。

单表创建时约束

约束:通过某些限制,来规定当前某张数据表中的某列数据是否可以为null,是否可以重复,当前某一列中的数据在当前表中必须唯一等限制。
约束的目的:只是为了保证存储在数据表中的数据完整性和有效性。
约束语法:列名 数据类型 约束条件
约束类型:
1、主键约束:primary key
主键一般表示数据库中的某一列,使用这一列来区分数据表中的数据和其他数据不同。这一列的数据在整个数据表中是不允许重复的。
举例:创建一张表,保存学生的信息,需要在表中创建一列,来区分当前的这个一行数据和其他的行不同。这个列称为主键。
主键的定义格式:
列名 列的类型 primary key

2、唯一约束,unique
该列(字段)的值不允许重复。
解释:一张表中可以有很多个唯一约束,只能有一个(两个)作为主键约束。
即就是在一张表唯一约束的列可以有多列,但是主键一般只会使用一列或者两列(联合主键)

3、非空约束,not null
该字段的值不能为空

补充:自增长 auto_increment
如果表的主键是int 类型,这时可以在主键的后面添加 auto_increment ,这时表中这一列在添加数据的时候,会自动的增长。
一般主键使用java中的UUID类产生。

示例:
创建表stu2:学号 整形 主键 自增长,用户名 唯一且不为空,密码不为空, 性别 , 生日。

create table if not exists stu2(
id int primary key auto_increment,
username varchar(50) unique not null,
password varchar(50) not null,
sex char(10),
birthday date
);

数据表结构修改

1 修改数据表:
可以对表名、表中的列名、列的类型、列的约束进行增删改。
语法:alter table 表名 增/删/改 列名 类型(长度) 约束;

需求1:在stu2表上增加salary列
需求2:在stu2表上增加age列

alter table stu2 add salary double;
alter table stu2 add age int;

2 修改现有列类型、长度和约束
语法:alter table 表名 modify 列名 类型(长度) 约束;

需求:修改username列的长度为60
alter table stu2 modify username varchar(60) unique not null;

3 修改现有列名称
语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束;

需求:修改列名username为name
alter table stu2 change username name varchar(60) unique not null;

4 删除现有列
语法:alter table 表名 drop 列名;

需求:删除age列
alter table stu2 drop age;

5 修改表名
语法: rename table 旧表名 to 新表名;

需求:将stu2表名修改为person表
rename table stu2 to person;

6 修改表的字符集
语法:alter table 表名 character set 编码集;

需求: 将stu的编码修改成utf8
alter table stu character set utf8;

数据表删除

语法:drop table 表名;
需求:删除emp表

查看数据表结构

查看库中所有的表:
show tables;

查看表结构:
desc 表名;

查看定义表时,表的编码表
show create table 表名;

分类:

技术点:

相关文章: