sql基本语法,从最基础开始。
目录
一、sql基本情况介绍
1.sql分类:1、DML(date manipulation language)数据操作语言,操作数据库中表里的数据,语句eg:insert update delete
2、DCL(data control language)数据控制语言,操作访问,安全级别。语句eg:grant deny
3、DQL(data query langua)数据查询 语句eg:select
2.三大范式:1、第一范式指数据库表的每一列都是不可分割的基本数据项,同一列中不能有多个值,即实体中的某个属性不能有多个值或者不能有重复的属性。
2、第二范式属性完全依赖于主键,要求数据库表中的每个实例或行必须可以被唯一地区分。为实现区分通常需要为表加上一个列,以存储各个实例的惟一标识。
3、第三范式:表中的非主键列必须和主键直接相关而不能间接相关;也就是说:非主键列之间不能相关依赖。(数据库表中不包含已在其它表中已包含的非主关键字信息。)
三大范式理解起来非常复杂困难,具体可以查看第一范式、第二范式、第三范式、BCNF范式详解_i胡说的博客-CSDN博客
但是这个讲解里面也有一点点bug,但是能够帮助理解。
3.数据库的数据类型:1、整数类型。tingyint、smallint、mediumint、int、bigint。
2、浮点类,定点类。浮点:float double。定点:decimal(m,d)。m表数据长度,d表示小数点后长度。eg:decimal(6,3)34.12345→34.123
3、字符串。char varcahr 。char类型,不管插入的值是多少,在定义的时候就已经确定了,eg:char(3)=12345.存储为123.varchar会自动调节,存储可变长度字符串。
4、文本类型。文本用于表示大文本数据,eg:文章,详情。分为:tinytext、text、mediumtext、longtext。没啥好介绍的。
5、时间日期类型。year、date、time、datetime、timestamp。
具体使用比较麻烦,需要仔细。year类型表示年份。1、四位字符串或数字表示:’1901’—'2155’或1901—2155。2、两位字符串表示范围为’00’—‘99’。00’—'69’范围的值会被转换为 2000—2069范围的YEAR值,‘70’—'99’范围的值会被转换为1970—1999范围的YEAR 值。例如,输人’19’插人到数据库中的值为2019。3、两位数字表示,范围为1—99。其中,1—69范围的值会被转换为2001— 2069范围的YEAR值,70—99范围的值会被转换为1970—1999范围的YEAR值。例 如,输人19插入到数据库中的值为2019。当使用YEAR类型时,一定要区分’0’和0。因为字符串格式的’0’表示的YEAR值是2000而数字格式的0表示的YEAR值是0000。
time类型表示时间。一般形式HH:MM:SS,mysql使用三种格式指定,1、以’D HH:MM:SS’字符串格式表示。其中,D表示日可取0—34之间的值, 插人数据时,小时的值等于(DX24+HH)。例如,输入’2 11:30:50’插人数据库中的日期为59:30:50。2、以’HHMMSS’字符串格式或者HHMMSS数字格式表示。 例如,输人’115454’或115454,插入数据库中的日期为11:54:54 3、使用current_time或now()输人当前系统时间。
datetime类型,表示日期和时间显示形式为’YYYY-MM-DD HH: MM:SS’。有4种格式指定,1、以’YYYY-MM-DD HH:MM:SS’或者’YYYYMMDDHHMMSS’字符串格式表示的日期和时间,取值范围为’1000-01-01 00:00:00’—‘9999-12-3 23:59:59’。2、以’YY-MM-DD HH:MM:SS’或者’YYMMDDHHMMSS’字符串格式表示的日期和时间,其中YY表示年,取值范围为’00’—‘99’。与DATE类型中的YY相同,‘00’— '69’范围的值会被转换为2000—2069范围的值,‘70’—'99’范围的值会被转换为1970—1999范围的值。3、以YYYYMMDDHHMMSS或者YYMMDDHHMMSS数字格式表示的日期 和时间。例如,插入20190122090123或者190122090123,插人数据库中的DATETIME值都 为 2019-01-22 09:01:23。4、使用NOW来输人当前系统的日期和时间。
timestamp类型。表示日期和时间显示形式与datetime相同但取值范围比datetime小。1、使用CURRENT_TIMESTAMP输人系统当前日期和时间。2、输人NULL时系统会输人系统当前日期和时间。3、无任何输人时系统会输入系统当前日期和时间。
二进制类型。
在MySQL中常用BLOB存储二进制类型的数据,例如:图片、PDF文档等。BLOB类型分为如下四种:tinyblob、blob、mediumblob、longblob。
二、sql基本语法,从登陆开始。
2.1登陆数据库。
sql语法:在配置过环境变量后直接在cmd输:mysql -hlocalhost -uroot -p123456
-h是主机名,这个可以不输入本文这里代表本地服务器。
-u是用户名,输入自己的用户名。
-p是密码,可以直接输入-p然后输入匿名密码。
没有配置环境变量可以在mysql。exe路径下,输cmd回车跳转。
2.2数据库操作,创建查询修改删除
sql语法:create database 数据库名(ppsql); 注意:切记所有sql语句后跟;
创建数据库
sql 语法:显示所有数据库:show databases;
sql语法:上面两个语法合在一起就是创建后查看一个数据库信息:show create database ppsql;(注意这个语句并不能直接创建数据库,需要创建后再查询。)
sql语法:删除掉数据库:drop database (数据库名)ppsql;
sql语法:alter database ppsql character set gbk;
修改数据库字符集(具体的修改数据库字符集有很多方法和选择,需要按照具体情况选择,这里不多做叙述,只介绍修改当前数据库字符集的办法)
sql语法:切换数据库:use 数据库名(ppsql);
sql语法:查看当前使用的数据库:select database();
2.3数据表的操作。
2.3.1数据表的查询
sql语句:创建数据表:create table 数据表名(ppname)(字段名 字段类型, 。。。 ,);
注意:数据表的创建可以有很多操作,后面会详细说明,现在只介绍简单操作。
sql语句:查看当前数据库的所有表:show tables;
sql语句: 查看表的基本信息:show create table ppname;
sql语句: 查看表的字段信息:desc ppname;
2.3.2数据表的修改
数据表修改基本都要使用alter table语句。
sql语句:修改表名:alter table ppname rename to ppnames; 注意:使用关键词rename to
sql语:修改字段名:alter table ppnames change name names varchar(10);
注意:此段代码的含义为修改字段名name 为names 并指定类型为varchar(10);后面必须跟进类型varchar(10),说明此代码能够完成重命名的同时修改数据类型,注意必须添加数据类型,否则代码会报错。(目前我不知道有没有只改名字的方法)
SQL语句:修改字段数据类型:alter table ppnames modify names varchar(20)
此段代码将ppnames表中的names字段的数据类型改为了varchar(20),注意关键字modify。
sql语句:增加字段:alter table ppnames add address int(); int类型默认是11字符需要注意
sql语句:删除字段:alter table ppnames drop address;
sql语句:删除表:alter table drop ppnames;
2.4数据表的约束。
数据表一般有五种约束。为防止错误的数据被插入到数据表,MySQL中定义了一些维护数据库完整性的规则;这些规则常称为表的约束。常见约束如下:1、主键约束:primary key 2、外键约束:foreign key 3、非空约束:not null 4、唯一性约束:unique 5、默认值约束:default。
以上五种约束条件针对表中字段进行限制从而保证数据表中数据的正确性和唯一性。换句话说,表的约束实际上就是表中数据的限制条件。
2.4.1主键约束
主键约束即primary key用于唯一的标识表中的每一行。被标识为主键的数据在表中是唯一的且其值不能为空。主键约束基本语法:
字段名 数据类型 primary key;
主键有两种设置方式,方式一:
create table ppname (id int primary key,name varchar(10));
方式二:
create table ppnames (id int, name varchar(10),primary key(id));
2.4.2非空约束
非空约束即 not null 指的是字段的值不能为空,基本的语法格式如下所示:
字段名 数据类型 not null;
create table ppname1(id int,name varchar(10)not null);
2.4.3默认值约束
default用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值;
字段名 数据类型 default 默认值;
create table ppname2(id int,name varchar(20),gender varchar(10)default ‘male’ );
2.4.4唯一性约束
唯一性约束即UNIQUE用于保证数据表中字段的唯一性,即表中字段的值不能重复出现。
字段名 数据类型 unique;
create table ppname3(id int,name varchar(10)unique)
2.4.5外键约束
外键约束即foreing key常用于多张表之间的约束。
创建时语法:constraint 外键名 foreing key (从表外键字段)references 主表(主键字段);
创建好后语法:alter table 从表名 add constraint 外键名 foreign key(从表外键字段)references 主表(主键字段);
alter table ppnamef add constraint fk_ppname_ppnamef foreign key(nameid) references ppname(id);
删除外键:
alter table ppnamef drop foreign key fk_ppname_ppnamef;
未按待续23\4\11\20.00