solitaryclown

SQL基础

2022-01-05
solitaryclown

1. SQL基础

1.1. 语句分类

  • DDL
    DDL(Data Definition Language,数据定义语言)  用来创建或者删除存储 数据用的数据库以及数据库中的表等对象。DDL 包含以下几种指令。
    • CREATE:创建数据库和表等对象
    • DROP: 删除数据库和表等对象
    • ALTER: 修改数据库和表等对象的结构
  • DML
    DML(Data Manipulation Language,数据操纵语言)  用来查询或者变更 表中的记录。DML 包含以下几种指令。
    • SELECT:查询表中的数据
    • INSERT:向表中插入新数据
    • UPDATE:更新表中的数据
    • DELETE:删除表中的数据
  • DCL
    DCL(Data Control Language,数据控制语言)  用来确认或者取消对数据 库中的数据进行的变更。除此之外,还可以对 RDBMS 的用户是否有权限 操作数据库中的对象(数据库表等)进行设定。DCL 包含以下几种指令。
    • COMMIT: 确认对数据库中的数据进行的变更
    • ROLLBACK:取消对数据库中的数据进行的变更
    • GRANT: 赋予用户操作权限
    • REVOKE: 取消用户的操作权限

1.2. 书写规则

  • 语句以;结尾
  • 关键字、表名、列名均不区分大小写
  • 字符串常数和日期常数需要用''括起来,例如’abc’、’2021-01-01’

1.3. DDL

1.3.1. 1.database相关

-- 查看数据库
show DATABASES;
-- 创建数据库
create database if not EXISTS db_name ;
-- 创建数据库时使用编码
create database if not EXISTS db_name CHARACTER SET utf8;
-- 使用数据库
use db_name;
-- 删除数据库
drop database if exists db_name;
-- 修改数据库编码
alter DATABASE db_name CHARACTER set utf8;

1.3.2. 2.表相关

1.3.2.1. 2.1 列的数据类型

1.3.2.1.1. 2.1.1数值类型
类型 大小
tinyint 1B
smallint 2B
mediumint 3B
int 4B
bigint 8B
float 4B
double 8B
decimal 依赖于整数部分和小数部分的范围

如果在数据类型后面加了unsigned表示无符号,最高位符号位也用来存储。

1.3.2.1.2. 2.1.2字符串型

两种最主要的字符串型:

  • char(N):定长字符串,N表示存储字符个数,N的范围为0~255,当保存字符不满N,会在后面填充空格,检索时会去掉尾部空格。实际存储空间由M和编码决定。
  • varchar(N):变长字符串,N表示存储的字符个数(不分中文英文),范围为0~65535,保存字符串时按照实际存储,并在字符串后面加上一个结束符。实际存储空间由字符串长度和编码决定。varchar存储时会加上字符串的长度信息。

两者比较:
char是定长存储,存取和检索效率比varchar更高,varchar更节省空间,对于定长的字段,比如身份证号,使用char更合适。

1.3.2.1.3. 2.1.3日期和时间型
  • date:日期数据,yyyy-mm-dd
  • time:时间数据,HH:MM:SS
  • datetime:日期+时间,yyyy-mm-dd HH:MM:SS
1.3.2.1.4. 2.1.4 二进制类型

big、blob等。

1.3.2.2. 2.2 表操作

# 表相关

-- 创建表
CREATE table if not EXISTS table_name(
	id INT comment 'ID',
	name VARCHAR(20) comment '姓名',
	gender VARCHAR(1) comment '性别'
);

-- 查看当前数据库表
show tables;

-- 查看创建语句
show create table table_name;

-- 查看表结构
desc table_name;

-- 删除表
drop table if EXISTS table_name;

-- 添加列
alter table table_name add column_name VARCHAR(10) not null;

-- 修改列
alter table table_name change column_name column_new_name CHAR(10) not null;


-- 删除列(修改表结构不允许使用if EXISTS)
alter table table_name drop column_name ;

-- 重命名表
rename table table_name to table_new_name;

1.4. DML

1.4.1. 1.插入数据

#插入
-- 插入数据(指定列)
insert into table_name(id,name,gender) VALUES(1,'杰克','男');
-- 当不指定列,必须插入全部列。
insert into table_name VALUES(2,'露丝','女');

保证列名和数据的位置一一对应,否则可能出现严重数据错误

1.4.2. 2.修改数据

-- 修改表中某一列数据(所有的行)
UPDATE table_name SET column_name='value' ;

-- 修改表中某一列数据(满足条件的行)
UPDATE table_name SET column_name='newvalue' WHERE id=1;

1.4.3. 3.删除数据

#删除记录
-- 删除一张表所有记录
DELETE FROM table_name;

-- 删除一张表满足条件的记录
DELETE FROM table_name WHERE id=1111;

-- 删除所有记录(tunncate)
TRUNCATE table table_name;

deletetruncate清空表的区别:
delete删除记录,truncate直接删除表后重建一张空表。

1.5. DCL


下一篇 MySQL运算符

Comments

Content