SQL
1. 什么是sql?
Structured Query Language:结构化查询语言
其实就是定义了操作所有关系型数据库的规则,只要是关系型数据库都可以被sql操作,强制要求所有的关系型数据库都必须遵守这个规则。
每一种数据库操作的方式存在不同的地方
常见的关系型数据库有:MySQL、Oracle、SQL server 、Postgresql、DB2、SQLite
2. sql通用语法
- SQL语句可以单行或多行书写,以分号结尾;
- 可以使用空格和缩进来增强语句的可读性
- Mysql数据库的sql语句不区分大小写,关键字建议大写
- 注释
a. 单行注释:-- 注释内容(双-后有空格) 或 #注释内容
b. 多行注释:/* 注释 */
3. SQL的分类
- 数据查询语言(DQL): 其语句,也称为“数据检索语句”,用以从表中获得数据,确定数据怎样在应用程序给出。保留字SELECT是DQL(也是所有SQL)用得最多的动词。
- 数据操作语言(DML): 其语句包括动词INSERT,UPDATE和DELETE。它们分别用于添加,修改和删除表中的行。也称为动作查询语言。
- 数据控制语言(DCL): 它的语句通过GRANT或REVOKE获得许可,确定单个用户和用户组对数据库对象的访问权限和安全级别。某些RDBMS可用GRANT或REVOKE控制对表单个列的访问。
- 数据定义语言(DDL): 其语句包括动词CREATE、DROP和ALTER。用来定义数据库对象:数据库、表、列等。在数据库中创建新表或删除表(CREAT TABLE 或 DROP TABLE);为表加入索引等。DDL包括许多与人数据库目录中获得数据有关的保留字。它也是动作查询的一部分。
DDL:操作数据库、表
1. 操作数据库:CRUD
C(create): 创建
- 创建数据库:
create database 数据库名称 character set utf8;
- 创建数据库前判断数据库是否存在(不存在则创建):
create database if not exists 数据库名称;
- 创建数据库db3,判断不存在,并指定默认字符集:
create database if not exists db3 character set utf8;
R(retrieve):查询
- 查询所有数据库的名称:
show databases;
- 查询某个数据库的创建语句(查询某个数据库的字符集):
show create database 数据库名称;
U(update):修改
- 修改数据库的字符集:
alter database 数据库名称 character set 字符集名称;
D(delete):删除
- 删除数据库:
drop database 数据库名称;
- 判断数据库存在在删除:
drop database if exists 数据库名称;
使用数据库
- 查询当前正在使用的数据库名称:
select database();
- 使用数据库:
use 数据库名称;
2. 操作表
C(create): 创建
- 语法:
create table 表名(
列名1 数据类型1,
列名2 数据类型2,
......
列名n 数据类型n);
# 注意:最后一列不需要加逗号
- 数据类型:
- int:整数类型
- age int
- double: 小数类型
score double(5,2) #这个小鼠最多有5位,小数点后保留2位- date:日期,包含年月日,yyyy-mm-dd
- datetime:日期,包含年月日时分秒,yyyy-mm-dd hh:mm:ss
- timestamp:时间戳类型,包含年月日时分秒,yyyy-mm-dd hh:mm:ss
#如果将来不给这个字段赋值或赋值为null,则默认使用当前的系统时间来自动赋值。- varchar:字符串
name varchar(20) 姓名最大20个字符
张三(2个字符) zhangsan(8个字符)
- 创建表:
create table student(id int, name varchar(32),age int, score double(4,1),birthday date, insert_time timestamp);- 复制表:
create table 表名 like 被复制的表名;
create table stu like student;R(retrieve):查询
- 查询某个数据库中所有的表的名称:
show tables;
- 查询表结构:
desc 表名;
U(update):修改
- 修改表名
alter table 表名 rename to 新表名;
- 修改表的字符集
alter table 表名 character set 字符集名称;
- 添加一列
alter table 表名 add 列名 数据类型;
- 修改列名称、类型
alter table 表名 change 列名 新列名 新数据类型; #可改名字和数据类型
alter table 表名 modify 列名 新数据类型; #只改数据类型
- 删除列
alter table 表名 drop 列名;
D(delete):删除
drop table if exists 表名;
drop table 表名;