一、什么是SQL语言
SQL语言全称叫做结构化查询语言,它是一种计算机语言,但是跟其他编程语言来比较还是有很大区别的。比如说HTML,CSS,Java script,这三种计算机语言是用在网页设计上面的。那么swift语言是用来开发IOS程序的,还有就是C++, C#,还有VB,它们是用来开发桌面程序的,而SQL语言只能用在数据库的操作上。每种数据库的SQL语言并不能100%兼容,比如说有很多oracle的SQL语句,拿到mysql上就执行不了,这种现象叫做SQL语句的方言。
虽说SQL语句有几十种,但是都很简单,所以大家尽可放心学习SQL语句,一共可以分为三大类,
第一类叫做DML:中文称作数据操作语言。对数据表儿的增删改查,基本就是这一类的SQL语句,
第二类SQL语句叫做DCL:中文称作数据控制语言,比如说创建用户,分配权限,以及事务的管理都是属于这一类的。
第三类叫做DDL语言:那么中文称作是数据定义语言,它是用来管理逻辑库,数据表,视图,索引的,一会儿我们要创建的逻辑库和数据表儿用的就是DDL语句。
二、SQL语言分类
编写SQL语句的注意事项我需要说明一下,
首先SQL语句是不区分大小写的,但是字符串儿里边的内容是区分大小写的
比如说下面有一条sql语句,这个select就是关键字,这个关键字你是写成大写的select,或者写成小写的select,或者大小写混着写的select都是可以的,mysql都是可以执行这样的sql语句。但是hello world被双引号儿给引起来以后,它就是一个字符串了,它不是关键字,在这个SQL语句里边,单引号儿和双引号儿都是用来定义字符串儿的,没有任何区别,都是可以通用的。那么比如说我就是希望打印出来的hello world,这个首字母是大写的,其余的字母是小写的,那你就这么写就行了,如果说你把这个hello world写成大写的字母的话,那么打印出来的内容就全都是大写的字母了所以说字符串儿的大写和小写是有区别的,那么关键字是没有区别的,所以我们在写sql语句的时候,我建议大家是关键字大写非关键字小写比如说。我们想查去某一张表的时候,那个表名儿我们就可以是小写的对吧?然后再有就是字符串儿里边,那该大写就写,该小写就小写,看你想输出什么结果。按照这个标准,写出来的sql语句才错落有致,非常方便阅读,那再有,就是sql语句的这个结尾要以英文的分号儿来结尾。还有就是在SQL语句中,这个空白,也就是空格儿,还有这个换行儿是没有限制的,比如说这个select和这个hello world之间,我打一个空格儿,或者说打10个空格儿,甚至说我换行儿这个都没有问题。
三、SQL语言注释
单行注释:如果说我们想在SQL语句中编写注释,那么有两种语法儿可以让我们选择。第一种语法儿是在文字前面加上一个 #。之前我们在看mysql配置文件的时候,发现很多文字前面儿都是以井号儿开头儿的,所以说,那么这段文字它就是一行注释而已,数据库在执行注释的时候直接跳过,不会真正的去执行注释。
多行注释:你只需要在这个注释的开头儿加上 /*,然后在这个注释的结尾加上*/,那里边不管你是写一段文字,两段文字,3段文字不管写多少行儿,那么它都是这个注释,所以这种写法适合多行的注释
四、创建逻辑库
在mysql里边,如果说想要保存数据,必须先有逻辑空间,也就是要在数据目录里边先创建文件夹。
创建逻辑空间的语句叫做create database,后面加上逻辑库的名称就行了。这个逻辑库的名称,建议大家用英文或者英文加数字,但是不建议用中文,那么逻辑库创建出来之后。
咱们现在想显示一下,我这个mysql里边一共有多少个逻辑空间,那么执行的语句叫做show databases就行了,这块儿是复数嘛对吧?是一个名词的复数。
然后再往下,如果说我想删除某一个逻辑空间,执行的sql语句叫做drop database,后面写上这个逻辑库的名字就行了。那么以上这3条语句都是属于DDL的语句
create database 逻辑库名称;show databases; # 展示所有数据库drop database 逻辑库名称;
五、创建数据表
有了逻辑空间,接下来就应该去创建数据表来保存数据了,我们先来看看创建数据表的语法是什么,用到的关键字叫做create table,创建数据表也算是DDL语句,所以说create table这个SQL语句执行完以后,那么我们在数据目录里边就能看到这个数据表对应的文件了一会儿我们把这个数据表建出来,我切换到数据目录里面,咱们去观察一下,那么create table这个关键字后面,要跟上数据表儿的名字,名字呢是英文或者英文加数字。
create table要创建的数据表儿是student,就是学生表,然后其中的一个列也叫字段,那比如说这个ID字段就是学号,然后他的这个数据类型是int, int在数据库里边是整数的意思,因为学号不能有负数,所以说这块儿加上一个unsigned,就是无符号儿的这个整数,也就是说全都是这个没有负数的一个整数。然后再往下加上了一个约束,叫做primary key,这个翻译成中文叫做主键的意思。就是这个ID字段的值是不能重复的,因为大家也知道学号儿不能重复对吧?所以加上primary key这个主键约束以后,咱们的这个ID字段就不能保存重复的值了,如果保存重复的值,数据库会报错儿了。然后再往下,
name字段,它的这个类型是ver chat,ver chat这个类型在数据库里边是字符串儿的意思。因为每个人的这个名字不一样,有的人的名字是两个字的,有的是3个字,还有4个字的,如果是少数民族的话,那这个名字的长度可能还会再长一些,所以在这里边我定义的字符串儿是非固定长度的字符串儿,我只规定了这个字符串儿最大不可以超过20个字符。
然后再往下,这个名字是必须要填写的,不允许这个字段,没有数据,我加上了一个not null的约束。
然后再往下就是性别,因为性别都是固定的嘛,除了是男,要么就是女对吧?所以这个字符串儿就是一个字符是固定的就一个字符,所以这个类型儿就变成了char,不叫做varchar,这个char是固定长度的字符串儿,因为我可以确定就是一个字符,然后是not null也是必填的,
再往下就是出生的日期birthday,然后这个数据类型叫做date,然后也是必须要填的,再往下就是电话,那么手机号码是固定长度的,就是11个字符,它也是必须要填写的,加上not null,最后的话配上一个备注的字段remark,然后类型是varchart,长度是200,这个字符个数只要不超过200都可以
创建数据表事例
create table student(id int unsigned primary key,name varchar(20) not null,sex char(1) not null,birthday date not null,tel char(11) not null,remark varchar(200)
);insert into student values(1,"詹","男","1987-09-08","12323233433",NULL);
六、数据表的其他操作
-
比如说我想查看一下当前逻辑空间里边有什么样的数据表,那就执行show tables这条CQL语句,那打印出来的结果是逻辑空间里边数据表的名字。
2.我想看一下这个数据表的具体情况,那比如说我想看学生表这个具体的情况吧,加一个DESC就可以看到student这个数据表的情况了。
3.我想看这个数据表当初在创建时候的SQL语句可不可以?可以,那执行的语句叫做show create table,后面跟上student这张表就行了,那这个建表语句就可以被我们查询出来了。
4.如果说这个学生表我们不想要了,注意不是删除这个表的数据,是这个数据表我不想要了,那么怎么办?去执行一个语句叫做drop table,后面跟上这个表名就可以了