SQL语句
一. 主要类型
- DDL:数据定义语言,用来定义数据库对象(库、表、列等);
- DML:数据操作语言,用来定义数据库记录;
- DCL:数据控制语言,用来定义访问权限和安全级别;
- DQL:数据查询语言,用来查询记录
二. DDL(数据定义语言)
1. 数据库操作
主要的数据库操作有查看、创建、删除、切换数据库。
以root的身份登录MySQL,查看用户所有的数据库,命令:
show databases; //分号不可缺少
在没有创建数据库之前,系统会自动创建一些数据库,有4个,分别为information_schema、mysql、performance_schema、sys,需要注意的是,不能对这些系统创建的数据库进行修改或者其他操作,否则可能会造成MySQL使用异常,严重的会造成数据库不能使用。
创建数据库的命令:
create database 数据库名;
删除数据库的命令:
drop database 数据库名;
数据库的切换命令:
use 数据库名;
2. 数据库中表的操作
表操作主要包含表的创建、修改和删除等,其中表的修改又包括增减列、修改列、修改表名等。
查询数据库的所有表的命令:
show tables
表的简单创建语句格式:
create table 表名(
列名1 列类型1,
列名2 列类型2,
..........
列名n 列类型n
);
查看表结构的命令:
desc 表名;
修改表之增减列
1) 命令格式:
alter table 表名
xxxxxxxxxx;
2) 增加列的命令:
alter table 表名
add 新列名 新列类型;
3) 删除列的命令为:
alter table 表名
drop 列名;
修改表之修改列
包括修改列类型和修改列名(同时伴随列类型的修改)
1) 修改列类型的命令为:
alter table 表名
modify 列名 列新类型;
2) 修改列名的命令为:
alter table 表名
change 列名 新列名 新列类型;
修改表名称的命令为:
alter table 表名
rename to 新表名;
删除表的命令为:
drop 表名;
三. DML(数据操作语言)
1. 插入数据
命令格式:
INSERT INTO 表名 VALUES(数据1,数据2....,数据n);//插入数据的顺序与表中字段的顺序是一样的
INSERT INTO 表名(字段1,字段2....,字段n) VALUES(数据1,数据2....,数据n);//插入数据的顺序与表名后面括号的顺序一致即可 可与表中字段顺序不一致
关于INSERT语句有以下说明:
1) AUTO_INCREMENT自增字段,这个我们是不用给出值的,因为系统会自动为该字段来进行自增,但是如果您愿意,也是可以传值的,看您心情。
2) UNIQUE这个我们也说过,就是字段唯一的意思,比如说用户的id设置UNIQUE,已经存在一条用户id为1的数据,如果此时您再想插入一条用户id为1的数据是不会成功的,系统会出错的。
3) 如果数据库字段允许存在NULL值的话,我们在insert插入语句中,也是可以将字段值设为NULL的。
4) 在MySQL4.0.3及更高版本都支持一个DEFAULT关键字,在我们使用 insert 语句的时候,可以使字段的值等于DEFAULT关键字,来使其等于数据库创建的时候的default值。
2.修改数据
格式:
UPDATE 表名 set 想改字段=值 where 条件;
3.删除数据
格式:
DELETE FROM 表名 WHERE 条件;
四. DCL(数据控制语言)
主要内容:主要包括创建用户、给用户授权、对用户撤销授权、查询用户授权和删除用户等。
1. 创建用户
需要使用root用户登录之后进行操作,创建用户的命令为:
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
解释:
username:你将创建的用户名
host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%
password:该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器
例子:
CREATE USER 'dog'@'localhost' IDENTIFIED BY '123456';
CREATE USER 'pig'@'192.168.1.101_' IDENDIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '123456';
CREATE USER 'pig'@'%' IDENTIFIED BY '';
CREATE USER 'pig'@'%';
2. 给用户授权
创建用户之后,可以使用新用户进行登录,查看数据库只有系统自带的数据库,想要操作自己创建的数据库还需要root用户对新用户进行授权,给用户授权的命令为:
GRANT privileges ON databasename.tablename TO 'username'@'host'
解释:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
例子:
GRANT SELECT, INSERT ON test.user TO 'pig'@'%';
GRANT ALL ON *.* TO 'pig'@'%';
GRANT ALL ON maindataplus.* TO 'pig'@'%';
注意:
用以上命令授权的用户不能给其它用户授权,如果想让该用户(一般不用)可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
3. 撤销用户权限
命令格式:
REVOKE privilege ON databasename.tablename FROM 'username'@'host';
解释:
privileges:用户的操作权限,如SELECT,INSERT,UPDATE等,如果要授予所的权限则使用ALL
databasename:数据库名
tablename:表名,如果要授予该用户对所有数据库和表的相应操作权限则可用表示,如.*
4. 删除用户
命令格式:
DROP USER 'username'@'host';
5. 查看用户权限
root用户查看用户权限的命令为:
show grants for 用户名@IP;
五. DQL(数据查询语言)
数据查询在本人看来是数据库的核心,基本语法直接查询W3school中SQL教程即可,地址:http://www.w3school.com.cn/sql/index.asp。