Java登陆第二天——SQL之DDL
SQL语句
SQL概括起来可以分为以下四组。(都是SQL,因为功能的不同,为了更好学习划分了类别)
DDL——数据定义语言。用于定义数据的结构。 指的是增,删,改数据库
DML——数据操作语言。用于检索或修改数据。 指的是增,删,改数据
DQL——数据查询语言。用于查询各种形式的数据。 指的是查询数据
DCL——数据控制语言。用于定义数据库用户的权限。 指的是管理数据库权限
SQL大小写不敏感!!
SQL大小写不敏感!!
SQL大小写不敏感!!
全凭个人习惯
DDL
专门用来操作数据库结构的SQL。
数据库概念图:
操作数据库
--这是mysql的注释,每条命令使用分号;结尾
--连接数据库,然后输入密码
mysql -u 用户名 -p
--查看所有数据库
show databases;
--切换数据库 (也就是使用某个数据库
use 数据库名;
--查看当前数据库所有表
show tables;
--创建数据库
create database 库名;
--删除数据库
drop database 库名;
--查看创建某数据库使用的命令;
show create database 库名;
--查看创建某表单使用的命令;
show create table 表单名;
栗子:先连接数据库,再查看所有数据库,切换到某个数据库,并查看所有表。
SQL语句:
mysql -u root -p
密码
show databases;
use sys;
show tables;
程序运行结果:
栗子:创建Test21数据库,切换到它,并查看所有表,最后删除掉Test21。
SQL语句:
create database Test21;
use Test21;
show tables;
drop database Test21;
程序运行结果:
出现上述情况,是因为分号作为一句SQL代码的结束。
效果是一样的。
栗子:创建Test22数据库,再查看创建它使用的命令
SQL语句:
create database Test22;
show create database Test22;
程序运行结果:
默认编码是uft-8
增,删数据表
--创建数据表
create table 表名(
`字段名` 数据类型(最大值) [default 默认值] 约束,
...
);
--创建数据表,增加判断 如果不存在就创建表
create table IF NOT EXISTS 表名();
--删除数据表
drop table 表名;
--查看数据表结构
desc 表名;
数据表中存放的叫列(也叫字段),具体数据叫行。
常见的数据类型如下:
数据类型 | 描述 |
---|---|
int | 标准整数 |
bigint | 较大的整数 |
float | 浮点数 |
double | 浮点数 |
char | 字符串固定大小 |
varchar | 可变字符串(对应Java的String) |
text | 文本串(保存大型的文本) |
null | 没有值。(null不等于0) |
SQL可以给数据添加约束,丰富数据的功能,常见的约束如下:
约束名称 | 描述 |
---|---|
NOT NULL | 非空 |
UNIQUE | 唯一 |
COMMENT | 注释 |
DEFAULT | 默认值 |
PRIMARY KEY | 主键 |
FOREIGN KEY | 外键 |
ENGINE | 数据库引擎 |
约束会在之后详细介绍
栗子:创建UserTest数据库,切换到它,创建Test1表。
表内包含3个字段:
name数据类型为varchar最大值为32,不能为空;
age int(200),默认为20;
id int 主键,自增。
SQL语句:
create database UserTest;
use UserTest;
create table Test1(
name varchar(32) not null,
age int(200) default 20,
id int primary key not null
);
程序运行结果:
修改数据表
--修改表名
alter table 表名 rename as 新表名;
--修改表之新增字段
alter table 表名 add 字段名 字段类型;
--修改表之修改字段名
alter table 表名 change 字段名 新字段名 字段类型;
--修改表之删除字段
alter table 表名 drop 字段名;
--查看数据表信息
desc 表名;
栗子:切换到UserTest数据库,创建Test2表并判断是否存在。
表内包含1个字段:
sex varchar(20) 非空,默认值为不知道,注释为性别。
然后再查看创建该表的命令,
修改表名为Test3,
最后查看所有表。
SQL语句:
use UserTest;
create table IF NOT EXISTS Test2(
sex varchar(20) default "不知道" comment '性别'
);
show create table Test2;
alter table Test2 rename as Test3;
程序运行结果:
栗子:切换到UserTest数据库,先查看Test3表,再修改。
新增两个字段:
T_name varchar(10);
T_phone char。
查看一次Test3表。
再修改字段T_phone类型为varchar(50)
查看一次Test3表。
再删除字段T_name。
最后再查看一次Test3表。
SQL语句:
use UserTest;
desc Test3;
alter table Test3 add T_name varchar(10);
alter table Test3 add T_phone char;
desc Test3;
alter table Test3 change T_phone T_phone varchar(50);
desc Test3;
alter table Test3 drop T_name;
desc Test3;
程序运行结果: