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。 |