SQL学习笔记

⼀、什么是SQL

  • SQL 指结构化查询语⾔
  • SQL 使我们有能⼒访问数据库
  • SQL 是⼀种 ANSI 的标准计算机语⾔

⼆、SQL能做什么?

  • SQL ⾯向数据库执⾏查询
  • SQL 可从数据库取回数据
  • SQL 可在数据库中插⼊新的记录
  • SQL 可更新数据库中的数据
  • SQL 可从数据库删除记录
  • SQL 可创建新数据库
  • SQL 可在数据库中创建新表
  • SQL 可在数据库中创建存储过程
  • SQL 可在数据库中创建视图
  • SQL 可以设置表、存储过程和视图的权限

三、常⽤SQL语句整理

1、DML与DDL

可以把SQL分为两类:DML(数据操作语⾔)和DDL(数据定义语⾔)

查询和更新指令构成了 SQL 的 DML 部分:

  • SELECT – 从数据库表中获取数据
  • UPDATE – 更新数据库表中的数据
  • DELETE – 从数据库表中删除数据
  • INSERT INTO – 向数据库表中插⼊数据

SQL 的数据定义语⾔ (DDL) 部分使我们有能⼒创建或删除表格。我们也可以定义索引(键), 规定表之间的链接,以及施加表间的约束。

SQL中常⻅的DDL语句:

  • CREATE DATABASE – 创建新数据库
  • ALTER DATABASE – 修改数据库
  • CREATE TABLE – 创建新表
  • ALTER TABLE – 变更(改变)数据库表
  • DROP TABLE – 删除表
  • CREATE INDEX – 创建索引(搜索键)
  • DROP INDEX – 删除索引

2、常⽤DML整理

select语句

select⽤于从表中选取数据,执⾏后会返回⼀个包含所有结果的结果集。

语法:

select 列名称 from 表名称 — 从表中获取制定列的所有数据

select * from 表名称 — 从表中获取所有记录

实例:

select name from users

select * from users

select后⾯还可以跟where⼦句,⽤于规定选择标准,语法:

select 列名称 from 表名称 where 列 运算符 值

例如: select name from users where age = 15

where可以使⽤下列运算符:

操作符 描述
= 等于
<> 不等于
> 大于
< 小于
>= 大于等于
<= 小于等于
BETWEEN 在某个范围内
LIKE 搜索某种模式

 

有时候表中会有重复值,这时候可以使⽤select distinct只返回唯⼀不同的值,⽤法和select⼀ 样。

select还可以使⽤order by 对查询到的结果进⾏排序 语法:

select 列名称 from 表名称 order by 列名称

insert语句

insert⽤于向表中插⼊⼀条数据

语法:

insert into 表名称 values (值1, 值2…)

insert into 表名称 (列1, 列2…) values (值1, 值2…)

实例:

insert into users values (1, ‘mary’, ‘female’)

insert into users (name, age) values (‘tom’, 16)

update语句

update⽤于更新表中记录

语法:

update 表名称 set 列名称 = 新值 where 列名称 = 某值

实例:

update users set age = 20 where name = ‘Mary’ update users set sex = ‘male’, age = ’14’ where id = 4

delete语句

delete可⽤于删除表中的⾏

语法:

delete from 表名称 where 列名称 = 值

实例:

delete form users where name = ‘Mary’

delete还可以在不删除表的情况下删除所有⾏

语法:

delete from 表名称 delete * from 表名称

3、常⽤DDL

create database

create database⽤于创建数据库。

语法:

create database 数据库名

create table

create table ⽤于创建表。

CREATE TABLE 表名称 (

列名称1 数据类型,

列名称2 数据类型,

列名称3 数据类型,

….

)

实例:

create table users ( id int(11) not null, name varchar(255), age int(3) )

create index

create index⽤户给表建⽴索引,再不读取整个表数据情况下,索引可以提⾼查询效率,语法:

CREATE INDEX 索引名 ON 表名 (列名)

PS:对于含有索引的表,在插⼊数据和更新数据时都会更新索引,所以索引并不是建⽴的越多 越好,⼀般只在常⽤的列上建⽴索引。

drop

drop语句可以⽤来删除索引、表和数据库。

语法:

alter table 表名 drop index 索引名 − 删除索引

drop table 表名 − 删除表(表数据和表结构都会被删除)

drop database 数据库名 − 删除数据库

PS:如果只想删除表数据但保留表结构,可以使⽤truncate table 表名

alter

alter语句可以⽤来修改数据库结构,修改表结构。

alter table可以⽤来修改表的列,还可以修改索引(MySQL)

表中添加列:

ALTER TABLE 表名 ADD 列名 数据类型

表中删除列:

ALTER TABLE 表名 DROP COLUMN 列名

修改列的数据类型:

ALTER TABLE 表名 MODIFY COLUMN 列名 数据类型

四、SQL约束

