快捷搜索:
来自 网络数据库 2019-09-23 12:16 的文章
当前位置: 67677新澳门手机版 > 网络数据库 > 正文

基本语法,MySQL学习笔记一

1.证实: 创造默许数据库
create database 库名;

MySQL 学习笔记 一

2.验证: 创立内定字符编码的数据库
create database 库名 character set 字符编码格式;

一、数据库简介

3.表明: 删除数据库
drop database 库名;

1、 依据数据库的上进时间各类,首要出现了以下项目数据库系统:

4.评释: 创制新表
create table 表名 (列名1 列类型 列约束[是还是不是为空,是或不是为主键,是不是主键自动扩大...],
列名2  列类型 列约束[是不是为空,是还是不是为主键,是还是不是主键自动扩充...],
...
列名n 列类型 列约束[是或不是为空,是或不是为主键,是不是主键自动扩充...]
);

Ø 网状型数据库

5.说明: 删除表
drop table 表名;

Ø 档案的次序型数据库

6.表达: 修改表结构
①说明: 添加列
alter table 表名 add 列名 列类型 [约束];
②说明: 修改列
alter table 表名 change 列名 列新名 新列类型 [约束];
③说明: 删除列
alter table 表名 drop 列名;
④验证: 重命名表
alter table 表名 rename 新表名;
⑤表明: 修改表的存放引擎
alter table 表名 engine = '存款和储蓄引擎名';

Ø 关系型数据库

7.注解: 查看当前数据库服务器下具备的数据库
show databases;

Ø 面向对象数据库

8.认证: 查看当前数据库的编码格式
show variables like 'character%';

上面4中数据库系统中,关系型数据库使用最为广泛。面向对象数据库则是由面向对象语言催生的流行数据库,方今的有的数据库系统,如:SQL Server 二〇〇六、Oracle10g等都起来扩张面向对象的表征。

9.评释: 设置当前客商端字符集
set character_set_client = 字符格式;

二、常用基本SQL语句/语法

10.证实: 设置连接字符集
set character_set_connection = 字符格式;

Ø SQL语句基础理论

11.证实: 设置结果字符集
set character_set_results = 字符格式;

SQL是操作和寻觅关系型数据库的职业语言,标准SQL语句可用于操作然后关系型数据库。

12.认证: 使用钦定数据库
use 库名;

规范的SQL语句普通划分为以下项目:

13.申明: 查看当前数据库下有所的表
show tables;

查询语句:驷不如舌出于select关键字完结,查询语句是SQL语句中最复杂,功效最丰盛的话语。

14.表明: 查看表结构
desc 表名;/describe 表名;

DML(Data Munipulation Language,数据操作语言)语句,那组DML语句修改后数据将保持较好的一致性;操作表的话语,如插入、修改、删除等;

15.验证: 查看以前所定义的表的构造的语法
show create table 表名;

DDL(Data Definition Language,数据定义语言)语句,操作数据对象的语言,有create、alter、drop。

16.认证: 查询表中保有数据
show * from 表名;

DCL(Data Control Language,数据调节语言)语句,主要有grant、revoke语句。

17.评释: 查询表中钦赐条件的数量
show * from 表名 where 筛选标准;

事务调控语句:尤为重要有commit、rollback和savepoint五个第一字实现

18.认证: 插入数值
insert into 表名(须要插入数据的列1,列2...列n)  values(对应列的数值1,数值2...数值n);

DDL语句

19.评释: 修改表中数量
update 表名 set 列=‘新值’where 限定修改法规;

DDL语句是操作数据库对象的言辞,包涵创立create、删除drop、修改alter数据库对象。

20.注解: 清空表中数量(可还原)
delete from 表名;

大范围数据库对象

21.认证: 清空表中数据(不可恢复)
truncate table 表名;

对象名称

对应关键字

描述

table

表是数据库存储的逻辑单元,以行和列的形式存在;列是字段,行就是一条数据记录

数据字典

 

就是系统表,存储数据库相关信息的表,系统表里的数据通常有数据库系统维护。系统表结构和数据,开发人员不应该手动修改,只能查询其中的数据

视图

view

一个或多个数据表里的数据的逻辑显示,视图就是一张虚拟的表,并不真正存储数据

约束

constraint

执行数据检验规则,用于保证数据完整性的规则

