SQL学习笔记

SQL学习笔记

SQL基础

1.SQL是什么?
SQL (Structured Query Language:结构化查询语言) 是用于管理关系数据库管理系统

2.SQL能干什么?
(1)对数据增删改查
(2)在数据库中建表、建存储过程、建视图等
(3)创建新数据库
(4)设置表、存储过程和视图的权限

3.在cmd中运行MYSQL
进入MySQL :mysql -uroot -p密码
退出MySQL :quit或exit

4.简单命令
show databases;
use 数据库名;
show tables;
set 列名 gbk(utf8);[设置某列字符编码格式]

select 数据库中提取数据
update 更新数据库中数据
delete 删除数据
insert into 插入数据
create datebase 创建新的数据库
alter database 修改数据库
create table 创建新表
alter table 修改表
drop table 删除表
create index 创建索引
drop index 删除索引

select distinct column_name,… from table_name;返回唯一不同的值

where 子句:筛选记录
运算符
= 等于
<>(!=) 不等于
.>= 大于等于
<= 小于等于
between and 介于两者之间
like 模糊搜索
in 集合搜索

多条件选取:and和or
SELECT * FROM Websites WHERE alexa > 15 AND (country=‘CN’ OR country=‘USA’)

排序:order by(默认asc升序排列)
对一列或多列排序,默认升序,加desc降序
多列排序,先排第一列,在排第二列,desc只对紧跟着的列起作用

insert into:插入数据
insert into table_name(列名…) values (值…) [指定列插入数据,其他列用0填充]

更新数据库:update
update table_name set 列1 = 值1,列2 = 值2… where 对应列 = 对应值;[where子句规定哪些记录需要更新,如果忽略where,那么全表都会更新]
update websites set alexa = ‘5000’,country = ‘USA’ where name = ‘菜鸟教程’;

删除:delete[一条记录一条记录的删除]
delete from table_name where 对应列 = 对应值;[忽略where,所有记录都会删除]
delete from websites where name = ‘Facebook’ and country =‘USA’;
delete from table_name;[删除全表记录,不删除表结构]
drop:修改表结构,删除表索引、列、整张表…
truncate :删除表所有内容,不删除表结构[与delete不同,truncate删除后会释放空间]
delete 命令删除的数据将存储在系统回滚段中,需要的时候,数据可以回滚恢复,而 truncate 命令删除的数据是不可以恢复的

高级教程

1.select top:返回指定记录数
在MySQL中使用limit返回指定记录数
select * from websites order by alexa limit 2;

2.like:where 子句中模糊搜索
%:代表0个或多个字符
_ :代表一个字符
问:查询名字中包含**的问题

3.not
(not) between and
(not) in
(not) like

4.in 和between and 组合
SELECT * FROM Websites WHERE (alexa BETWEEN 1 AND 20) AND country NOT IN (‘USA’, ‘IND’);

5.别名 as

6.连接
A inner join B 取交集。
A left join B 取 A 全部,B 没有对应的值为 null。
A right join B 取 B 全部 A 没有对应的值为 null
在使用 join 时,on 和 where 条件的区别如下:
(1) on 条件是在生成临时表时使用的条件,它不管 on 中的条件是否为真,都会返回左边表中的记录。
(2)where 条件是在临时表生成好后,再对临时表进行过滤的条件。这时已经没有 left join 的含义(必须返回左边表的记录)了,条件不为真的就全部过滤掉。

7.UNION 操作符
合并两个或多个 SELECT 语句的结果
select country from websites union select country from apps;
–连接两个表的查询结果集,重复的不显示
select country from websites union all select country from apps order by country;
–连接俩个个表的查询结果集,显示重复
select country,name from websites where country = ‘CN’ union all
select country,app_name from apps where country=‘CN’ order by name;
–通过where条件查询的结果,连接两个表的结果集,并根据名字排序。
使用UNION命令时需要注意,只能在最后使用一个ORDER BY命令,是将两个查询结果合在一起之后,再进行排序

8.SELECT INTO 语句(MySQL不支持)
SELECT INTO 语句从一个表复制数据,然后把数据插入到另一个新表中。

9.MySQL支持insert into select
拷贝数据到新表中:CREATE TABLE 新表 AS SELECT * FROM 旧表
我们可以从一个表中复制所有的列插入到另一个已存在的表中:
INSERT INTO table2 SELECT * FROM table1;
或者我们可以只复制希望的列插入到另一个已存在的表中:
INSERT INTO table2 (column_name(s)) SELECT column_name(s) FROM table1;

(1)复制表结构及其数据:
create table table_name_new as select * from table_name_old
(2) 只复制表结构:
create table table_name_new as select * from table_name_old where 1=2;
或者:
create table table_name_new like table_name_old
(3)只复制表数据:
如果两个表结构一样:
insert into table_name_new select * from table_name_old
如果两个表结构不一样:
insert into table_name_new(column1,column2…) select column1,column2… from table_name_old

10.创建数据库
create database 数据库名称;

11.创建表
create table 表名(列名1 数据类型,列名2 数据类型…);

12.约束(规定表中的数据规则)
(1)NOT NULL - 指示某列不能存储 NULL 值。
(2)UNIQUE - 保证某列的每行必须有唯一的值。
(3)PRIMARY KEY - NOT NULL 和 UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到表中的一个特定的记录。
(4)FOREIGN KEY - 保证一个表中的数据匹配另一个表中的值的参照完整性。
(5)CHECK - 保证列中的值符合指定的条件。
(6)DEFAULT - 规定没有给列赋值时的默认值。

13.auto-increment
用于 MySQL 的语法
下面的 SQL 语句把 “Persons” 表中的 “ID” 列定义为 auto-increment 主键字段:
CREATE TABLE Persons
(
ID int NOT NULL AUTO_INCREMENT,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
PRIMARY KEY (ID)
)

14.MySQL日期函数
NOW()
返回当前的日期和时间
CURDATE()
返回当前的日期
CURTIME()
返回当前的时间
DATE()
提取日期或日期/时间表达式的日期部分
EXTRACT()
返回日期/时间的单独部分
DATE_ADD()
向日期添加指定的时间间隔
DATE_SUB()
从日期减去指定的时间间隔
DATEDIFF()
返回两个日期之间的天数
DATE_FORMAT()
用不同的格式显示日期/时间

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值