1、什么是SQL
SQL是指结构化组织语言(Structured Query Language),可以实现对数据库进行【增删改查】的操作。
【CRUD】
create:创建 read:检索 update:更新 delete:删除
2、SQL方言
SQL是一套标准,所有的数据库厂商都实现了此标准;也就都可以实现CRUD操作。
只不过各自厂商在此标准上增加了特有的语句,这部分内容我们称为方言。
如:mysql:注释 # 是其特有的
3、书写规范
-
sql语句,可以单行或多行书写,最后以分号结尾
-
在windows环境下,mysql不区分大小写,将关键字大写,普通字段小写,多个单词之间以下划线分割==【字段USER_ID这样?】==
-
注释
单行
– sql标准注释
# mysql特有的注释
多行
/* 多行注释 */
4、SQL分类
-
DDL(Data Definition Language)数据定义语言
用来定义数据库对象:数据库,表,列等。关键字:create,drop,alter等 -
DML(Data Manipulation Language)数据操作语言
用来对数据库中表的数据进行增删改。关键字:insert,delete, update等 -
DQL(Data Query Language) 数据查询语言
用来查询数据库中表的记录(数据)。关键字:select, where等 -
DCL(Data Control Language)数据控制语言
用来定义数据库的访问权限和安全级别,及创建用户。关键字:grant,revoke等 -
TCL(Transaction Control Language) 事务控制语言
用于控制数据库的事务操作,关键字; commit,savepoint,rollback等
4.1 DDL对数据库
C:创建
-
直接创建
语法:
create database 数据库名; -
先判断,若不存在创建数据库
语法:
create database if not exists 数据库名; -
创建数据库并指定字符集
语法:
create database 数据库名 character set 编码;
R:查询
-
查询所有数据库
语法:
show databases; -
查看建库语句
语法:
show create database 数据库名;
U:修改
- 修改数据库字符集
语法:
alter database 数据库名 character set 编码;
D:删除
-
直接删除数据库
语法:
drop database 数据库名; -
先判断,若存在就去删除
语法:
drop database if exists 数据库名;
进入指定的数据库内
-
查看当前所在库的位置
语法:
select database(); -
进入到指定库内
语法:
use 数据库;
4.2 DDL对表
C:创建
-
创建表
语法:
create table 表名(
列名(字段名) 数据类型,
列名(字段名) 数据类型,
…
); -
常见数据类型
整型: int bigint
浮点型:float double
字符串:varchar(长度) 1~65535
text longtext
日期:date datetime -
快速创建表结构(复制表)
语法:
create table 新表 like 旧表;
R:查询
-
查询所有表
语法:
show tables; -
查看建表语句
语法:
show create table 表名; -
查看表结构
语法:
desc 表名;
U:修改
-
新增一列(字段)
语法:
alter table 表名 add 字段名 数据类型; -
修改字段类型
语法:
alter table 表名 modify 字段名 新数据类型; -
修改字段名
语法:
alter table 表名 change 旧字段名 新字段名 新数据类型; -
删除列(字段)
语法:
alter table 表名 drop 字段名; -
修改表的字符集
语法:
alter table 表名 charset=编码; -
修改表名
语法:
rename table 旧表名 to 新表名;
D:删除
-
直接删除
语法:
drop table 表名; -
先判断,若存在删除
语法:
drop table if exists 表名;
4.3 DML对表记录增删改
增加记录
- 语法:
insert into 表名(字段1,字段2,…) values(值1,值2,…); - 注意:
1)字段名与值的类型要求一一对应
2)字符串类型,可以使用单双引,推荐使用单引号
3)字符串类型可以插入一切数据,数据库底层实现了隐式转换
4)如果插入所有字段,我们可以省略字段
修改记录
- 语法:
update 表名 set 字段1=值1,字段2=值2… [where 条件]; - 注意:
1)[] 表示内容可以省略
删除记录
-
语法:
delete from 表名 [where 条件]; -
注意:
1)[] 表示内容可以省略
2)一般删除都是根据id -
补充删除命令
truncate table 表名; 摧毁表,构建表。
4.3 DML对表记录查询
- 实现简单查询
语法:
select * from 表名;
select 字段1,字段2,… from 表名;
去重关键字:
select distinct 字段1,字段2,… from 表名;
如果多个字段去重,所有字段内容需要完全一样
我们在查询时,进行数学运算,不会改变表中原有的记录。
NULL值与其他数值进行运算,结果都为NULL。
ifnull高级函数
IFNULL(字段名,指定默认值) 如果字段有值就直接返回,如果为null那么返回指定的默认值
别名
select 列名 [as] 列别名,列名 [as] 列别名,… from 表名 [as] 表别名