索引

index

用于提高查询性能,相当于书的目录

函数

function

用于完成一个特定的计算,具有返回值和参数

存储过程

procedure

完成某项完整的业务处理,没有返回值,但可通过传出参数将多个值传个调用环境

触发器

trigger

相当于一个事件的监听器,当数据库发生特定的事件后,触发器被触发,完成响应处理

22.验证: 删除符合钦点条件的多寡
delete from 表名 where 钦点条件;

地方的目的都得以由此用create、alter、drop完成相关的创始、修改、删除操作。

23.验证: 扩展钦定名称的主键
alter table 表名 add constraint 钦赐名称(PK) primary key (供给设为主键的列名);

常用数据类型

24.表明: 删除表中主键
alter table 表名 drop primary key [主键名];

列类型

说明

tinyint/smallint/mediumint int(integer)/bigint

1字节、2字节、3字节、4字节、8字节整数,又可分有符号和无符号两种。这些整数类型的区别仅仅表现范围不同

float/double

单精度、双精度浮点类型

decimal(dec)

精确小数类型,相当于float和double不会产生精度丢失问题

date

日期类型,不能保存时间。当Java里的Date对象保存到该类型中,时间部分丢失

time

时间类型,不能保存日期。当Java的Date对象的保存在该类型中,日期部分丢失

datetime

日期、时间类型

timestamp

时间戳类型

year

年类型,仅保存年份

char

定长字符串类型

varchar

可变长度字符串类型

binary

定长二进制字符串类型,它以二进制形式保存字符串

varbinary

可变长度的二进制字符串类型,二进制形式保存字符串

tingblob/blob

mediumblob/longblob

1字节、2字节、3字节、4字节的二进制大对象,可存存储超图片、音乐等二进制数据,分别可存储:255/64K/16M/4G的大小

tingtext/text

mediumtext/longtext

1字节、2字节、3字节、4字节的文本对象,可存储超长长度的字符串,分别可存储:255/64K/16M/4G的大小的文本

enum(‘val1’, ‘val2’, …)

枚举类型,该列的值只能是enum括号中出现的值的之一

set(‘value1’, ‘value2’, …)

集合类型,该列的值可以是set中的一个或多个值

25.证实: 增添内定名称的外键
alter table 从表名 add constraint 钦赐名称(FK) foreign key (从表中列名) references 主表(主键列);

Ø 常用查询

26.表达: 删除表中指定名称的外键
alter table 表名 drop foreign key [外键名];

MySQL停止符是“;”甘休。

27.认证: 查询表中内定列的值(消除结果中的重复值)
select distinct 列名 from 表名;

1、    显示全数数据库

28.认证: 分页查询
select 列名 from 表名 where 条件 limit 早先地方,表示行数;

show databases;

29.说明: select 语法
select [all|distinct]
*|表名.*|表名.列名 [as 列别名]
from 
表名[as 表别名]
[left|right|inner join 表名2] -- 联合查询
[where 钦命条件] -- 钦定结果需求满意的规范化
[group by 举办分组的列名] -- 钦点结果依据哪几个字段进行分组
[having 钦定分组结果的次要条件] -- 过滤分组的记录必须知足的附带条件
[order by 进行排序的列名 排序方式] -- 钦定询问记录按三个或四个条件排序
[limit 限制标准];

2、    删除数据库

30.表达: 范围查询
select * from 表名 where 列名 between 小值 and 大值;

drop database dbName;

31.注明: 模糊查询
select * from 表名 where 列名 like '模糊查询条件';

3、    成立数据库

32.验证: 查询模糊查询条件中带转义字符的数额
select * from 表名 where 列名 like '转义字符符号_%' escape '转义字符符号';

create database [if not exists] dbName;

33.认证: 富含查询
select * from 表名 where 列名 in (范围);

中括号部分可选的,判定该多少一纸空文就创办

34.说明: 不包含
select * from 表名 where not in (范围);

4、    切换、使用内定数据库

35.证实: 数据为空查询
select * from 表名 where 列名 is null;

use dbName;

36.认证: 数据不为空查询
select * from 表名 where 列名 is not null;

5、    显示当前利用数据库全体的表对象

37.认证: 多表查询
select * from 表1,表2,...表n where 多表中的关系原则;

show tables;

38.认证: 分组查询
select * from 表名 [where 筛选规范] group by 分组列名 [having 分组结果筛选标准];

6、    展现表结构describe(desc)

39.申明: 内连接查询
①隐式内三番五次
select 要查询的列 from 表1,表2...表n where 多表关系原则;
②来得内连接
select 要询问的列 from 表1 inner join 表2 on 多表关系原则;

desc tableName;

40.验证: 外连接查询
①左连接
select 要查询的列 from 表1 left join 表2 on 多表关系原则;
②右连接
select 要询问的列 from 表2 right join 表2 on 多表关系原则;

7、    创建一张表

41.验证: 变量赋值使用
① set @变量名 = 赋值; 或 set @变量名 := 赋值;
② select @变量名 := 赋值; 或 select @变量名 := 字段名 from 表名 where 条件;

create table user (

42.认证: if 条件语句
select if(表达式1,表达式2,表达式3) from 表名 [where 筛选规范...]; 判定表明式1,成立再次来到表明式2结实,不然再次来到表明式3结出。

        --int 整型

43.证实: case 条件语句
① select case when 规范1 then 结实1 when 条件2 then 结实2 ... else 别的结果 end [别名] from 表名 [where 筛选标准...];
② select case 要咬定的字段或表明式 when 常量1 then 结果1 ... else 其他结果 end [别名] from 表名 [where 筛选标准...];

        uId int,

44.说明: 查询 session 变量
show session variables;

        --小数

45.说明: 查询 global 变量
show global variables;

        uPrice decimal,

46.表明: 设置系统变量新值
set @@变量类型.变量名 = 新值;

        --普通长度文本,default设置私下认可值

47.注脚: 主键索引的足够
①创建表时增添: create table 表名 (列名 类型 primary key);
或: create table 表名 (列名 类型 ...,primary key (索引列));
②创设表后增添: alter table 表名 add primary key (索引列);

        uName varchar(255) default ‘zhangsan’,

48.表明: 独一索引的增进
①创造表时加多: create table 表名 (列名 类型 unique);
或: create talbe 表名 (列名 类型...,unique key [索引名] (索引列));
②成立表后增多: alter table 表名 add unique key [索引名] (索引列);

        --超长文本

49.验证: 常规索引的增加
①创造表时增多: create table 表名 (列名 类型 ..., index/key [索引名] (索引列1,索引列2,..));
②创制表后加多: alter table 表名 add index [索引名] (索引列1,索引列2...);

        uRemark text,

50.注明: 全文索引的增多 (只好用于MyISAM 类型的数据表)(用于char,varchar,text数据列类型)
①开立表时加多: create table 表名 (列名 类型 ...,fulltext(索引列))engine = MyISAM;
②创立表后增多: alter table 表名 add fulltext [索引名] (索引列);

        --图片

51.表明: 删除索引
① drop index 索引名 on 表名;
② alter table 表名 drop index 索引名;
③ alter table 表名 drop primary key;

        uPhoto blob,

52.验证: 查看索引
show index[或keys] from 表名;

        --日期

53.认证: 分析SQL语句的实施质量
explain 表名; <==> desc 表名
explain select 语句;

        uBirthday datetime

54.证实: 创设视图
create view 视图名 as <select语句>;

);

55.表明: 删除视图
drop view 视图名;

8、    子查询建表方法

56.验证: 查看视图
select * from 视图名;

一些列名相配情势:

57.证实: 查看全数视图
use information_schema;
select * from views;

create table userInfo (

58.表达: 创制自定义函数
create function 函数名(参数列表)
returns 重临值类型
【begin】 函数主体 【end】;

name varchar(20),

59.验证: 调用函数
select 函数名;

sex char

60.认证: 删除函数
drop function 函数名;

)

61.证实: 自定义函数中的变量
declare 变量名【,变量名2...】 变量数据类型 【default 暗中认可值】;

as

62.证实: 给变量赋值
select 要赋的值 into 要赋值的变量名;
<==> select 要赋值的变量名 := 要赋的值;
<==> set 要赋值的变量名 = 要赋的值;

select name, sex from user;

63.证实: 流程序调控制语句语法:
① if 尺码判别结构
if 条件决断语句1 then 满意条件1输出的结果;
elseif 条件推断语句2 then 满意条件2出口的结果;
...
else 都不满意上述规范输出的结果;
end if;
② case 分支组织
Ⅰ: 等值剖断
case 判定字段/列/变量
when 值1 then 也便是值1出口的结果;
when 值2 then 等于值2输出的结果;
...
else 都不满意上述原则输出的结果;
end case;
Ⅱ: 区间剖断
case 
when 决断标准1 then 满意条件1出口的结果;
when 推断规范2 then 满意条件2输出的结果;
...
else 都不满意上述原则输出的结果;
end case;

地点的列名和子查询的列名以及项目要相应

64.申明: Loop 循环(死循环,一般必要跟leave、iterate)
[begin_label:] Loop
循环语句
end Loop [end_label];

凡事列有名的模特式:

65.证实: Leave 跳出循环调节
leave label;

create table userInfo

66.表明: iterate 跳出此次巡回
iterate label;

as

67.证实: repeat 循环 (满足条件跳出循环)
[begin_label:] repeat
循环语句;
until 甘休循环条件
end repeat [end_label];

select * from user;

68.验证: while 循环 (满意条件时,实行循环内的标准)
[begin_label:] while 加入循环实行的原则 DO
循环语句;
end while [end_label];

一向将全体表的项目和数据备份到新表userInfo中

69.证实: 创设存款和储蓄进程
create procedure 存款和储蓄进度名称 ([仓库储存进度参数INoutinout] 参数名称 参数类型)
begin
仓库储存进度的主心骨;
end;

9、    增多表字段

70.表达: 存款和储蓄进程调用
call 存款和储蓄进程名称(参数);

累加单列

71.认证: 删除存款和储蓄进度
drop procedure 存款和储蓄进程名称;

alter table user add tel varchar(11) default ‘02012345678’;

72.认证: 查看库内全体存款和储蓄进程
show procedure status;

丰盛多列

73.表达: 定义至极
declare 相当名 condition for 格外类型; (sqlstate_value 例: sqlstate '42000'或 mysql_error_code 例: 1148)

alter table user

74.验证: 分外捕获
declare 错误管理情势 handler for 至极名[,...] 错误代码 (管理格局:continue,exit,undo)

add (

75.认证: 关闭自动提交格局
set autocommit = 0;

photo blob,

76.验证: 开启自动提交形式
set autocommit = 1;

birthday date

77.认证: 开端业务
start transaction;

);

78.证实: 提交业务
commit;

地方就同一时间扩张了多列字段

79.证实: 数据回滚
rollback;

10、    修改表字段

修改tel列

alter table user modify tel varchar(15) default ‘02087654321’;

修改tel列的地方,在第一列展现

alter table user modify tel varchar(15) default '02087654321' first;

修改tel列的职责,在内定列之后显得

alter table user modify tel varchar(15) default '02087654321' after age;

静心:alter modify不支持贰遍修改多少个列,但是Oracle帮忙多列修改

而是MySQL能够由此三个modify的方法形成:

alter table user

modify tel varchar(15) default '02087654321' first,

modify name varchar(20) after tel;

11、    删除钦定字段

alter table user drop photo;

12、    重命名表数据

表重命名

alter table user rename to users;

字段重命名

alter table users change name u_name varchar(10);

alter table users change sex u_sex varchar(10) after u_name;

设若急需改动列名建议利用change,假设急需更换数据类型和出示地点可以动用modify

13、 删除表

drop table users;

drop删除表会删除表结构,表对象将不真实数量中;数据也不会设有;表内的指标也荒诞不经,如:索引、视图、约束;

truncate删除表

truncate都被当成DDL出来,truncate的坚守就是剔除该表里的万事数目,保留表结构。也正是DDL中的delete语句,

唯独truncate比delete语句的进度要快得多。可是truncate无法带条件删除钦赐数量,只会去除全数的数量。假如去除的表有外键,

去除的快慢类似于delete。但新本子的MySQL中truncate的进程比delete速度快。

Ø 约束

MySQL中约束保存在information_schema数据库的table_constraints中,能够透过该表查询约束新闻;

自律首要成就对数码的检察,保险数据库数据的完整性;假如有相互注重数据,保障该数据不被删除。

常用五类约束:

not null:非空约束,内定某列不为空

unique: 独一约束,钦定某列和几列组合的数额无法重复

primary key:主键约束,钦定某列的数量不能够重复、独一

foreign key:外键,钦点该列记录属于主表中的一条记下,参照另一条数据

check:检查,钦命三个表明式,用于核查钦定数量

MySQL不支持check约束,但足以行使check约束,而尚未别的功效;

依据约束数据列限制,约束可分为:

单列约束:各类约束只约束一列

多列约束:种种约束约束多列数据

MySQL中约束保存在information_schema数据库的table_constraints中,能够因而该表查询约束消息;

1、    not null约束

非空约束用于确定保障当前列的值不为空值,非空约束只可以出现在表对象的列上。

Null类型特征:

装有的档案的次序的值都足以是null,包蕴int、float等数据类型

空字符串“”是不等于null,0也不对等null

create table temp(

        id int not null,

        name varchar(255) not null default ‘abc’,

        sex char null

)

上边包车型大巴table加上了非空约束,也能够用alter来修改或扩张非空约束

充实非空约束

alter table temp

modify sex varchar(2) not null;

注销非空约束

alter table temp modify sex varchar(2) null;

撤回非空约束,扩大暗中同意值

alter table temp modify sex varchar(2) default ‘abc’ null;

2、    unique

独一约束是钦定table的列或列组合无法重新,保证数据的独一性。纵然独一约束不一样意出现重复的值,可是可感觉八个null

同一个表能够有多个独一约束,几个列组合的羁绊。在开立独一约束的时候,假诺不给独一约束名称,就暗许和列名同样。

独一约束不仅能够在五个表内创制,并且能够並且多表成立组合独一约束。

MySQL会给独一约束的列上默认创造一个独一索引;

create table temp (

        id int not null,

        name varchar(25),

        password varchar(16),

        --使用表级约束语法,

        constraint uk_name_pwd unique(name, password)

);

代表顾客名和密码组合不能够重复

拉长独一约束

alter table temp add unique(name, password);

alter table temp modify name varchar(25) unique;

去除约束

alter table temp drop index name;

3、    primary key

主键约束相当于独一约束 非空约束的结合,主键约束列不允许再次,也不容许出现空值;如若的多列组合的主键约束,

那么这个列都分裂意为空值,并且结合的值差异意再一次。

每种表最五只同意二个主键,建构主键约束能够在列等级创立,也得以在表品级上创设。MySQL的主键名总是P凯雷德IMAENVISIONY,

当创设主键约束时,系统暗许会在所在的列和列组合上成立相应的独一索引。

列模式:

create table temp(

    /*主键约束*/

    id int primary key,

    name varchar(25)

);

create table temp2(

    id int not null,

    name varchar(25),

    pwd varchar(15),

    constraint pk_temp_id primary key(id)

);

结合方式:

create table temp2(

    id int not null,

    name varchar(25),

    pwd varchar(15),

    constraint pk_temp_id primary key(name, pwd)

);

alter删除主键约束

alter table temp drop primary key;

alter加多主键

alter table temp add primary key(name, pwd);

alter修改列为主键

alter table temp modify id int primary key;

设置主键自增

create table temp(

        id int auto_increment primary key,

        name varchar(20),

        pwd varchar(16)

);

auto_increment自增方式,设置自增后在插入数据的时候就没有供给给该列插入值了。

4、    foreign key 约束

外键约束是确定保证一个或七个表之间的参阅完整性,外键是营造于叁个表的三个字段或是七个表的四个字段之间的参谋关系。

也正是说从表的外键值必得在主表中能找到或然为空。

当主表的笔录被从表参照时,主表的记录将不允许删除,假设要刨除数据,必要先删除从表中重视该记录的多少,

然后才得以去除主表的数量。还会有一种正是级联删除子表数据。

瞩目:外键约束的参照列,在主表中援引的只可以是主键或独一键约束的列,假定引用的主表列不是不二法门的笔录,

那么从表援用的数额就不明确记录的职分。同四个表能够有七个外键约束。

始建国门外键约束:

主表

create table classes(

新京葡娱乐场网址 ,        id int auto_increment primary key,

        name varchar(20)

);

从表

create table student(

        id int auto_increment,

        name varchar(22),

        constraint pk_id primary key(id),

        classes_id int references classes(id)

);

本文由67677新澳门手机版发布于网络数据库,转载请注明出处:基本语法,MySQL学习笔记一

关键词: