一、SQL 概述
- SQL介绍
SQL是操作关系型数据库的编程语言,定义了一套操作关系型数据库统一标准 - 通用语法
- SQL语句可以单行或多行书写,以分号结尾。
- 可以使用空格/缩进来增强语句的可读性。
- 注释:单行注释:–注释内容或#注释内容(MySQL特有),多行注释: /注释内容/;
二、SQL 分类
- DDL(Data Definition Language):数据定义语言,用来定义数据库对象:库、表、列等;
- DML(Data Manipulation Language):数据操作语言,用来对数据库表中的数据进行增删改;
- DCL(Data Control Language):数据控制语言,用来定义访问权限和安全级别;
- DQL(Data Query Language):数据查询语言,用来查询数据库中表的记录;
- TCL(transaction) 数据事务语言;
三、DDL
操作数据库
- 创建数据库
格式:
create database [ if not exists ] 库名 [character set 字符集];
注意:[...]为可选参数,
示例:
创建一个使用utf-8字符集的mydb1数据库。
create database if not exists mydb1 character set utf8;
- 查看数据库
显示所有数据库
show databases;
查询某个数据库的创建语句
show create database 数据库名称;
- 修改数据库
修改mydb1的字符集为utf8(不能修改数据库名)
alter database mydb1 character set gbk;
- 删除数据库
删除数据库mydb1
drop database mydb1;
操作表
- 创建表
create table 表名(字段 字段类型 [字段约束] [ COMMENT 注释],
字段n 字段n类型 [字段约束][COMMENT字段n注释]);
例如:创建一个员工表:
create table employee(empno int, ename varchar(20), sal int);
- 查看表
查看所有的表:
show tables;
查看指定表的创建语句
show create table employee;
注意,mysql表名称区分大小写
显示指定表的结构:
desc employee;
- 修改表
更改表名:
rename table employee to worker;
增加一个字段:
alter table employee add column height double;
(column关键字在Oracle中,添加则语法错误)
修改一个字段:
alter table employee modify column height float;
修改字段名:
alter table employee change column height height1 float;
删除一个字段:
alter table employee drop column height1;
修改表的字符集:
alter table employee character set gbk;
- 删除表
删除employee表
drop table employee;
四、DML
- 插入数据
创建一个员工表,新建employee表并向表中添加一些记录:
create table employee(
id int,
name varchar(20),
sex int
);
指定添加:insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n);
insert into employee(id,name,sex) values(1,'李四',1);
全部添加:insert into 表名VALUES(值1,值2,...);
insert into employee values(2,'张三',1);
注意:
1. 列名和值要一一对应。
2. 除了数字类型,其他类型需要使用引号(单双都可以)引起来
- 修改数据
update 表名 set 列名1 = 值1, 列名2 = 值2,... [where 条件];
update employee set sex=0 where name='李四';
- 删除数据
删除表中姓名为李四的记录。
delete from employee where name='李四';
【注意from不能省略】
删除表中所有记录。
delete from employee;
使用truncate删除表中记录。
truncate employee;
(无条件 效率高)
delete与truncate区别?
1.truncate不能加where条件,而delete可以加where条件
2.truncate的效率高
3.truncate 删除带自增长的列的表后,如果再插入数据,数据从1开始
4.delete 删除带自增长列的表后,如果再插入数据,数据从上一次的断点处开始
5.truncate删除不能回滚,delete删除可以回滚