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。