SQL简介
SQL(Structured Query Language:结构化查询语言)是用于管理关系数据库管理系统(RDBMS).SQL的范围包括数据插入、查询、更新和删除,数据库模式创建和修改,以及数据访问控制。
SQL功能:
SQL面向数据库执行查询;SQL可从数据库取回数据; SQL可在数据库中插入新的记录; SQL可更新数据库中的数据;
SQL可从数据库删除记录; SQL可创建新数据库; SQL可在数据库中创建新表;SQL可在数据库中创建存储过程;
SQL可在数据库中创建视图;SQL可以设置表、存储过程和视图的权限。
简单说就是对数据进行增删改查,建新表旧表等。
数据库的表
一个数据库会有一个或者多个表,使用矩阵的样式,分为行和列:
SQL语法概述
在每一句命令请求结束之后要加上分号,这样算一条请求命令的结束,否则系统会认为一直没有结束,不会执行。另外在输入命令时,系统不区分大小写。
SQL分类
可以把SQL分为三个部分:数据操作语言(DML)、数据定义语言(DDL)和数据控制语言(DCL)。
- SQL的DML部分:(增删改查)
SELECT -从数据库表中获取数据
UPDATE- 更新数据库表中的数据DELETE -从数据库表中删除数据
INSERT INTO-向数据库表中插入数据
SQL的数据定义语言(DDL)部分可以创建或删除表格。也可以定义索引(键),规定表之间的链接,以及施加表间的约束。 - SQL的DDL语句:(创建删除表)
CREATE DATABASE-创建新数据库
ALTER DATABASE修改数据库
CREATE TABLE–创建新表
ALTER TABLE–变更(改变)
数据库表DROP TABLE-删除表 - SQL的数据控制语言(DCL),是用来设置或者更改数据库用户或角色权限的语句:(权限设置)
GRANT-赋予用户特权
REVOKE-收回赋予用户的特权。
SQL语法实操
创建、删除数据库
这里从cmd进入,也可以使用navicat,由于navicat的结果无法同时显示,效果不好,所以不适用,自己做的时候完全可以使用navicat,并且navicat含有命令提示符。
creat database XXX(想要创建的库的名称);
如果要删除也简单,语法为:drop database XXX(要删除的文件名);
数据库的查看
表的各种操作
创建表语法:
creat table 表名(
列名1 数据类型,
列名2 数据类型,
……
)
数据类型(常用):
char(size):用于存放字符串,括号中是字符串的指定长度,最多为255个字符。
varchar(size):用于存放字符串,括号中是字符串的最大长度,最多为255个字符。
text:存放最大长度为65535的字符串。
数值类型:
int(size):从-21亿到+21亿,或者从0-42亿(无符号的话),在括号中规定最大的位数。
float(size,d):浮点数,在括号中规定最大位数,d表示小数点右边可以保留多少位。
日期类型:
DATE():日期,格式为AAAA-BB-CC,记录的是年月日。范围从1000-01-01到9999-12-31.
TIME():时间,格式为HH:MM:SS,范围从-838:59:59到838-59-59;
YEAR():2位或者4位格式的年。4位的话允许从1901-2155。2位格式允许的值:70到69,表示从1970-2069年。
创建一个表:
使用show create table可以查看刚才创建的表都有了哪些。
修改表:
添加:
语法:alter table 表名 add 新名 类型;表示在表中新添加一列。
修改:
语法:alter table 表名 change 原来的 新的 新的类型;
是否允许为空:
就是在修改的基础上添加一个not null即可:alter table 表名 change 名字 名字 属性 not null。这样的话,以后在往里面进行填写值的时候,如果不往里面写东西,那就会报错。
删除一列:
语法:alter table 表名 drop column 列名;
举例:alter table safe drop column time;
删除整张表:
语法:drop table safe;这个可以自己删除试试,然后再新建一遍,就不做演示了。
查看表:
语法:desc 表名;图中的key是主键的意思,具有以下性质:PRIMARY KEY 约束唯一标识数据库表中的每条记录。主键必须包含唯一的值。主键列不能包含 NULL 值。每个表都应该有一个主键,并且每个表只能有一个主键。
设置主键:
语法:alter table 表名 add primary key(要设置的那一列表名);
数据插入:
insert into 表名(列名,列名…) values(值,值…);其中值一定要对应,不能写多,也不能写少。如果某列不想写内容,那就直接不要写第一个括号里面的列名就可以。
如果要插入很多列,一次一次的写有些麻烦,这个时候可以这么写:
其中now()是一个函数,直接显示出现在的时间,比较省事。
更新表的内容:
语法:update 表名 set 某一列=新值 whre 可以唯一标识的列=列名;
为什么要使用where是因为要确定是哪一行,由此来作为一个标识。
如果想更新某一行的多个值,可以:
删除某一行:
语法:delete from 表名 where 唯一标识的列名=要删除的那一行。
如果要删除整张表,可以使用delete from 表名;
查询特定列:
语法:select 列名,列名 from 表名;
改名:
现在我想在使用查询的时候,让某一列的名称变为另外一个,可以使用:
语法:select 列名 as 新名,别的列 from 表名。
条件查询语句:
模糊查询:
使用关键词like进行查询:
按序排序:
关键词order by:
自主创建主键字段:
我们已经知道,主键字段是不可以为空的。现在如果给已经设置了主键的字段添加auto-increment字段,那么在再次进行插入时,就无需在进行写该字段,系统也不会报错。
合并: