mysql基础学习内容总结

RDBMS

RDBMS 指的是关系型数据库管理系统

RDBMS是SQL的基础,同样也是所有现代数据库系统的基础,比如MS SQL Server,IBM DB2,Oracle, MySQL以及Microsoft Access。

RDBMS中的数据存储在被称为表(tables)的数据库对象中。
表是相关的数据项的集合,它由列和行组成。

SQL DMI 和DDL

可以把SQL分为两个部分:数据操作语言(DML)和数据定义语言(DDL)。

**SQL(结构化查询语言)**是用于执行查询的语法。但是SQL语言也包含用于更新、插入和删除记录的语法。

·select
·update
·delete
·insert into

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

SQL中最重要的DDL语句:
·create database
alter database
create table
alter table
drop table
create index -创建索引(搜索键)
**drop index ** -删除索引

基础语法

select

select 列名称(,列名称,列名称) from 表名称
select * from 表名称

DISTINCT

搜索出来的值不重复

select distinct 列名称 from 表名称

where

select 列名称 from 表名称 where 列 运算符 值
ey:
select * from Persons where City = 'Beijing'
注:文本值要用'单引号'括起来,但是数值不用

=、<、>、基础运算符
between在某个范围内
like搜索某种模式

and 和 or运算符

and 和 or 可在 where 子语句中把两个或多个条件结合起来。
结合起来and 和 or

select * from Persons where (FirstName='Thomas' OR FirstName='William') and LastName='Carter'

order by

order by 语句用于根据指定的列对结果集进行排序
order by 默认按照升序对记录进行排序
降序DESC

#以逆字母顺序显示公司名称,并以数字顺序显示顺序号:
select Company,OrderNumber from Orders order by Company desc, OrderNumber asc

insert into

insert into 表名称 values (1,值2,……)
insert into table_name (1,列2,……) values (1,2,……)
insert into Persons values ('Gate','Bill','Xuanwumen 10','Beijing')

update

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

delete

#删除某行
delete from 表名称 where 列名称 =#删除所有行
delete * from table_name

高级教程

top

top子句用于规定要返回的记录的数目。
例:选取5条信息

SELECT column_name(s)
FROM table_name
LIMIT number

(1)选取头两条信息

SELECT TOP 2 * FROM Persons

(2)选取前百分之多少

SELECT TOP 50 PERCENT * FROM Persons

like

SELECT column_name(s)
FROM table_name
WHERE column_name LIKE pattern

**%**是通配符
其中也可以选择不像,即 NOT LIKE

SELECT * FROM Persons
WHERE City NOT LIKE '%lon%'

SQL通配符

在这里插入图片描述
1.使用%通配符
搜寻名字中带有lond的城市

SELECT * FROM Persons
WHERE City LIKE '%lond%'

2.使用_通配符
搜寻第一个字符之后是"eorge"的城市

SELECT * FROM Persons
WHERE FirstName LIKE '_eorge'

3.使用 [charlist] 通配符
我们希望从上面的 “Persons” 表中选取居住的城市以 “A” 或 “L” 或 “N” 开头的人:

SELECT * FROM Persons
WHERE City LIKE '[ALN]%'

我们希望从上面的 “Persons” 表中选取居住的城市不以 “A” 或 “L” 或 “N” 开头的人:

SELECT * FROM Persons
WHERE City LIKE '[!ALN]%'

in

IN 操作符允许我们在 WHERE 子句中规定多个值

SELECT column_name(s)
FROM table_name
WHERE column_name IN (value1,value2,...)

BETWEEN 操作符

操作符 BETWEEN … AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

SELECT column_name(s)
FROM table_name
WHERE column_name
BETWEEN value1 AND value2

as

表的 SQL Alias 语法

SELECT column_name(s)
FROM table_name
AS alias_name

列的 SQL Alias 语法

SELECT column_name AS alias_name
FROM table_name

join 和 key

有时为了得到完整的结果,我们需要从两个或更多的表中获取结果。我们就需要执行 join。

数据库中的表可通过键将彼此联系起来。主键(Primary Key)是一个列,在这个列中的每一行的值都是唯一的。在表中,每个主键的值都是唯一的。这样做的目的是在不重复每个表中的所有数据的情况下,把表间的数据交叉捆绑在一起。
引用两个表

SELECT Persons.LastName, Persons.FirstName, Orders.OrderNo
FROM Persons, Orders
WHERE Persons.Id_P = Orders.Id_P 

SQL JOIN - 使用 Join

除了上面的方法,我们也可以使用关键词 JOIN 来从两个表中获取数据。

select Persons.LastName, Persons.FirstName, Orders.OrderNo
from Persons
inner join Orders
on Persons.Id_P = Orders.Id_P
order by Persons.LastName

除了我们在上面的例子中使用的 INNER JOIN(内连接),我们还可以使用其他几种连接。
join: 如果表中有至少一个匹配,则返回行
left join: 即使右表中没有匹配,也从左表返回所有的行
right join: 即使左表中没有匹配,也从右表返回所有的行
**full join **: 只要其中一个表中存在匹配,就返回行

union

SELECT column_name(s) FROM table_name1
UNION
SELECT column_name(s) FROM table_name2

**注释:**默认地,UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。

select into

把所有的列/希望的列插入新表

select */column_name(s)
into new_table_name [in externaldatabase] 
from old_tablename

向另一个数据库中拷贝表

select *
into Persons in 'Backup.mdb'
fromPersons

后面可以+where …

create database

create database databse_name

create table

create table 表名称
(
列名称1 数据类型,
列名称2 数据类型,
列名称3 数据类型,
....
)

在这里插入图片描述

SQL约束
not null
unique
primary key
foreign key
check
default

unique约束

create table Persons
(
Id_P int not null,
LastName varchar(255) not null,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
unique (Id_P)
#多个限制条件时
constraint uc_PersonID unique (Id_P,LastName)
)

当表已经被创建时,如需在“Id_P”列创建unique约束

alter table Persons
add unique (Id_P)
#多个约束时
add constraint uc_PersonID unique (Id_P,LastName)

撤销unique约束

alter table Persons
drop index uc_PersonID

key

key的联合索引

mysql索引

mysql联合索引详解

primary key

primary key 约束 唯一标识数据库表中的每条记录主键
必须包含唯一的值
主键列不能包含null值
每个表都应该有一个主键,并且

1.'最后加'primary key (Id_P)
2.Id_P int not null primary key
3.constraint pk_PersonID primary key (Id_P,LastName)
#表已经创建的时候
alter table Persons
add primary key (Id_P)

撤销primary key 约束

alter table Persons
drop primary key

foreign key

外键约束
foreign key 约束用于预防破坏表之间连接的动作
也能防止非法数据插入外键列,因为它必须是它指向的那个表的值之一。

create table Orders
(
Id_O int NOT NULL,
OrderNo int NOT NULL,
Id_P int,
PRIMARY KEY (Id_O),
foreign key (Id_P) references Persons(Id_P)
)

在表已经存在的情况下

alter table Orders
add constraint fk_PerOrders
foreign key (Id_P)
references Persons(Id_P)
#删除的话
alter table Orders
drop foreign key fk_PerOrders

check约束

check约束用于限制列中的值的范围
如果对单个列定义check约束,那么该列只允许特定的值
如果对一个表定义check约束,那么此约束会在特定的列中对值进行限制。

create table Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255),
check (Id_P>0)
)
#如果需要多个约束
constraint chk_Person check (Id_P>0 AND City='Sandnes')

在表已经存在的情况下

alter table Persons
add check (Id_P>0)
#多个约束时
add constraint chk_Person check (Id_P>0 AND City='Sandnes')

撤销check约束

alter table Persons
drop chk_Person

default约束

default约束用于向列中插入默认值
如果没有规定其他的值,那么会将默认值添加到所有的新纪录

CREATE TABLE Persons
(
Id_P int NOT NULL,
LastName varchar(255) NOT NULL,
FirstName varchar(255),
Address varchar(255),
City varchar(255) default 'Sandnes'
)
alter table Persons
alter City set default 'sandnes'
alter table Persons 
alter City drop default

create index

索引
可以在表中创建索引,以便更加高效地查询数据
用户无法看到索引,他们只能被用来加速/查询
若是需要不重复的,则加一个unique

create (unique) index indx_name
on table_name (column_name desc)

不加东西默认为 自动升序 若是降序加desc

若是希望索引的不止一个列,可以在括号中列出这些列的名称

create index PersonIndex
on Person (LastName,FirstName)

drop

alter table table_name drop index index_name
#删除表
drop table 表名称
#删除数据库
drop database 数据库名称
#仅仅需要除去表内的数据,但并不删除表本身
truncate table 表名称

alter

alter table table_name
add column_name datatype
#删除
drop column column_name
#修改列的数据类型
alter column column_name datatype

– 新增流水号字段,修改类型的注释
ALTER TABLE cps.cps_audit
MODIFY COLUMN audit_type int(1) NULL DEFAULT NULL COMMENT ‘0 自助 1 远程 2 现场’ AFTER audit_status,
ADD COLUMN sn varchar(255) NULL COMMENT ‘流水号’ AFTER id;

##int类型1个字节长度,可为空,且默认为空
int(1) NULL DEFAULT NULL 
##在字段`audit_status`后增加字段
AFTER `id`

auto increment

P_Id int not null auto_increment,
alter table Persona auto_increment=100

comment列描述

列描述就是对每个字段进行注释,用来给程序员或DBA进行提示。使用comment进行定义

create table t2(
b varchar(32) comment '姓名'
);

ENGINE=InnoDB

代表使用innodb引擎,是MySQL的数据库引擎之一,为MySQL发布binary的标准之一。
default charset = utf8 数据库默认编码为utf-8

SQL Date
SQL Nulls
SQL isnull()
SQL 数据类型
SQL 服务器

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值