一、SQL的概念
SQL:是Structured Query Language(结构化查询语言)的缩写。它是对关系型数据库的操作语言,就是定义了一些操作关系型数据库的统一规范。而每一种数据库管理系统之间又存在一些不同之处,这些不同之处称之为"方言"。
二、SQL的分类
SQL语句分为以下四类:
- DCL(Data Control Language):数据控制语言,用来操作用户,完成用户权限的相关控制(开发几乎用不到);
- DDL(Data Definition Language):数据定义语言,用来操作库、表;
- DML(Data Manipulation Language):数据操作语言,用来操作表中存储的数据,但是只能完成增、 删 、改;
- DQL(Data Query Language):数据查询语言,用来操作表中存储的数据,但是只能完成查。
三、注意事项
- SQL语句的关键字不区分大小写(MySQL查询时数据库中的值也不区分大小写,Oracle查询时数据库中的值严格区分大小写);
- SQL语句都以';'结束;
- SQL中单引号和双引号都一样表示字符串;
- 关键字(keyword)作为SQL组成部分的保留字,关键字不能用作表或列的名字;
- 注释分为单行注释( -- 或 # )和多行注释( /* */ )。
四、SQL之DDL(操作库)
1、增:CREATE DATABASE [IF NOT EXISTS] [数据库名称];
如: create database mydb ;
2、删:DROP DATABASE [IF EXISTS] [数据库名称];
如: drop database mydb ;
3、改:ALTER DATABASE [数据库名称] CHARACTER SET utf8 ; (改数据库的字符集)
如:alter database mydb character set utf8 ; (修改数据的字符集为UTF-8)
4、查:SHOW DATABASES ; (注意末尾的S,且SQL语句都以';'结束)
如:show databases ;
5、查看创建的数据库的定义信息:SHOW CREATE DATABASE [数据库名称] ;
如:show create database mydb; (查看前面创建的数据库的定义信息)
6、使用数据库: USE [数据库名称];
如: use mydb ;
7、查询正在使用的数据库:SELECT DATABASE();
如: select database(); (null表示还没有选择使用的数据库)
五、SQL之DDL(操作表)
1、创建表:(一般是在DBMS中对表进行设计,然后自动生成建表语句)
create table 表名 (
字段名称1 数据类型 ,
字段名称2 数据类型 ,
...
字段名称n 数据类型
) ; (注意最后一个字段结束时后面没有‘,’)
MySql数据库中的数据类型
int: 整型;
double: 浮点型,例如double(5,2)表示最多5位,其中必须有2位小数,即最大值为999.99;
char: 固定长度字符串类型;
varchar: 可变长度字符串类型(用的多);
text: 字符串类型;
blob: 字节类型;
date: 日期类型,格式为:yyyy-MM-dd;
time: 时间类型,格式为:hh:mm:ss
timestamp:时间戳类型 格式为: yyyy-MM-dd hh:mm:ss(特点: 如果没有给该字段赋值,那么存储的就是当前的时间)
如:create table student (
sid int(11) ,
name varchar(20) ,
sal double(5,2)
);
2、删除表:drop table 表名称 ;
如:drop table student ;
3、修改表:(一般都是在DBMS使用图形界面工具进行操作,而不是SQL语句)
3.1、添加列:ALTER TABLE [表名] ADD (字段名称 数据类型 ) ;
如: alter table stu add (classname varchar(100)) ;(给stu表添加classname列)
3.2、修改列类型:ALTER TABLE [表名] MODIFY 字段名称 数据类型 ;
如: alter table stu modify name char(10) ;(修改stu表的 name 列类型为char(10) )
3.3、修改列名:ALTER TABLE [表名] CHANGE [原列名] [新列名] 数据类型 ;(一般不这样操作,而是添加一个新列,原列保留,之后使用新列即可)(注:修改列名时也可同时修改数据类型)
如: alter table stu change classname class varchar(100) ;(修改stu表的 classname 列名为class)
3.4、删除列:ALTER TABLE [表名] DROP [列名] ;(同上,一般也不进行删除操作)
如: alter table stu drop class ;(删除stu表的class列)
3.5、修改表名:ALTER TABLE [原表名] RENAME TO [新表名] ;
如: alter table student rename to stu ;(修改student表名称为stu)
4、查询表:show tables; (显示当前库下的所有的表)
如:show tables;
5、查询表:desc 表名; (显示表的结构)
如:desc student ;