1、SQL简介
SQL 指结构化查询语言,全称是 Structured Query Language。
SQL 可以访问和处理数据库。
SQL 是一种 ANSI(American National Standards Institute 美国国家标准化组织)标准的计算机语言。
作用:
SQL 面向数据库执行查询
SQL 可从数据库取回数据
SQL 可在数据库中插入新的记录
SQL 可更新数据库中的数据
SQL可从数据库删除记录
SQL 可创建新数据库
SQL 可在数据库中创建新表
SQL 可在数据库中创建存储过程
SQL 可在数据库中创建视图
SQL 可以设置表、存储过程和视图的权限
2、SQL内的数据类型
Microsoft Access、MySQL 和 SQL Server 所使用的数据类型和范围。
Microsoft Access
数据类型 | 描述 | 储存 |
---|---|---|
Text | 用于文本或文本与数字的组合。最多 255 个字符。 | |
Memo | Memo 用于更大数量的文本。最多存储 65,536 个字符。注释:无法对 memo 字段进行排序。不过它们是可搜索的。 | |
Byte | 允许 0 到 255 的数字。 | 1字节 |
Integer | 允许介于 -32,768 与 32,767 之间的全部数字。 | 2字节 |
Long | 允许介于 -2,147,483,648 与 2,147,483,647 之间的全部数字。 | 4字节 |
Single | 单精度浮点。处理大多数小数。 | 4 字节 |
Double | 双精度浮点。处理大多数小数。 | 8字节 |
Currency | 用于货币。支持 15 位的元,外加 4 位小数。提示:您可以选择使用哪个国家的货币。 | 8 字节 |
AutoNumber | AutoNumber 字段自动为每条记录分配数字,通常从 1 开始。 | 4 字节 |
Date/time | 用于日期和时间 | 8字节 |
Yes/No | 逻辑字段,可以显示为 Yes/No、True/False 或 On/Off。在代码中,使用常量 True 和 False (等价于 1 和 0)。注释:Yes/No 字段中不允许 Null 值 | 1字节 |
Ole Object | 可以存储图片、音频、视频或其他 BLOBs(Binary Large OBjects)。 | 最多1GB |
Hyperlink | 包含指向其他文件的链接,包括网页。 | |
Lookup Wizard | 允许您创建一个可从下拉列表中进行选择的选项列表。 | 4 字节 |
MySQL
在MySQL中的数据类型主要为三种,有三种主要的类型:Text(文本)、Number(数字)和 Date/Time(日期/时间)类型。
text类型详细
数据类型 | 描述 |
---|---|
CHAR(size) | 保存固定长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的长度。最多 255 个字符。 |
VARCHAR(size) | 保存可变长度的字符串(可包含字母、数字以及特殊字符)。在括号中指定字符串的最大长度。最多 255 个字符。注释:如果值的长度大于 255,则被转换为 TEXT 类型。 |
TINYTEXT | 存放最大长度为 255 个字符的字符串。 |
TEXT | 存放最大长度为 65,535 个字符的字符串。 |
BLOB | 用于 BLOBs(Binary Large OBjects)。存放最多 65,535 字节的数据。 |
MEDIUMTEXT | 带符号范围-8388608到8388607,无符号的范围是0到16777215。 size 默认为9 |
INT(size) | 带符号范围-2147483648到2147483647,无符号的范围是0到4294967295。 size 默认为 11 |
BIGINT(size) | 带符号的范围是-9223372036854775808到9223372036854775807,无符号的范围是0到18446744073709551615。size 默认为 20 |
FLOAT(size,d) | 带有浮动小数点的小数字。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DOUBLE(size,d) | 带有浮动小数点的大数字。在 size 参数中规显示定最大位数。在 d 参数中规定小数点右侧的最大位数。 |
DECIMAL(size,d) | 作为字符串存储的 DOUBLE 类型,允许固定的小数点。在 size 参数中规定显示最大位数。在 d 参数中规定小数点右侧的最大位数。 |
SQL Server
SQL基本语法
SELECT - 从数据库中提取数据
UPDATE - 更新数据库中的数据
DELETE - 从数据库中删除数据
INSERT INTO - 向数据库中插入新数据
CREATE DATABASE - 创建新数据库
ALTER DATABASE - 修改数据库
CREATE TABLE - 创建新表
ALTER TABLE - 变更(改变)数据库表
DROP TABLE - 删除表
CREATE INDEX - 创建索引(搜索键)
DROP INDEX - 删除索引
以下内容主要用MySQL进行演示
数据库操作
1、查询数据库
-- 查询所有数据库
SHOW DATABASES;
-- 查询某个数据库的编码
SHOW CREATE DATABASE test;
2、创建数据库
-- 创建库
CREATE DATABASE demo1;
-- 创建数据库的时候指定编码表
-- GB2312、GBK、GB18030、UTF-8(unicode)、ISO-8859-1(拉丁文)
CREATE DATABASE demo2 CHARACTER SET gbk;
-- 修改库的校对规则
CREATE DATABASE demo3 CHARACTER SET utf8 COLLATE utf8_bin;
3、删除数据库
-- 删除数据库
DROP DATABASE demo4;
4、修改数据库
-- 修改数据库编码表
ALTER DATABASE demo3 CHARACTER SET gbk;
表的操作
对某个表操作的时候,一定要先切换到某个库下
-- 切换数据
use 库名;
1、建表
-- 创建表
CREATE TABLE tb_user(
id INT,
username VARCHAR(10),
age INT
);
定义数据表中的每列都必须明确具体的数据类型
数字:TINYINT 、SMALLINT、INT、BIGINT、FLOAT、DOUBLE
字符串:char(长度)、varchar(长度)
char(10):数据表的列最多只能存放10字符数据,如果不足10个,使用空格补够10个,超过报错
varchar(10):数据表的列最多只能存放10字符数据,如果不足10个,长度会发生变化,超过报错
日期:
date (只有日期)
time(只有时间)
datetime(日期时间都有)
timestamp(日期时间都有 ):时间戳
文件数据类型:
blob(存放大二进制数据)
text(存放大的文本文件)
tinyblob tinytext 255字节
blob text 64KB
mediumblob mediumtext 16MB
longblob longtext 4GB
开发中,文件不会给数据库中存储。采用专业的文件管理服务器存储,然后将文件在服务器上的存储位置存放在数据库中。
2、对表的单表约束
- 主键约束:primary key , 它是保证当前这一行数据与其他行不重复。主键列的数据不能重复,也不能存放null.
- 非空约束:not null , 这个列中不能包含null。
- 唯一约束:unique , 这列的数据不能重复。
一个表中主键一般只有一列或两列(联合主键)。主键会自动添加索引(主键索引)。
一个表中的唯一约束可以添加在多列上。
3、删除表
-- 删除表
drop table 表名;
4、修改表
表结构修改语法:
alter table 表名 增/删/改 列名 类型( 长度) 约束;
1、增加列: alter table 表名 add 列名 类型(长度) 约束;
2、修改现有列类型、长度和约束 语法:alter table 表名 modify 列名 类型(长度) 约束;
3、修改现有列名称 语法:alter table 表名 change 旧列名 新列名 类型(长度) 约束;
4、删除现有列 语法:alter table 表名 drop 列名 ;
5、修改表名 :rename table 旧表名 to 新表名;
6、修改表的字符集:alter table 表名 character set 编码表名;
5、查询表结构
desc 表名; 查看表结构
show tables ; 查看当前库内所有表名
show create table 表名; 查看建表语句和字符集
所有数据表结构操作语句都是 DDL
对表中数据操作
1、创建数据表
create table student(
id int primary key auto_increment,
sage int ,
sname varchar(32) not null,
gender varchar(10) not null,
score double not null,
birthday date
);
在创建表结构的时候,如果主键是整数类型,那么可以借助mysql的主键自增长策略,在插入数据的时候,可以省略主键的数据。
2、表中插入数据
语法:insert into 表名 (列名,列名,列名…) values (值,值,值…);
- 如果表的主键是自增长的,这时插入的时候,主键可以写null,但是不是将null存放到主键列上,而是让数据库自己维护主键的数据。
- 如果列的类型是varchar、char、date、datetime类型需要插入数据的时候,使用单引号引用
INSERT INTO student
(id,
sage,
sname,
gender,
score,
birthday)
VALUES (NULL,
22,
'张三',
'男',
99.89,
'2020-07-18');
- 如果某些列不需要插入数据,可以在插入的时候省略这些列
INSERT INTO student(sname , gender,score)VALUES('李四','男',89.00