约束⽤于限制加⼊表的数据的类型,常⽤约束条件如下:

  • NOT NULL:强制列不接受NULL值
  • UNIQUE:约束唯⼀标识表中每⼀条记录,⼀个表可以有多个UNIQUE约束
  • PRIMARY KEY:主键也是唯⼀标识表中每⼀条记录,且设置为主键的列不能为空,⼀个 表只能有⼀个主键
  • FOREIGN KEY:⼀个表的外键指向另⼀个表的主键,FOREIGN KEY 约束⽤于预防破坏表 之间连接的动作,也能防⽌⾮法数据插⼊外键列,因为它必须是它指向的那个表中的值 之⼀
  • CHECK:⽤于限制列中的值的范围
  • DEFAULT:⽤于向列中插⼊默认值

五、SQL数据类型(MySQL)

MySQL中主要有三种类型:⽂本、数字、⽇期∕时间

1、⽂本类型:

数据类型 描述
CHAR(size) 保存固定⻓度的字符串(可包含字⺟、数字以及特殊字符)。在括 号中指定字符串的⻓度。最多 255 个字符。
VARCHAR(size) 保存可变⻓度的字符串(可包含字⺟、数字以及特殊字符)。在括 号中指定字符串的最⼤⻓度。最多 255 个字符。 注释:如果值的⻓度⼤于 255,则被转换为 TEXT 类型。
TINYTEXT 存放最⼤⻓度为 255 个字符的字符串。
TEXT 存放最⼤⻓度为 65,535 个字符的字符串。
BLOB ⽤于 BLOBs (Binary Large OBjects)。存放最多 65,535 字节的数 据。
MEDIUMTEXT 存放最⼤⻓度为 16,777,215 个字符的字符串。
MEDIUMBLOB ⽤于 BLOBs (Binary Large OBjects)。存放最多 16,777,215 字节 的数据。
LONGTEXT 存放最⼤⻓度为 4,294,967,295 个字符的字符串。
LONGBLOB ⽤于 BLOBs (Binary Large OBjects)。存放最多 4,294,967,295 字 节的数据。
ENUM(x,y,z,etc.)  允许你输⼊可能值的列表。可以在 ENUM 列表中列出最⼤ 65535 个值。如果列表中不存在插⼊的值,则插⼊空值。 注释:这些值是按照你输⼊的顺序存储的。 可以按照此格式输⼊可能的值:ENUM(‘X’,’Y’,’Z’)
SET 与 ENUM 类似,SET 最多只能包含 64 个列表项,不过 SET 可存储 ⼀个以上的值。

2、数字类型:

数据类型 描述
TINYINT(size) -128 到 127 常规。0 到 255 ⽆符号。在括号中规定最⼤位数。
SMALLINT(size) -32768 到 32767 常规。0 到 65535 ⽆符号。在括号中规定最⼤ 位数。
MEDIUMINT(size) -8388608 到 8388607 常规。0 to 16777215 ⽆符号。在括号中 规定最⼤位数。
INT(size) -2147483648 到 2147483647 常规。0 到 4294967295 ⽆符号 。在括号中规定最⼤位数。
BIGINT(size) -9223372036854775808 到 9223372036854775807 常规。0 到 18446744073709551615 ⽆符号。在括号中规定最⼤位数。
FLOAT(size,d) 带有浮动⼩数点的⼩数字。在括号中规定最⼤位数。在 d 参数中 规定⼩数点右侧的最⼤位数。
DOUBLE(size,d) 带有浮动⼩数点的⼤数字。在括号中规定最⼤位数。在 d 参数中 规定⼩数点右侧的最⼤位数。
DECIMAL(size,d)  作为字符串存储的 DOUBLE 类型,允许固定的⼩数点。

3、⽇期∕时间类型:

数据类型 描述
DATE 日期。格式:YYYY-MM-DD 注释:⽀持的范围是从 ‘1000-01-01’ 到 ‘9999-12-31’。
DATETIME ⽇期和时间的组合。格式:YYYY-MM-DD HH:MM:SS 注释:⽀持的范围是从 ‘1000-01-01 00:00:00’ 到 ‘9999-12-31 23:59:59’ 。
TIMESTAMP 时间戳。TIMESTAMP 值使⽤ Unix 纪元(‘1970-01-01 00:00:00’ UTC) ⾄今的描述来存储。格式:YYYY-MM-DD HH:MM:SS 注释:⽀持的范围是从 ‘1970-01-01 00:00:01’ UTC 到 ‘2038-01-09 03:14:07’ UTC。
TIME 时间。格式:HH:MM:SS 注释:⽀持的范围是从 ‘-838:59:59’ 到 ‘838:59:59’。
YEAR 2 位或 4 位格式的年。 注释:4 位格式所允许的值:1901 到 2155。2 位格式所允许的值: 70 到 69,表⽰从 1970 到 2069。

 

posted @ 2019-11-07 22:12  阿拉懒神灯  阅读(218)  评论(0编辑  收藏  举报