SQL概述
SQL:Structure Query Language。(结构化查询语言)
SQL的分类
DDL**(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
CREATE、ALTER、DROP
DML***(Data Manipulation Language):数据操作语言,用来操作数据库记录(数据);
INSERT、UPDATE、DELETE
DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
DQL*****(Data Query Language):数据查询语言,用来查询记录(数据)。
SELECT
*注意:sql语言以;结尾
DDL:定义数据库、表、列等
使用的关键字:create、alter、drop
操作数据库
创建
create database mydb1; --直接创建数据库,使用的是默认的编码
create database mydb2 character set gbk; --指定编码
create database mydb3 character set gbk collate gbk_chinese_ci; --指定编码以及使用的排序规则
查询
查看当前数据库服务器中的所有数据库
show databases;
查看前面创建的mydb2数据库的定义信息
show create database mydb2;
修改
查看服务器中的数据库,并把mydb2的字符集修改为utf8;
alter database mydb2 character set utf8;
删除
drop database mydb3;
操作数据表
*创建表的语法:
create table 表名(
字段1 字段类型,
字段2 字段类型,
...
字段n 字段类型
);
*常用数据类型:
int:整型
double:浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char:固定长度字符串类型;char(10) 'abc ' ---长度最大为65535
varchar:可变长度字符串类型;varchar(10) 'abc' ---长度最大为65535
text:字符串类型; ---最大容许的长度为4M
blob:字节类型;
date:日期类型,格式为:yyyy-MM-dd; '2016-12-13'
time:时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 yyyy-MM-dd hh:mm:ss 会自动赋值,截止2023年;
datetime:日期时间类型 yyyy-MM-dd hh:mm:ss
*修改表结构的语法
修改表结构使用alter table,修改表结构包括增加列定义、修改列定义、删除列、重命名列等操作。
①增加列定义的语法如下:
alter table 表名
add
(
#可以有多个列定义
column_name1 datatype [default expr],
...
);
②修改列定义的语法如下:
alter table 表名
modify column_name datatype;
③从数据表中删除列的语法:
alter table 表名
drop column_name;
④重命名数据表的语法格式如下:
alter table 表名
rename to 表名;
⑤MySQL为alter table提供了change选项,该选项可以改变列名。change选项的语法如下:
alter table 表名
change old_column_name new_column_name type;
⑥删除表的语法:
drop table 表名;
DML操作(重要)
DML是对表中的数据进行增、删、改的操作。不要与DDL混淆。
INSERT、UPDATE、DELETE
小知识:
在mysql中,字符串类型和日期类型都要用单引号括起来。如 'tom' '2015-09-04'
空值:null
插入操作:INSERT
语法:INSERT INTO 表名(列名1 , 列名2 , ...) VALUES(列值1 , 列值2 , ...);
注意:列名与列值的类型、个数、顺序要一一对应。
可以把列名当做java中的形参,把列值当做实参。
值不要超出列定义的长度。
如果插入空值,请使用null
插入的日期和字符一样,都要使用单引号括起来。
如果每个字段都有值,可简写为:
INSERT INTO 表名 VALUES(列值1 , 列值2 , ...);
批量插入:
INSERT INTO emp VALUES
(1,'zs','m','2015-09-01',10000,'2015-09-01',NULL),
(2,'li','m','2015-09-01',10000,'2015-09-01',NULL),
(3,'ww','m','2015-09-01',10000,'2015-09-01',NULL);
修改操作 UPDATE
语法:UPDATE 表名 SET 列名 1=列值 1 , 列名 2=列值 2 , ... WHERE 列名=值 -- WHERE后面跟的是一个条件,满足条件则修改,否则不修改。
如:UPDATE emp SET salary=salary+1000 WHERE NAME='李四';
删除操作 DELETE
语法:DELETE FROM 表名; -- 删除表中所有记录
-- 逐条删除表中记录,删除速度慢
-- 删除的数据可以恢复
-- 可以带条件删除
-- 只能删除表的数据,不能删除表的约束
TRUNCATE TABLE 表名 -- 删除速度快,因为它先把整个表删除,再创建一个完全一样的空表
-- 删除的数据不能恢复
-- 不能带条件删除
-- 既可以删除表的数据,也可以删除表的约束
DELETE FROM 表名 WHERE 列名=值; -- 删除指定记录, WHERE后面跟的是一个条件,满足条件则删除,否则不删除。